141 lines
2.8 KiB
Protocol Buffer
141 lines
2.8 KiB
Protocol Buffer
syntax = "proto3";
|
|
package ezshare;
|
|
|
|
import "google/protobuf/timestamp.proto";
|
|
|
|
option go_package = "gitea.benny.dog/torjus/ezshare/pb";
|
|
|
|
/////////////////////
|
|
// Common messages //
|
|
/////////////////////
|
|
message Empty {}
|
|
|
|
////////////////////////
|
|
// FILE RELATED STUFF //
|
|
////////////////////////
|
|
message File {
|
|
string file_id = 1;
|
|
bytes data = 2;
|
|
|
|
message Metadata {
|
|
google.protobuf.Timestamp uploaded_on = 1;
|
|
google.protobuf.Timestamp expires_on = 2;
|
|
string original_filename = 3;
|
|
};
|
|
|
|
Metadata metadata = 3;
|
|
};
|
|
|
|
|
|
// Service messages
|
|
// Upload
|
|
message UploadFileRequest {
|
|
bytes data = 1;
|
|
string original_filename = 2;
|
|
google.protobuf.Timestamp expires_on = 3;
|
|
}
|
|
message UploadFileResponse {
|
|
string id = 1;
|
|
string file_url = 2;
|
|
}
|
|
|
|
// Get
|
|
message GetFileRequest {
|
|
string id = 1;
|
|
}
|
|
message GetFileResponse {
|
|
File file = 1;
|
|
}
|
|
|
|
// Delete
|
|
message DeleteFileRequest {
|
|
string id = 1;
|
|
}
|
|
message DeleteFileResponse {
|
|
}
|
|
|
|
// List
|
|
message ListFilesRequest {}
|
|
message ListFilesResponse {
|
|
message ListFileInfo {
|
|
string file_id = 1;
|
|
File.Metadata metadata = 2;
|
|
}
|
|
repeated ListFileInfo files = 1;
|
|
}
|
|
|
|
service FileService {
|
|
rpc UploadFile(UploadFileRequest) returns (UploadFileResponse) {}
|
|
rpc GetFile(GetFileRequest) returns (GetFileResponse) {}
|
|
rpc DeleteFile(DeleteFileRequest) returns (DeleteFileResponse) {}
|
|
rpc ListFiles(ListFilesRequest) returns (ListFilesResponse) {}
|
|
}
|
|
|
|
////////////////////////
|
|
// USER RELATED STUFF //
|
|
////////////////////////
|
|
message User {
|
|
string id = 1;
|
|
string username = 2;
|
|
bytes hashed_password = 3;
|
|
enum Role {
|
|
UNKNOWN = 0;
|
|
VIEWONLY = 1;
|
|
USER = 2;
|
|
ADMIN = 3;
|
|
UNAPPROVED = 4;
|
|
}
|
|
Role user_role = 4;
|
|
bool active = 5;
|
|
}
|
|
|
|
// Register
|
|
message RegisterUserRequest {
|
|
string username = 1;
|
|
string password = 2;
|
|
}
|
|
message RegisterUserResponse {
|
|
string id = 1;
|
|
string token = 2;
|
|
}
|
|
|
|
// Login
|
|
message LoginUserRequest {
|
|
message UserPasswordLogin {
|
|
string username = 1;
|
|
string password = 2;
|
|
}
|
|
message TokenLogin {
|
|
string token = 1;
|
|
}
|
|
|
|
oneof requested_login {
|
|
TokenLogin with_token = 1;
|
|
UserPasswordLogin with_password = 2;
|
|
}
|
|
}
|
|
message LoginUserResponse {
|
|
bytes server_cert = 1;
|
|
bytes client_cert = 2;
|
|
bytes client_key = 3;
|
|
}
|
|
|
|
// List
|
|
message ListUsersRequest {
|
|
}
|
|
message ListUsersResponse {
|
|
repeated User users = 1;
|
|
}
|
|
|
|
// Approve
|
|
message ApproveUserRequest {
|
|
string user_id = 1;
|
|
}
|
|
|
|
service UserService {
|
|
rpc Register(RegisterUserRequest) returns (RegisterUserResponse) {}
|
|
rpc Login(LoginUserRequest) returns (LoginUserResponse) {}
|
|
rpc List(ListUsersRequest) returns (ListUsersResponse) {}
|
|
rpc Approve(ApproveUserRequest) returns (Empty) {}
|
|
}
|