syntax = "proto3"; package modproxy; option go_package = "code.hackerspace.pl/hscloud/games/factorio/modproxy/proto"; service ModProxy { rpc Mirror(MirrorRequest) returns (MirrorResponse); rpc Download(DownloadRequest) returns (stream DownloadResponse); } message MirrorRequest { // Authentication details to access the mod portal. string username = 1; string token = 2; } message MirrorResponse { repeated string mods_okay = 1; map mods_errors = 2; } message DownloadRequest { string mod_name = 1; string file_sha1 = 2; } message DownloadResponse { enum Status { STATUS_INVALID = 0; STATUS_OKAY = 1; STATUS_NOT_AVAILABLE = 2; }; Status status = 1; bytes chunk = 2; } // Configuration for client (in text proto, so singular names in repeated fields) message ClientConfig { message Mod { string name = 1; string version = 2; } repeated Mod mod = 1; }