11 Commits

Author SHA1 Message Date
8ed31deb14 forgot map_id 2024-07-18 15:11:29 -07:00
ea4d48625d \#[serde(rename_all_fields)] can only be used on enums 2024-07-17 16:25:34 -07:00
41f9382b83 you stupid 2024-07-17 16:23:25 -07:00
5a26c80b2b syntax 2024-07-17 16:21:24 -07:00
dbec402e18 four spaces
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-16 13:24:05 -07:00
423ef695ef tab
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-16 13:22:50 -07:00
77270886fa g
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-16 13:21:54 -07:00
ead9b4f688 tab
Some checks failed
continuous-integration/drone/push Build is failing
2024-07-16 13:20:56 -07:00
5dfbc67886 we out here doing codegen
Some checks failed
continuous-integration/drone/push Build is failing
2024-07-16 13:20:23 -07:00
067aed97f4 try again
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-16 13:01:05 -07:00
871d9c3cd5 need serde rename fields or else everything is wrong
All checks were successful
continuous-integration/drone/push Build is passing
2024-07-16 12:58:07 -07:00
11 changed files with 18 additions and 500 deletions

View File

@@ -1,45 +0,0 @@
syntax = "proto3";
option go_package = "git.itzana.me/strafesnet/go-grpc/auth";
package auth;
import "google/protobuf/empty.proto";
service AuthService {
rpc GetSessionUser(IdMessage) returns (SessionUserResponse);
rpc GetGroupRole(IdMessage) returns (RoleReponse);
rpc ValidateSession(IdMessage) returns (ValidateResponse);
rpc GetAuthMetadata(google.protobuf.Empty) returns (AuthMetadataResponse);
}
message IdMessage {
string SessionID = 1;
}
message SessionUserResponse {
uint64 UserID = 1;
string Username = 2;
string AvatarURL = 3;
}
message RoleReponse {
repeated RoleItem Roles = 1;
}
message RoleItem {
string ID = 1;
string DisplayName = 2;
int32 Rank = 3;
}
message ValidateResponse {
bool Valid = 1;
}
message AuthMetadataResponse {
string LoginURL = 1;
string LogoutURL = 2;
string AccountURL = 3;
}

View File

@@ -1,36 +0,0 @@
syntax = "proto3";
option go_package = "git.itzana.me/strafesnet/go-grpc/dev";
package dev;
service DevService {
rpc Validate(APIValidationRequest) returns (APIValidationResponse);
}
message APIValidationRequest {
string Service = 1;
string Permission = 2;
string Key = 3;
string IP = 4;
string Resource = 5;
}
message APIValidationResponse {
// Response
bool Valid = 1;
string ErrorMessage = 2;
int32 StatusCode = 3;
// Remaining limits
uint64 RemainingBurst = 4;
uint64 RemainingDaily = 5;
uint64 RemainingMonthly = 6;
// Quota
uint64 BurstLimit = 7;
uint64 BurstDurationSeconds = 8;
uint64 DailyLimit = 9;
uint64 MonthlyLimit = 10;
// Owner info
uint64 UserID = 11;
string Application = 12;
}

View File

