syntax = "proto3"; package cloud; option go_package = "./cloud"; // 全都需要登录 service Method{ // 本级目录列表 rpc List(ListRequest) returns (ListResponse){} // 目录树 rpc DirTree(DirTreeRequest) returns (DirTreeResponse){} // 本级及子级递归列表 rpc Download(DownloadRequest) returns (ListResponse){} // 创建文件/文件夹 rpc Make(MakeRequest) returns (MakeResponse){} // 修改文件/文件夹名称 rpc Rename(RenameRequest) returns (Empty){} // 移除文件/文件夹及其子级递归列表 rpc Remove(RemoveRequest) returns (Empty){} // 移动文件/文件夹及其子级递归列表 rpc Move(MoveRequest) returns (Empty){} // 复制文件/文件夹及其子级递归列表 rpc Copy(CopyRequest) returns (Empty){} // 分享文件/文件夹及其子级递归列表 rpc Share(ShareRequest) returns (ShareResponse){} // 解析分享内容 rpc ParseShare(ParseShareRequest) returns (ParseShareResponse){} } message Empty{} // authorization_identity 用户识别identity 由上下文传递 // user_identity 用于鉴权 message ListRequest { string identity = 1; // 文件夹唯一标识,获取顶级的不传 string name =2; //根据文件名称模糊查找,当该字段不为空时identity的限定失效 } message ListResponse { repeated UserFile list = 1; } message DirTreeRequest { string identity = 1; // 文件夹唯一标识,获取顶级的不传 } message DirTreeResponse { repeated UserFile list = 1; // 只返回文件夹 } message DownloadRequest { repeated string list = 1; // identity列表,必传 } message UserFile { string identity =1; //唯一标识 string name =2;//文件/文件夹名称 string ext = 3;//后缀,文件夹时为空 repeated string parent = 4; // 父级文件夹序列,按文件名称查询时候生效 File file = 5;//文件信息 string created_at = 7; string updated_at = 8; repeated UserFile children = 9;//子文件夹 } message File{ string identity =1; //唯一标识 string path = 2;//文件路径 int64 size = 3; // 文件大小,单位:B } message MakeRequest { string name =1;//文件/文件夹名称,必传 string ext = 2;//后缀,文件夹传空即可 string parent_identity = 3;// 父文件夹标识,选填 int64 size = 4; // 文件大小,非文件夹时必传,单位:B string hash = 5; // 文件hash值,非文件夹时必传 string path = 6;// 文件地址,非文件夹时必传 } message MakeResponse { string identity = 1; } // 同级下,名称必须唯一 message RenameRequest { string identity = 1;//必传 string name =2;//文件/文件夹名称,必传 string ext = 3;//后缀,文件夹传空即可 } message RemoveRequest { repeated string list = 1; // identity列表 } message MoveRequest { repeated string list = 1; // identity列表 string target_identity = 2; // 目标文件夹标识,如果是顶级则不填 } message CopyRequest { repeated string list = 1; // identity列表 string target_identity = 3; // 目标文件夹标识,如果是顶级则不填 } message ShareRequest { repeated string list = 1; // identity列表 int64 days = 2;// 有效天数,默认永久 } message ShareResponse { string key = 1; // 解析分享内容关键key } message ParseShareRequest { string key = 1; // 解析分享内容关键key } message ParseShareResponse { repeated UserFile list = 1; }