syntax = "proto3";

package bilibili.app.resource.v1;

option java_multiple_files = true;

//
service Module {
  //
  rpc List(ListReq) returns (ListReply);
}

//
enum CompressType {
  Unzip = 0; // unzip
  Original = 1; // 不操作
}

//
enum EnvType {
  Unknown = 0; //
  Release = 1; //
  Test = 2; //
}

//
enum IncrementType {
  Total = 0; // 全量包
  Incremental = 1; // 增量包
}

//
enum LevelType {
  Undefined = 0; //
  High = 1; // 高 需立即下载
  Middle = 2; // 中 可以延迟下载
  Low = 3; // 低 仅在业务方使用到时由业务方手动进行下载
}

message ListReply {
  //
  string env = 1;
  //
  repeated PoolReply pools = 2;
  //
  int64 list_version = 3;
}

//
message ListReq {
  //
  string pool_name = 1;
  //
  string module_name = 2;
  //
  repeated VersionListReq version_list = 3;
  //
  EnvType env = 4;
  //
  int32 sys_ver = 5;
  //
  int32 scale = 6;
  //
  int32 arch = 7;
  //
  int64 list_version = 8;
}

//
message ModuleReply {
  //
  string name = 1;
  //
  int64 version = 2;
  //
  string url = 3;
  //
  string md5 = 4;
  //
  string total_md5 = 5;
  //
  IncrementType increment = 6;
  //
  bool is_wifi = 7;
  //
  LevelType level = 8;
  //
  string filename = 9;
  //
  string file_type = 10;
  //
  int64 file_size = 11;
  //
  CompressType compress = 12;
  //
  int64 publish_time = 13;
  // 上报使用
  int64 pool_id = 14;
  //
  int64 module_id = 15;
  //
  int64 version_id = 16;
  //
  int64 file_id = 17;
  //
  bool zip_check = 18;
}

message PoolReply {
  //
  string name = 1;
  //
  repeated ModuleReply modules = 2;
}

//
message VersionListReq {
  //
  string pool_name = 1;
  //
  repeated VersionReq versions = 2;
}

//
message VersionReq {
  //
  string module_name = 1;
  //
  int64 version = 2;
}