@@ -38,6 +38,7 @@ message MapRequest {
}
message MapFilter {
int64 ID = 1;
optional string DisplayName = 2;
optional string Creator = 3;
optional int32 GameID = 4;

View File

@@ -1,82 +0,0 @@
syntax = "proto3";
option go_package = "git.itzana.me/strafesnet/go-grpc/maps_extended";
package maps_extended;
service MapsService {
rpc Get(MapId) returns (MapResponse);
rpc GetList(MapIdList) returns (MapList);
rpc Update(MapUpdate) returns (NullResponse);
rpc Create(MapCreate) returns (MapId);
rpc Delete(MapId) returns (NullResponse);
rpc List(ListRequest) returns (MapList);
rpc IncrementLoadCount(MapId) returns (NullResponse);
}
message MapIdList { repeated int64 ID = 1; }
message MapId { int64 ID = 1; }
message MapResponse {
int64 ID = 1;
string DisplayName = 2;
string Creator = 3;
uint32 GameID = 4;
int64 Date = 5;
int64 CreatedAt = 6;
int64 UpdatedAt = 7;
uint64 Submitter = 8;
uint64 Thumbnail = 9;
uint64 AssetVersion = 10;
uint32 LoadCount = 11;
uint32 Modes = 12;
}
message MapCreate {
int64 ID = 1;
string DisplayName = 2;
string Creator = 3;
uint32 GameID = 4;
int64 Date = 5;
// int64 CreatedAt = 6;
// int64 UpdatedAt = 7;
uint64 Submitter = 6;
uint64 Thumbnail = 7;
uint64 AssetVersion = 8;
// uint32 LoadCount = 11;
uint32 Modes = 9;
}
message MapUpdate {
int64 ID = 1;
optional string DisplayName = 2;
optional string Creator = 3;
optional uint32 GameID = 4;
optional int64 Date = 5;
optional uint64 Submitter = 6;
optional uint64 Thumbnail = 7;
optional uint64 AssetVersion = 8;
optional uint32 Modes = 9;
}
message MapFilter {
optional string DisplayName = 2;
optional string Creator = 3;
optional uint32 GameID = 4;
optional uint64 Submitter = 5;
}
message MapList { repeated MapResponse Maps = 1; }
message ListRequest {
MapFilter Filter = 1;
Pagination Page = 2;
}
message Pagination {
uint32 Size = 1;
uint32 Number = 2;
}
message NullResponse {}

View File

@@ -1,31 +0,0 @@
syntax = "proto3";
option go_package = "git.itzana.me/strafesnet/go-grpc/moderation";
package moderation;
import "google/protobuf/struct.proto";
service ModerationService {
rpc SetState(SetStateRequest) returns (Null);
rpc SetMuted(SetMuteRequest) returns (Null);
}
message Null {}
message SetStateRequest {
int64 UserID = 1;
int64 ModeratorID = 2;
int32 ReasonID = 3;
int32 StateID = 4;
}
message SetMuteRequest {
int64 UserID = 1;
int64 ModeratorID = 2;
bool Muted = 3;
optional int64 Duration = 4;
optional int32 ReasonID = 5;
optional string ReasonText = 6;
optional google.protobuf.Struct Metadata = 7;
}

View File

@@ -1,29 +1,24 @@
#!/bin/bash
rm ./rust-grpc/src/lib.rs
for f in *.proto
do
name=$(basename $f .proto)
module=./rust-grpc/src/$name
mkdir -p $module
mkdir -p ./rust-grpc/$name
protoc \
--prost_out=$module \
--tonic_out=$module \
--prost_out=./rust-grpc/$name \
--tonic_out=./rust-grpc/$name \
$f
#I couldn't figure out how to configure protoc to do this
sed -i "s/, PartialEq, ::prost::Message)\]/, PartialEq, ::prost::Message, serde::Serialize, serde::Deserialize)\]\n#\[serde(rename_all = \"PascalCase\")\]/g" "$module/$name.rs"
sed -i "s/ pub id:/ #\[serde(rename = \"ID\")\]\n pub id:/g" "$module/$name.rs"
sed -i "s/ pub map_id:/ #\[serde(rename = \"MapID\")\]\n pub map_id:/g" "$module/$name.rs"
sed -i "s/ pub time_id:/ #\[serde(rename = \"TimeID\")\]\n pub time_id:/g" "$module/$name.rs"
sed -i "s/ pub file_id:/ #\[serde(rename = \"FileID\")\]\n pub file_id:/g" "$module/$name.rs"
sed -i "s/ pub game_id:/ #\[serde(rename = \"GameID\")\]\n pub game_id:/g" "$module/$name.rs"
sed -i "s/ pub user_id:/ #\[serde(rename = \"UserID\")\]\n pub user_id:/g" "$module/$name.rs"
sed -i "s/ pub mode_id:/ #\[serde(rename = \"ModeID\")\]\n pub mode_id:/g" "$module/$name.rs"
sed -i "s/ pub style_id:/ #\[serde(rename = \"StyleID\")\]\n pub style_id:/g" "$module/$name.rs"
sed -i "s/ pub state_id:/ #\[serde(rename = \"StateID\")\]\n pub state_id:/g" "$module/$name.rs"
sed -i "s/ pub place_id:/ #\[serde(rename = \"PlaceID\")\]\n pub place_id:/g" "$module/$name.rs"
sed -i "s/ pub vip_server_id:/ #\[serde(rename = \"VipServerID\")\]\n pub vip_server_id:/g" "$module/$name.rs"
mv "$module/$name.rs" "$module/mod.rs"
echo "pub mod $name;" >> ./rust-grpc/src/lib.rs
sed -i "s/#\[derive(Clone, PartialEq, ::prost::Message)\]/#\[derive(Clone, PartialEq, ::prost::Message, serde::Serialize, serde::Deserialize)\]\n#\[serde(rename_all = \"PascalCase\")\]/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub id:/ #\[serde(rename = \"ID\")\]\n pub id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub map_id:/ #\[serde(rename = \"MapID\")\]\n pub map_id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub time_id:/ #\[serde(rename = \"TimeID\")\]\n pub time_id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub file_id:/ #\[serde(rename = \"FileID\")\]\n pub file_id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub game_id:/ #\[serde(rename = \"GameID\")\]\n pub game_id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub user_id:/ #\[serde(rename = \"UserID\")\]\n pub user_id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub mode_id:/ #\[serde(rename = \"ModeID\")\]\n pub mode_id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub style_id:/ #\[serde(rename = \"StyleID\")\]\n pub style_id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub state_id:/ #\[serde(rename = \"StateID\")\]\n pub state_id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub place_id:/ #\[serde(rename = \"PlaceID\")\]\n pub place_id:/g" "./rust-grpc/$name/$name.rs"
sed -i "s/ pub vip_server_id:/ #\[serde(rename = \"VipServerID\")\]\n pub vip_server_id:/g" "./rust-grpc/$name/$name.rs"
done

View File

@@ -1,67 +0,0 @@
syntax = "proto3";
option go_package = "git.itzana.me/strafesnet/go-grpc/sessions";
package sessions;
service SessionsService {
rpc Create(SessionCreate) returns (SessionId);
rpc List(ListRequest) returns (SessionList);
rpc Aggregate(SessionFilter) returns (SessionAggregate);
}
message SessionIdList { repeated int64 ID = 1; }
message SessionId { int64 ID = 1; }
message SessionResponse {
int64 ID = 1;
uint64 UserID = 2;
uint64 MapID = 3;
int64 Date = 4;
uint32 Duration = 5;
uint32 Attempts = 6;
uint32 GameID = 7;
uint32 StyleID = 8;
}
message SessionCreate {
uint64 UserID = 1;
uint64 MapID = 2;
int64 Date = 3;
uint32 Duration = 4;
uint32 Attempts = 5;
uint32 GameID = 6;
uint32 StyleID = 7;
}
enum SessionSort {
SessionSortDateDescending = 0;
}
message SessionFilter {
optional uint64 UserID = 1;
optional uint64 MapID = 2;
optional uint32 GameID = 3;
optional uint32 StyleID = 4;
}
message SessionList { repeated SessionResponse Sessions = 1; }
message ListRequest {
SessionFilter Filter = 1;
Pagination Page = 2;
Sort SessionSort = 3;
}
message Pagination {
uint32 Size = 1;
uint32 Number = 2;
}
message SessionAggregate {
uint64 Duration = 1;
uint64 Attempts = 2;
}
message NullResponse {}

View File

@@ -14,9 +14,7 @@ service TimesService {
rpc Delete(IdMessage) returns (NullResponse);
rpc Get(IdMessage) returns (TimeResponse);
rpc List(ListRequest) returns (TimeList);
rpc ListWr(WrListRequest) returns (TimeList);
rpc Rank(IdMessage) returns (RankResponse);
rpc RankBatch(IdListMessage) returns (RankListResponse);
}
message TimeRequest {
@@ -28,7 +26,6 @@ message TimeRequest {
optional int32 StyleID = 6;
optional int32 ModeID = 7;
optional int32 GameID = 8;
optional uint32 Attempt = 9;
}
message TimeFilter {
@@ -52,31 +49,19 @@ message TimeResponse {
int32 StyleID = 7;
int32 ModeID = 8;
int32 GameID = 9;
// How many times did the player leave the start zone
// during their full play history of the map
uint32 Attempt = 10;
}
message IdMessage {
int64 ID = 1;
}
message IdListMessage {
repeated int64 ID = 1;
}
message TimeList {
repeated TimeResponse Times = 1;
int64 Total = 2;
}
message RankListResponse {
repeated RankResponse Ranks = 1;
}
message RankResponse {
int64 Rank = 1;
int64 ID = 2;
}
message ListRequest {
@@ -92,11 +77,6 @@ message ListRequest {
uint32 Sort = 4;
}
message WrListRequest {
TimeFilter Filter = 1;
Pagination Page = 2;
}
message Pagination {
int32 Size = 1;
int32 Number = 2;
@@ -104,4 +84,4 @@ message Pagination {
message NullResponse {
}
}

View File

@@ -27,7 +27,7 @@ message TransactionCreate {
message TransactionUpdate {
string ID = 1;
optional int64 Value = 2;
optional int32 StateID = 3;
optional int64 StateID = 3;
optional google.protobuf.Struct Data = 4;
}

View File

@@ -25,14 +25,12 @@ message UserResponse {
int64 ID = 1;
string Username = 2;
int32 StateID = 3;
bool Muted = 4;
}
message UserRequest {
int64 ID = 1;
optional string Username = 2;
optional int32 StateID = 3;
optional bool Muted = 4;
}
message UserFilter {

View File

@@ -1,195 +0,0 @@
syntax = "proto3";
option go_package = "git.itzana.me/strafesnet/go-grpc/validator";
package validator;
service ValidatorMapfixService {
rpc Create(MapfixCreate) returns (MapfixID);
rpc CreateAuditError(AuditErrorRequest) returns (NullResponse);
rpc CreateAuditChecklist(AuditChecklistRequest) returns (NullResponse);
rpc SetValidatedModel(ValidatedModelRequest) returns (NullResponse);
rpc SetStatusSubmitted(SubmittedRequest) returns (NullResponse);
rpc SetStatusRequestChanges(MapfixID) returns (NullResponse);
rpc SetStatusValidated(MapfixID) returns (NullResponse);
rpc SetStatusFailed(MapfixID) returns (NullResponse);
rpc SetStatusUploaded(MapfixID) returns (NullResponse);
}
service ValidatorSubmissionService {
rpc Create(SubmissionCreate) returns (SubmissionID);
rpc CreateAuditError(AuditErrorRequest) returns (NullResponse);
rpc CreateAuditChecklist(AuditChecklistRequest) returns (NullResponse);
rpc SetValidatedModel(ValidatedModelRequest) returns (NullResponse);
rpc SetStatusSubmitted(SubmittedRequest) returns (NullResponse);
rpc SetStatusRequestChanges(SubmissionID) returns (NullResponse);
rpc SetStatusValidated(SubmissionID) returns (NullResponse);
rpc SetStatusFailed(SubmissionID) returns (NullResponse);
rpc SetStatusUploaded(StatusUploadedRequest) returns (NullResponse);
}
message MapfixID { uint64 ID = 1; }
message MapfixCreate {
uint32 OperationID = 1;
uint32 GameID = 2;
uint64 AssetOwner = 3;
uint64 AssetID = 4;
uint64 AssetVersion = 5;
uint64 TargetAssetID = 6;
string DisplayName = 7;
string Creator = 8;
string Description = 9;
}
message SubmissionID { uint64 ID = 1; }
message SubmissionCreate {
uint32 OperationID = 1;
uint32 GameID = 2;
uint32 Status = 3;
uint32 Roles = 4;
uint64 AssetOwner = 5;
uint64 AssetID = 6;
uint64 AssetVersion = 7;
string DisplayName = 8;
string Creator = 9;
}
message AuditErrorRequest {
uint64 ID = 1;
string ErrorMessage = 2;
}
message Check {
string Name = 1;
string Summary = 2;
bool Passed = 3;
}
message AuditChecklistRequest {
uint64 ID = 1;
repeated Check CheckList = 2;
}
message ValidatedModelRequest {
uint64 ID = 1;
uint64 ValidatedModelID = 2;
uint64 ValidatedModelVersion = 3;
}
message SubmittedRequest {
uint64 ID = 1;
uint64 ModelVersion = 2;
string DisplayName = 3;
string Creator = 4;
uint32 GameID = 5;
}
message StatusUploadedRequest {
uint64 ID = 1;
uint64 UploadedAssetID = 2;
}
message NullResponse {}
// Operations
service ValidatorOperationService {
rpc Fail(OperationFailRequest) returns (NullResponse);
}
message OperationFailRequest {
uint32 OperationID = 1;
string StatusMessage = 2;
}
message Pagination {
uint32 Size = 1;
uint32 Number = 2;
}
// Scripts
service ValidatorScriptService {
rpc Create(ScriptCreate) returns (ScriptID);
rpc Get(ScriptID) returns (Script);
rpc List(ScriptListRequest) returns (ScriptListResponse);
}
enum ResourceType {
ResourceTypeNone = 0;
ResourceTypeMapfix = 1;
ResourceTypeSubmission = 2;
}
message ScriptCreate {
string Name = 1;
string Source = 2;
ResourceType ResourceType = 3;
optional uint64 ResourceID = 4;
}
message ScriptFilter {
optional string Name = 1;
optional string Source = 2;
optional ResourceType ResourceType = 3;
optional uint64 ResourceID = 4;
optional uint64 Hash = 5;
}
message ScriptListRequest {
ScriptFilter Filter = 1;
Pagination Page = 2;
}
message ScriptID { uint64 ID = 1; }
message Script {
uint64 ID = 1;
uint64 Hash = 2;
string Name = 3;
string Source = 4;
ResourceType ResourceType = 5;
optional uint64 ResourceID = 6;
}
message ScriptListResponse { repeated Script Scripts = 1; }
// ScriptPolicies
service ValidatorScriptPolicyService {
rpc Create(ScriptPolicyCreate) returns (ScriptPolicyID);
rpc List(ScriptPolicyListRequest) returns (ScriptPolicyListResponse);
}
enum Policy {
PolicyNone = 0;
PolicyAllowed = 1;
PolicyBlocked = 2;
PolicyDelete = 3;
PolicyReplace = 4;
}
message ScriptPolicyCreate {
uint64 FromScriptID = 1;
uint64 ToScriptID = 2;
Policy Policy = 3;
}
message ScriptPolicyFilter {
optional uint64 FromScriptHash = 1;
optional uint64 ToScriptID = 2;
optional Policy Policy = 3;
}
message ScriptPolicyListRequest {
ScriptPolicyFilter Filter = 1;
Pagination Page = 2;
}
message ScriptPolicyID { uint64 ID = 1; }
message ScriptPolicy {
uint64 ID = 1;
uint64 FromScriptHash = 2;
uint64 ToScriptID = 3;
Policy Policy = 4;
}
message ScriptPolicyListResponse { repeated ScriptPolicy ScriptPolicies = 1; }