Replace GraphQL server with Connect RPC

This commit is contained in:
David Stotijn
2025-02-05 21:54:59 +01:00
parent 52c83a1989
commit 6889c9c183
53 changed files with 5875 additions and 11685 deletions

47
proto/http/http.proto Normal file
View File

@ -0,0 +1,47 @@
syntax = "proto3";
package hetty.http.v1;
option go_package = "github.com/dstotijn/hetty/pkg/http";
enum Method {
METHOD_UNSPECIFIED = 0;
METHOD_GET = 1;
METHOD_HEAD = 2;
METHOD_POST = 3;
METHOD_PUT = 4;
METHOD_DELETE = 5;
METHOD_CONNECT = 6;
METHOD_OPTIONS = 7;
METHOD_TRACE = 8;
METHOD_PATCH = 9;
}
enum Protocol {
PROTOCOL_UNSPECIFIED = 0;
PROTOCOL_HTTP10 = 1;
PROTOCOL_HTTP11 = 2;
PROTOCOL_HTTP20 = 3;
}
message Request {
Method method = 1;
Protocol protocol = 2;
string url = 3;
repeated Header headers = 4;
bytes body = 5;
Response response = 6;
}
message Response {
Protocol protocol = 1;
string status = 2;
int32 status_code = 3;
repeated Header headers = 5;
bytes body = 6;
}
message Header {
string key = 1;
string value = 2;
}

104
proto/proj/proj.proto Normal file
View File

@ -0,0 +1,104 @@
syntax = "proto3";
package hetty.proj.v1;
import "reqlog/reqlog.proto";
import "scope/scope.proto";
option go_package = "github.com/dstotijn/hetty/pkg/proj";
message Project {
string id = 1;
string name = 2;
bool is_active = 3;
// Request log settings
bool req_log_bypass_out_of_scope = 4;
// Request logs filter
hetty.reqlog.v1.RequestLogsFilter req_log_filter = 5;
// Intercept settings
bool intercept_requests = 6;
bool intercept_responses = 7;
string intercept_request_filter_expr = 8;
string intercept_response_filter_expr = 9;
// Sender settings
bool sender_only_find_in_scope = 10;
string sender_search_expr = 11;
// Scope settings
repeated hetty.scope.v1.ScopeRule scope_rules = 12;
}
message CreateProjectRequest {
string name = 1;
}
message CreateProjectResponse {
Project project = 1;
}
message OpenProjectRequest {
string project_id = 1;
}
message OpenProjectResponse {
Project project = 1;
}
message CloseProjectRequest {}
message CloseProjectResponse {}
message DeleteProjectRequest {
string project_id = 1;
}
message DeleteProjectResponse {}
message GetActiveProjectRequest {}
message GetActiveProjectResponse {
Project project = 1;
}
message ListProjectsRequest {}
message ListProjectsResponse {
repeated Project projects = 1;
}
message UpdateInterceptSettingsRequest {
bool requests_enabled = 1;
bool responses_enabled = 2;
string request_filter_expr = 3;
string response_filter_expr = 4;
}
message UpdateInterceptSettingsResponse {}
message SetScopeRulesRequest {
repeated hetty.scope.v1.ScopeRule rules = 1;
}
message SetScopeRulesResponse {}
message SetRequestLogsFilterRequest {
hetty.reqlog.v1.RequestLogsFilter filter = 1;
}
message SetRequestLogsFilterResponse {}
service ProjectService {
rpc CreateProject(CreateProjectRequest) returns (CreateProjectResponse) {}
rpc OpenProject(OpenProjectRequest) returns (OpenProjectResponse) {}
rpc CloseProject(CloseProjectRequest) returns (CloseProjectResponse) {}
rpc DeleteProject(DeleteProjectRequest) returns (DeleteProjectResponse) {}
rpc GetActiveProject(GetActiveProjectRequest) returns (GetActiveProjectResponse) {}
rpc ListProjects(ListProjectsRequest) returns (ListProjectsResponse) {}
rpc UpdateInterceptSettings(UpdateInterceptSettingsRequest) returns (UpdateInterceptSettingsResponse) {}
rpc SetScopeRules(SetScopeRulesRequest) returns (SetScopeRulesResponse) {}
rpc SetRequestLogsFilter(SetRequestLogsFilterRequest) returns (SetRequestLogsFilterResponse) {}
}

44
proto/reqlog/reqlog.proto Normal file
View File

@ -0,0 +1,44 @@
syntax = "proto3";
package hetty.reqlog.v1;
import "http/http.proto";
option go_package = "github.com/dstotijn/hetty/pkg/reqlog";
message HttpRequestLog {
string id = 1;
string project_id = 2;
string remote_ip = 3;
hetty.http.v1.Request request = 4;
hetty.http.v1.Response response = 5;
}
message GetHttpRequestLogRequest {
string id = 1;
}
message GetHttpRequestLogResponse {
HttpRequestLog http_request_log = 1;
}
message ListHttpRequestLogsRequest {}
message ListHttpRequestLogsResponse {
repeated HttpRequestLog http_request_logs = 1;
}
message RequestLogsFilter {
bool only_in_scope = 1;
string search_expr = 2;
}
message ClearHttpRequestLogsRequest {}
message ClearHttpRequestLogsResponse {}
service HttpRequestLogService {
rpc GetHttpRequestLog(GetHttpRequestLogRequest) returns (GetHttpRequestLogResponse) {}
rpc ListHttpRequestLogs(ListHttpRequestLogsRequest) returns (ListHttpRequestLogsResponse) {}
rpc ClearHttpRequestLogs(ClearHttpRequestLogsRequest) returns (ClearHttpRequestLogsResponse) {}
}

12
proto/scope/scope.proto Normal file
View File

@ -0,0 +1,12 @@
syntax = "proto3";
package hetty.scope.v1;
option go_package = "github.com/dstotijn/hetty/pkg/scope";
message ScopeRule {
string url_regexp = 1;
string header_key_regexp = 2;
string header_value_regexp = 3;
string body_regexp = 4;
}

85
proto/sender/sender.proto Normal file
View File

@ -0,0 +1,85 @@
syntax = "proto3";
package sender;
import "http/http.proto";
option go_package = "github.com/dstotijn/hetty/proto/sender";
message Request {
string id = 1;
string project_id = 2;
string source_request_log_id = 3;
hetty.http.v1.Request http_request = 4;
hetty.http.v1.Response http_response = 10;
}
message RequestsFilter {
bool only_in_scope = 1;
string search_expr = 2;
}
message GetRequestByIDRequest {
string request_id = 1;
}
message GetRequestByIDResponse {
Request request = 1;
}
message ListRequestsRequest {}
message ListRequestsResponse {
repeated Request requests = 1;
}
message CloneFromRequestLogRequest {
string request_log_id = 1;
}
message CloneFromRequestLogResponse {
Request request = 1;
}
message SendRequestRequest {
string request_id = 1;
}
message SendRequestResponse {
Request request = 1;
}
message DeleteRequestsRequest {}
message DeleteRequestsResponse {}
message CreateOrUpdateRequestRequest {
Request request = 1;
}
message CreateOrUpdateRequestResponse {
Request request = 1;
}
message SetRequestsFilterRequest {
RequestsFilter filter = 1;
}
message SetRequestsFilterResponse {}
message GetRequestsFilterRequest {}
message GetRequestsFilterResponse {
RequestsFilter filter = 1;
}
service SenderService {
rpc GetRequestByID(GetRequestByIDRequest) returns (GetRequestByIDResponse) {}
rpc ListRequests(ListRequestsRequest) returns (ListRequestsResponse) {}
rpc SetRequestsFilter(SetRequestsFilterRequest) returns (SetRequestsFilterResponse) {}
rpc GetRequestsFilter(GetRequestsFilterRequest) returns (GetRequestsFilterResponse) {}
rpc CreateOrUpdateRequest(CreateOrUpdateRequestRequest) returns (CreateOrUpdateRequestResponse) {}
rpc CloneFromRequestLog(CloneFromRequestLogRequest) returns (CloneFromRequestLogResponse) {}
rpc SendRequest(SendRequestRequest) returns (SendRequestResponse) {}
rpc DeleteRequests(DeleteRequestsRequest) returns (DeleteRequestsResponse) {}
}