From a45fbb370cfac2bbc48b1a7c1e956087656d37eb Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Thu, 17 Jul 2025 20:51:03 -0700 Subject: [PATCH 1/9] submissions: rename services --- pkg/cmds/serve.go | 4 ++-- .../controller.go} | 10 +++++----- .../mapfixes.go | 20 +++++++++---------- .../operations.go | 4 ++-- .../script_policy.go | 6 +++--- .../scripts.go | 8 ++++---- .../submissions.go | 20 +++++++++---------- 7 files changed, 36 insertions(+), 36 deletions(-) rename pkg/{service_internal/service_internal.go => validator_controller/controller.go} (78%) rename pkg/{service_internal => validator_controller}/mapfixes.go (87%) rename pkg/{service_internal => validator_controller}/operations.go (76%) rename pkg/{service_internal => validator_controller}/script_policy.go (87%) rename pkg/{service_internal => validator_controller}/scripts.go (86%) rename pkg/{service_internal => validator_controller}/submissions.go (88%) diff --git a/pkg/cmds/serve.go b/pkg/cmds/serve.go index 4de78a8..4a15f50 100644 --- a/pkg/cmds/serve.go +++ b/pkg/cmds/serve.go @@ -13,7 +13,7 @@ import ( "git.itzana.me/strafesnet/maps-service/pkg/roblox" "git.itzana.me/strafesnet/maps-service/pkg/web_api" "git.itzana.me/strafesnet/maps-service/pkg/service" - "git.itzana.me/strafesnet/maps-service/pkg/service_internal" + "git.itzana.me/strafesnet/maps-service/pkg/validator_controller" "github.com/nats-io/nats.go" log "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" @@ -159,7 +159,7 @@ func serve(ctx *cli.Context) error { log.WithError(err).Fatal("failed to initialize api server") } - svc_internal := service_internal.NewService(&svc_inner) + svc_internal := validator_controller.NewService(&svc_inner) srv_internal, err := internal.NewServer(&svc_internal, internal.WithPathPrefix("/v1")) if err != nil { diff --git a/pkg/service_internal/service_internal.go b/pkg/validator_controller/controller.go similarity index 78% rename from pkg/service_internal/service_internal.go rename to pkg/validator_controller/controller.go index 7f37c54..1852459 100644 --- a/pkg/service_internal/service_internal.go +++ b/pkg/validator_controller/controller.go @@ -1,4 +1,4 @@ -package service_internal +package validator_controller import ( "context" @@ -18,20 +18,20 @@ var ( ErrNegativeID = errors.New("A negative ID was provided") ) -type Service struct { +type Controller struct { inner *service.Service } func NewService( inner *service.Service, -) Service { - return Service{ +) Controller { + return Controller{ inner: inner, } } // yay duplicate code -func (svc *Service) NewError(ctx context.Context, err error) *internal.ErrorStatusCode { +func (svc *Controller) NewError(ctx context.Context, err error) *internal.ErrorStatusCode { status := 500 if errors.Is(err, datastore.ErrNotExist) { status = 404 diff --git a/pkg/service_internal/mapfixes.go b/pkg/validator_controller/mapfixes.go similarity index 87% rename from pkg/service_internal/mapfixes.go rename to pkg/validator_controller/mapfixes.go index 7c03282..cc0b3ac 100644 --- a/pkg/service_internal/mapfixes.go +++ b/pkg/validator_controller/mapfixes.go @@ -1,4 +1,4 @@ -package service_internal +package validator_controller import ( "context" @@ -34,7 +34,7 @@ var( // Update model following role restrictions. // // POST /mapfixes/{MapfixID}/validated-model -func (svc *Service) UpdateMapfixValidatedModel(ctx context.Context, params internal.UpdateMapfixValidatedModelParams) error { +func (svc *Controller) UpdateMapfixValidatedModel(ctx context.Context, params internal.UpdateMapfixValidatedModelParams) error { ValidatedModelID := uint64(params.ValidatedModelID) ValidatedModelVersion := uint64(params.ValidatedModelVersion) @@ -70,7 +70,7 @@ func (svc *Service) UpdateMapfixValidatedModel(ctx context.Context, params inter // Role Validator changes status from Submitting -> Submitted. // // POST /mapfixes/{MapfixID}/status/validator-submitted -func (svc *Service) ActionMapfixSubmitted(ctx context.Context, params internal.ActionMapfixSubmittedParams) error { +func (svc *Controller) ActionMapfixSubmitted(ctx context.Context, params internal.ActionMapfixSubmittedParams) error { // transaction target_status := model.MapfixStatusSubmitted update := service.NewMapfixUpdate() @@ -105,7 +105,7 @@ func (svc *Service) ActionMapfixSubmitted(ctx context.Context, params internal.A // (Internal endpoint) Role Validator changes status from Submitting -> RequestChanges. // // POST /mapfixes/{MapfixID}/status/validator-request-changes -func (svc *Service) ActionMapfixRequestChanges(ctx context.Context, params internal.ActionMapfixRequestChangesParams) error { +func (svc *Controller) ActionMapfixRequestChanges(ctx context.Context, params internal.ActionMapfixRequestChangesParams) error { // transaction target_status := model.MapfixStatusChangesRequested update := service.NewMapfixUpdate() @@ -135,7 +135,7 @@ func (svc *Service) ActionMapfixRequestChanges(ctx context.Context, params inter // Role Validator changes status from Validating -> Validated. // // POST /mapfixes/{MapfixID}/status/validator-validated -func (svc *Service) ActionMapfixValidated(ctx context.Context, params internal.ActionMapfixValidatedParams) error { +func (svc *Controller) ActionMapfixValidated(ctx context.Context, params internal.ActionMapfixValidatedParams) error { // transaction update := service.NewMapfixUpdate() update.SetStatusID(model.MapfixStatusValidated) @@ -147,7 +147,7 @@ func (svc *Service) ActionMapfixValidated(ctx context.Context, params internal.A // (Internal endpoint) Role Validator changes status from Validating -> Accepted. // // POST /mapfixes/{MapfixID}/status/validator-failed -func (svc *Service) ActionMapfixAccepted(ctx context.Context, params internal.ActionMapfixAcceptedParams) error { +func (svc *Controller) ActionMapfixAccepted(ctx context.Context, params internal.ActionMapfixAcceptedParams) error { // transaction target_status := model.MapfixStatusAcceptedUnvalidated update := service.NewMapfixUpdate() @@ -178,7 +178,7 @@ func (svc *Service) ActionMapfixAccepted(ctx context.Context, params internal.Ac // (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. // // POST /mapfixes/{MapfixID}/status/validator-uploaded -func (svc *Service) ActionMapfixUploaded(ctx context.Context, params internal.ActionMapfixUploadedParams) error { +func (svc *Controller) ActionMapfixUploaded(ctx context.Context, params internal.ActionMapfixUploadedParams) error { // transaction target_status := model.MapfixStatusUploaded update := service.NewMapfixUpdate() @@ -208,7 +208,7 @@ func (svc *Service) ActionMapfixUploaded(ctx context.Context, params internal.Ac // Post an error to the audit log // // POST /mapfixes/{MapfixID}/error -func (svc *Service) CreateMapfixAuditError(ctx context.Context, params internal.CreateMapfixAuditErrorParams) (error) { +func (svc *Controller) CreateMapfixAuditError(ctx context.Context, params internal.CreateMapfixAuditErrorParams) (error) { event_data := model.AuditEventDataError{ Error: params.ErrorMessage, } @@ -229,7 +229,7 @@ func (svc *Service) CreateMapfixAuditError(ctx context.Context, params internal. // Post a checklist to the audit log // // POST /mapfixes/{MapfixID}/checklist -func (svc *Service) CreateMapfixAuditCheckList(ctx context.Context, check_list internal.CheckList, params internal.CreateMapfixAuditCheckListParams) (error) { +func (svc *Controller) CreateMapfixAuditCheckList(ctx context.Context, check_list internal.CheckList, params internal.CreateMapfixAuditCheckListParams) (error) { check_list2 := make([]model.Check, len(check_list)) for i, check := range check_list { check_list2[i] = model.Check{ @@ -255,7 +255,7 @@ func (svc *Service) CreateMapfixAuditCheckList(ctx context.Context, check_list i } // POST /mapfixes -func (svc *Service) CreateMapfix(ctx context.Context, request *internal.MapfixCreate) (*internal.MapfixID, error) { +func (svc *Controller) CreateMapfix(ctx context.Context, request *internal.MapfixCreate) (*internal.MapfixID, error) { // sanitization if request.GameID<0|| request.AssetOwner<0|| diff --git a/pkg/service_internal/operations.go b/pkg/validator_controller/operations.go similarity index 76% rename from pkg/service_internal/operations.go rename to pkg/validator_controller/operations.go index 8b02411..60d97e1 100644 --- a/pkg/service_internal/operations.go +++ b/pkg/validator_controller/operations.go @@ -1,4 +1,4 @@ -package service_internal +package validator_controller import ( "context" @@ -12,7 +12,7 @@ import ( // Fail the specified OperationID with a StatusMessage. // // POST /operations/{OperationID}/status/operation-failed -func (svc *Service) ActionOperationFailed(ctx context.Context, params internal.ActionOperationFailedParams) (error) { +func (svc *Controller) ActionOperationFailed(ctx context.Context, params internal.ActionOperationFailedParams) (error) { fail_params := service.NewOperationFailParams( params.StatusMessage, ) diff --git a/pkg/service_internal/script_policy.go b/pkg/validator_controller/script_policy.go similarity index 87% rename from pkg/service_internal/script_policy.go rename to pkg/validator_controller/script_policy.go index 6933146..633fdcb 100644 --- a/pkg/service_internal/script_policy.go +++ b/pkg/validator_controller/script_policy.go @@ -1,4 +1,4 @@ -package service_internal +package validator_controller import ( "context" @@ -13,7 +13,7 @@ import ( // Create a new script policy. // // POST /script-policy -func (svc *Service) CreateScriptPolicy(ctx context.Context, req *api.ScriptPolicyCreate) (*api.ScriptPolicyID, error) { +func (svc *Controller) CreateScriptPolicy(ctx context.Context, req *api.ScriptPolicyCreate) (*api.ScriptPolicyID, error) { from_script, err := svc.inner.GetScript(ctx, req.FromScriptID) if err != nil { return nil, err @@ -41,7 +41,7 @@ func (svc *Service) CreateScriptPolicy(ctx context.Context, req *api.ScriptPolic // Get list of script policies. // // GET /script-policy -func (svc *Service) ListScriptPolicy(ctx context.Context, params api.ListScriptPolicyParams) ([]api.ScriptPolicy, error) { +func (svc *Controller) ListScriptPolicy(ctx context.Context, params api.ListScriptPolicyParams) ([]api.ScriptPolicy, error) { filter := service.NewScriptPolicyFilter() if hash_hex, ok := params.FromScriptHash.Get(); ok{ diff --git a/pkg/service_internal/scripts.go b/pkg/validator_controller/scripts.go similarity index 86% rename from pkg/service_internal/scripts.go rename to pkg/validator_controller/scripts.go index dd1acf1..ba40758 100644 --- a/pkg/service_internal/scripts.go +++ b/pkg/validator_controller/scripts.go @@ -1,4 +1,4 @@ -package service_internal +package validator_controller import ( "context" @@ -13,7 +13,7 @@ import ( // Create a new script. // // POST /scripts -func (svc *Service) CreateScript(ctx context.Context, req *api.ScriptCreate) (*api.ScriptID, error) { +func (svc *Controller) CreateScript(ctx context.Context, req *api.ScriptCreate) (*api.ScriptID, error) { script, err := svc.inner.CreateScript(ctx, model.Script{ ID: 0, Name: req.Name, @@ -36,7 +36,7 @@ func (svc *Service) CreateScript(ctx context.Context, req *api.ScriptCreate) (*a // Get list of scripts. // // GET /scripts -func (svc *Service) ListScripts(ctx context.Context, params api.ListScriptsParams) ([]api.Script, error) { +func (svc *Controller) ListScripts(ctx context.Context, params api.ListScriptsParams) ([]api.Script, error) { filter := service.NewScriptFilter() if hash_hex, ok := params.Hash.Get(); ok{ hash_parsed, err := model.HashParse(hash_hex) @@ -86,7 +86,7 @@ func (svc *Service) ListScripts(ctx context.Context, params api.ListScriptsParam // Get the specified script by ID. // // GET /scripts/{ScriptID} -func (svc *Service) GetScript(ctx context.Context, params api.GetScriptParams) (*api.Script, error) { +func (svc *Controller) GetScript(ctx context.Context, params api.GetScriptParams) (*api.Script, error) { script, err := svc.inner.GetScript(ctx, params.ScriptID) if err != nil { return nil, err diff --git a/pkg/service_internal/submissions.go b/pkg/validator_controller/submissions.go similarity index 88% rename from pkg/service_internal/submissions.go rename to pkg/validator_controller/submissions.go index 32b9b95..c82626b 100644 --- a/pkg/service_internal/submissions.go +++ b/pkg/validator_controller/submissions.go @@ -1,4 +1,4 @@ -package service_internal +package validator_controller import ( "context" @@ -33,7 +33,7 @@ var( // Update model following role restrictions. // // POST /submissions/{SubmissionID}/validated-model -func (svc *Service) UpdateSubmissionValidatedModel(ctx context.Context, params internal.UpdateSubmissionValidatedModelParams) error { +func (svc *Controller) UpdateSubmissionValidatedModel(ctx context.Context, params internal.UpdateSubmissionValidatedModelParams) error { ValidatedModelID := uint64(params.ValidatedModelID) ValidatedModelVersion := uint64(params.ValidatedModelVersion) @@ -70,7 +70,7 @@ func (svc *Service) UpdateSubmissionValidatedModel(ctx context.Context, params i // Role Validator changes status from Submitting -> Submitted. // // POST /submissions/{SubmissionID}/status/validator-submitted -func (svc *Service) ActionSubmissionSubmitted(ctx context.Context, params internal.ActionSubmissionSubmittedParams) error { +func (svc *Controller) ActionSubmissionSubmitted(ctx context.Context, params internal.ActionSubmissionSubmittedParams) error { // transaction target_status := model.SubmissionStatusSubmitted update := service.NewSubmissionUpdate() @@ -105,7 +105,7 @@ func (svc *Service) ActionSubmissionSubmitted(ctx context.Context, params intern // (Internal endpoint) Role Validator changes status from Submitting -> RequestChanges. // // POST /submissions/{SubmissionID}/status/validator-request-changes -func (svc *Service) ActionSubmissionRequestChanges(ctx context.Context, params internal.ActionSubmissionRequestChangesParams) error { +func (svc *Controller) ActionSubmissionRequestChanges(ctx context.Context, params internal.ActionSubmissionRequestChangesParams) error { // transaction target_status := model.SubmissionStatusChangesRequested update := service.NewSubmissionUpdate() @@ -137,7 +137,7 @@ func (svc *Service) ActionSubmissionRequestChanges(ctx context.Context, params i // Role Validator changes status from Validating -> Validated. // // POST /submissions/{SubmissionID}/status/validator-validated -func (svc *Service) ActionSubmissionValidated(ctx context.Context, params internal.ActionSubmissionValidatedParams) error { +func (svc *Controller) ActionSubmissionValidated(ctx context.Context, params internal.ActionSubmissionValidatedParams) error { // transaction target_status := model.SubmissionStatusValidated update := service.NewSubmissionUpdate() @@ -168,7 +168,7 @@ func (svc *Service) ActionSubmissionValidated(ctx context.Context, params intern // (Internal endpoint) Role Validator changes status from Validating -> Accepted. // // POST /submissions/{SubmissionID}/status/validator-failed -func (svc *Service) ActionSubmissionAccepted(ctx context.Context, params internal.ActionSubmissionAcceptedParams) error { +func (svc *Controller) ActionSubmissionAccepted(ctx context.Context, params internal.ActionSubmissionAcceptedParams) error { // transaction target_status := model.SubmissionStatusAcceptedUnvalidated update := service.NewSubmissionUpdate() @@ -200,7 +200,7 @@ func (svc *Service) ActionSubmissionAccepted(ctx context.Context, params interna // (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. // // POST /submissions/{SubmissionID}/status/validator-uploaded -func (svc *Service) ActionSubmissionUploaded(ctx context.Context, params internal.ActionSubmissionUploadedParams) error { +func (svc *Controller) ActionSubmissionUploaded(ctx context.Context, params internal.ActionSubmissionUploadedParams) error { // transaction target_status := model.SubmissionStatusUploaded update := service.NewSubmissionUpdate() @@ -232,7 +232,7 @@ func (svc *Service) ActionSubmissionUploaded(ctx context.Context, params interna // Post an error to the audit log // // POST /submissions/{SubmissionID}/error -func (svc *Service) CreateSubmissionAuditError(ctx context.Context, params internal.CreateSubmissionAuditErrorParams) (error) { +func (svc *Controller) CreateSubmissionAuditError(ctx context.Context, params internal.CreateSubmissionAuditErrorParams) (error) { event_data := model.AuditEventDataError{ Error: params.ErrorMessage, } @@ -253,7 +253,7 @@ func (svc *Service) CreateSubmissionAuditError(ctx context.Context, params inter // Post a checklist to the audit log // // POST /submissions/{SubmissionID}/checklist -func (svc *Service) CreateSubmissionAuditCheckList(ctx context.Context, check_list internal.CheckList, params internal.CreateSubmissionAuditCheckListParams) (error) { +func (svc *Controller) CreateSubmissionAuditCheckList(ctx context.Context, check_list internal.CheckList, params internal.CreateSubmissionAuditCheckListParams) (error) { check_list2 := make([]model.Check, len(check_list)) for i, check := range check_list { check_list2[i] = model.Check{ @@ -279,7 +279,7 @@ func (svc *Service) CreateSubmissionAuditCheckList(ctx context.Context, check_li } // POST /submissions -func (svc *Service) CreateSubmission(ctx context.Context, request *internal.SubmissionCreate) (*internal.SubmissionID, error) { +func (svc *Controller) CreateSubmission(ctx context.Context, request *internal.SubmissionCreate) (*internal.SubmissionID, error) { // sanitization if request.GameID<0|| request.AssetOwner<0|| From e05f69ef7d5579061b8d1dc3c36566a55a4c58dc Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Thu, 17 Jul 2025 20:52:30 -0700 Subject: [PATCH 2/9] submissions: delete internal api --- generate.go | 1 - openapi-internal.yaml | 953 ------ pkg/internal/oas_cfg_gen.go | 283 -- pkg/internal/oas_client_gen.go | 2765 --------------- pkg/internal/oas_handlers_gen.go | 3741 --------------------- pkg/internal/oas_json_gen.go | 1796 ---------- pkg/internal/oas_labeler_gen.go | 42 - pkg/internal/oas_middleware_gen.go | 10 - pkg/internal/oas_operations_gen.go | 33 - pkg/internal/oas_parameters_gen.go | 3353 ------------------ pkg/internal/oas_request_decoders_gen.go | 441 --- pkg/internal/oas_request_encoders_gen.go | 96 - pkg/internal/oas_response_decoders_gen.go | 1793 ---------- pkg/internal/oas_response_encoders_gen.go | 266 -- pkg/internal/oas_router_gen.go | 1517 --------- pkg/internal/oas_schemas_gen.go | 761 ----- pkg/internal/oas_server_gen.go | 178 - pkg/internal/oas_unimplemented_gen.go | 238 -- pkg/internal/oas_validators_gen.go | 1017 ------ 19 files changed, 19284 deletions(-) delete mode 100644 openapi-internal.yaml delete mode 100644 pkg/internal/oas_cfg_gen.go delete mode 100644 pkg/internal/oas_client_gen.go delete mode 100644 pkg/internal/oas_handlers_gen.go delete mode 100644 pkg/internal/oas_json_gen.go delete mode 100644 pkg/internal/oas_labeler_gen.go delete mode 100644 pkg/internal/oas_middleware_gen.go delete mode 100644 pkg/internal/oas_operations_gen.go delete mode 100644 pkg/internal/oas_parameters_gen.go delete mode 100644 pkg/internal/oas_request_decoders_gen.go delete mode 100644 pkg/internal/oas_request_encoders_gen.go delete mode 100644 pkg/internal/oas_response_decoders_gen.go delete mode 100644 pkg/internal/oas_response_encoders_gen.go delete mode 100644 pkg/internal/oas_router_gen.go delete mode 100644 pkg/internal/oas_schemas_gen.go delete mode 100644 pkg/internal/oas_server_gen.go delete mode 100644 pkg/internal/oas_unimplemented_gen.go delete mode 100644 pkg/internal/oas_validators_gen.go diff --git a/generate.go b/generate.go index 6a2f0b5..a27289b 100644 --- a/generate.go +++ b/generate.go @@ -1,4 +1,3 @@ package main //go:generate go run github.com/ogen-go/ogen/cmd/ogen@latest --target pkg/api --clean openapi.yaml -//go:generate go run github.com/ogen-go/ogen/cmd/ogen@latest --target pkg/internal --clean openapi-internal.yaml diff --git a/openapi-internal.yaml b/openapi-internal.yaml deleted file mode 100644 index df43188..0000000 --- a/openapi-internal.yaml +++ /dev/null @@ -1,953 +0,0 @@ -openapi: 3.1.0 -info: - title: StrafesNET Internal - OpenAPI 3.1 - description: Internal operations inaccessible from the public internet. - version: 0.1.0 -tags: - - name: Mapfixes - description: Mapfix operations - - name: Operations - description: Long-running operations - - name: Scripts - description: Script operations - - name: ScriptPolicy - description: Script policy operations - - name: Submissions - description: Submission operations -paths: - /mapfixes: - post: - summary: Create a mapfix - operationId: createMapfix - tags: - - Mapfixes - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/MapfixCreate' - responses: - "201": - description: Successful response - content: - application/json: - schema: - $ref: "#/components/schemas/MapfixID" - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /mapfixes/{MapfixID}/validated-model: - post: - summary: Update validated model - operationId: updateMapfixValidatedModel - tags: - - Mapfixes - parameters: - - $ref: '#/components/parameters/MapfixID' - - name: ValidatedModelID - in: query - required: true - schema: - type: integer - format: int64 - minimum: 0 - - name: ValidatedModelVersion - in: query - required: true - schema: - type: integer - format: int64 - minimum: 0 - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /mapfixes/{MapfixID}/error: - post: - summary: Validator posts an error to the audit log - operationId: createMapfixAuditError - tags: - - Mapfixes - parameters: - - $ref: '#/components/parameters/MapfixID' - - name: ErrorMessage - in: query - required: true - schema: - type: string - minLength: 0 - maxLength: 4096 - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /mapfixes/{MapfixID}/checklist: - post: - summary: Validator posts a checklist to the audit log - operationId: createMapfixAuditCheckList - tags: - - Mapfixes - parameters: - - $ref: '#/components/parameters/MapfixID' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/CheckList' - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /mapfixes/{MapfixID}/status/validator-submitted: - post: - summary: (Internal endpoint) Role Validator changes status from Submitting -> Submitted - operationId: actionMapfixSubmitted - tags: - - Mapfixes - parameters: - - $ref: '#/components/parameters/MapfixID' - - name: ModelVersion - in: query - required: true - schema: - type: integer - format: int64 - minimum: 0 - - name: DisplayName - in: query - required: true - schema: - type: string - maxLength: 128 - - name: Creator - in: query - required: true - schema: - type: string - maxLength: 128 - - name: GameID - in: query - required: true - schema: - type: integer - format: int32 - minimum: 0 - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /mapfixes/{MapfixID}/status/validator-request-changes: - post: - summary: (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested - operationId: actionMapfixRequestChanges - tags: - - Mapfixes - parameters: - - $ref: '#/components/parameters/MapfixID' - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /mapfixes/{MapfixID}/status/validator-validated: - post: - summary: (Internal endpoint) Role Validator changes status from Validating -> Validated - operationId: actionMapfixValidated - tags: - - Mapfixes - parameters: - - $ref: '#/components/parameters/MapfixID' - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /mapfixes/{MapfixID}/status/validator-failed: - post: - summary: (Internal endpoint) Role Validator changes status from Validating -> Accepted - operationId: actionMapfixAccepted - tags: - - Mapfixes - parameters: - - $ref: '#/components/parameters/MapfixID' - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /mapfixes/{MapfixID}/status/validator-uploaded: - post: - summary: (Internal endpoint) Role Validator changes status from Uploading -> Uploaded - operationId: actionMapfixUploaded - tags: - - Mapfixes - parameters: - - $ref: '#/components/parameters/MapfixID' - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /operations/{OperationID}/status/operation-failed: - post: - summary: (Internal endpoint) Fail an operation and write a StatusMessage - operationId: actionOperationFailed - tags: - - Operations - parameters: - - $ref: '#/components/parameters/OperationID' - - name: StatusMessage - in: query - required: true - schema: - type: string - minLength: 0 - maxLength: 4096 - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /submissions: - post: - summary: Create a new submission - operationId: createSubmission - tags: - - Submissions - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/SubmissionCreate' - responses: - "201": - description: Successful response - content: - application/json: - schema: - $ref: "#/components/schemas/SubmissionID" - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /submissions/{SubmissionID}/validated-model: - post: - summary: Update validated model - operationId: updateSubmissionValidatedModel - tags: - - Submissions - parameters: - - $ref: '#/components/parameters/SubmissionID' - - name: ValidatedModelID - in: query - required: true - schema: - type: integer - format: int64 - minimum: 0 - - name: ValidatedModelVersion - in: query - required: true - schema: - type: integer - format: int64 - minimum: 0 - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /submissions/{SubmissionID}/error: - post: - summary: Validator posts an error to the audit log - operationId: createSubmissionAuditError - tags: - - Submissions - parameters: - - $ref: '#/components/parameters/SubmissionID' - - name: ErrorMessage - in: query - required: true - schema: - type: string - minLength: 0 - maxLength: 4096 - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /submissions/{SubmissionID}/checklist: - post: - summary: Validator posts a checklist to the audit log - operationId: createSubmissionAuditCheckList - tags: - - Submissions - parameters: - - $ref: '#/components/parameters/SubmissionID' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/CheckList' - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /submissions/{SubmissionID}/status/validator-submitted: - post: - summary: (Internal endpoint) Role Validator changes status from Submitting -> Submitted - operationId: actionSubmissionSubmitted - tags: - - Submissions - parameters: - - $ref: '#/components/parameters/SubmissionID' - - name: ModelVersion - in: query - required: true - schema: - type: integer - format: int64 - minimum: 0 - - name: DisplayName - in: query - required: true - schema: - type: string - maxLength: 128 - - name: Creator - in: query - required: true - schema: - type: string - maxLength: 128 - - name: GameID - in: query - required: true - schema: - type: integer - format: int32 - minimum: 0 - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /submissions/{SubmissionID}/status/validator-request-changes: - post: - summary: (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested - operationId: actionSubmissionRequestChanges - tags: - - Submissions - parameters: - - $ref: '#/components/parameters/SubmissionID' - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /submissions/{SubmissionID}/status/validator-validated: - post: - summary: (Internal endpoint) Role Validator changes status from Validating -> Validated - operationId: actionSubmissionValidated - tags: - - Submissions - parameters: - - $ref: '#/components/parameters/SubmissionID' - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /submissions/{SubmissionID}/status/validator-failed: - post: - summary: (Internal endpoint) Role Validator changes status from Validating -> Accepted - operationId: actionSubmissionAccepted - tags: - - Submissions - parameters: - - $ref: '#/components/parameters/SubmissionID' - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /submissions/{SubmissionID}/status/validator-uploaded: - post: - summary: (Internal endpoint) Role Validator changes status from Uploading -> Uploaded - operationId: actionSubmissionUploaded - tags: - - Submissions - parameters: - - $ref: '#/components/parameters/SubmissionID' - - name: UploadedAssetID - in: query - required: true - schema: - type: integer - format: int64 - minimum: 0 - responses: - "204": - description: Successful response - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /script-policy: - get: - summary: Get list of script policies - operationId: listScriptPolicy - tags: - - ScriptPolicy - parameters: - - $ref: "#/components/parameters/Page" - - $ref: "#/components/parameters/Limit" - - name: FromScriptHash - in: query - schema: - type: string - minLength: 16 - maxLength: 16 - - name: ToScriptID - in: query - schema: - type: integer - format: int64 - minimum: 0 - - name: Policy - in: query - schema: - type: integer - format: int32 - minimum: 0 - responses: - "200": - description: Successful response - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/ScriptPolicy" - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - post: - summary: Create a new script policy - operationId: createScriptPolicy - tags: - - ScriptPolicy - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ScriptPolicyCreate' - responses: - "201": - description: Successful response - content: - application/json: - schema: - $ref: "#/components/schemas/ScriptPolicyID" - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /scripts: - get: - summary: Get list of scripts - operationId: listScripts - tags: - - Scripts - parameters: - - $ref: "#/components/parameters/Page" - - $ref: "#/components/parameters/Limit" - - name: Hash - in: query - schema: - type: string - minLength: 16 - maxLength: 16 - - name: Name - in: query - schema: - type: string - maxLength: 128 - - name: Source - in: query - schema: - type: string - maxLength: 1048576 - - name: ResourceType - in: query - schema: - type: integer - format: int32 - minimum: 0 - - name: ResourceID - in: query - schema: - type: integer - format: int64 - minimum: 0 - responses: - "200": - description: Successful response - content: - application/json: - schema: - type: array - items: - $ref: "#/components/schemas/Script" - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - post: - summary: Create a new script - operationId: createScript - tags: - - Scripts - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/ScriptCreate' - responses: - "201": - description: Successful response - content: - application/json: - schema: - $ref: "#/components/schemas/ScriptID" - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" - /scripts/{ScriptID}: - get: - summary: Get the specified script by ID - operationId: getScript - tags: - - Scripts - parameters: - - $ref: '#/components/parameters/ScriptID' - responses: - "200": - description: Successful response - content: - application/json: - schema: - $ref: "#/components/schemas/Script" - default: - description: General Error - content: - application/json: - schema: - $ref: "#/components/schemas/Error" -components: - parameters: - MapfixID: - name: MapfixID - in: path - required: true - description: The unique identifier for a submission. - schema: - type: integer - format: int64 - minimum: 0 - OperationID: - name: OperationID - in: path - required: true - description: The unique identifier for a long-running operation. - schema: - type: integer - format: int32 - minimum: 0 - SubmissionID: - name: SubmissionID - in: path - required: true - description: The unique identifier for a submission. - schema: - type: integer - format: int64 - minimum: 0 - ScriptID: - name: ScriptID - in: path - required: true - description: The unique identifier for a script. - schema: - type: integer - format: int64 - minimum: 0 - Page: - name: Page - in: query - required: true - schema: - type: integer - format: int32 - minimum: 1 - Limit: - name: Limit - in: query - required: true - schema: - type: integer - format: int32 - minimum: 1 - maximum: 100 - schemas: - MapfixID: - required: - - MapfixID - type: object - properties: - MapfixID: - type: integer - format: int64 - minimum: 0 - SubmissionID: - required: - - SubmissionID - type: object - properties: - SubmissionID: - type: integer - format: int64 - minimum: 0 - ScriptID: - required: - - ScriptID - type: object - properties: - ScriptID: - type: integer - format: int64 - minimum: 0 - ScriptPolicyID: - required: - - ScriptPolicyID - type: object - properties: - ScriptPolicyID: - type: integer - format: int64 - minimum: 0 - MapfixCreate: - required: - - OperationID - - AssetOwner - - DisplayName - - Creator - - GameID - - AssetID - - AssetVersion - - TargetAssetID - - Description - type: object - properties: - OperationID: - type: integer - format: int32 - minimum: 0 - AssetOwner: - type: integer - format: int64 - minimum: 0 - DisplayName: - type: string - maxLength: 128 - Creator: - type: string - maxLength: 128 - GameID: - type: integer - format: int32 - minimum: 0 - AssetID: - type: integer - format: int64 - minimum: 0 - AssetVersion: - type: integer - format: int64 - minimum: 0 - TargetAssetID: - type: integer - format: int64 - minimum: 0 - Description: - type: string - maxLength: 256 - SubmissionCreate: - required: - - OperationID - - AssetOwner - - DisplayName - - Creator - - GameID - - AssetID - - AssetVersion - - Status - - Roles - type: object - properties: - OperationID: - type: integer - format: int32 - minimum: 0 - AssetOwner: - type: integer - format: int64 - minimum: 0 - DisplayName: - type: string - maxLength: 128 - Creator: - type: string - maxLength: 128 - GameID: - type: integer - format: int32 - minimum: 0 - AssetID: - type: integer - format: int64 - minimum: 0 - AssetVersion: - type: integer - format: int64 - minimum: 0 - Status: - type: integer - format: uint32 - minimum: 0 - maximum: 9 - Roles: - type: integer - format: uint32 - Script: - required: - - ID - - Name - - Hash - - Source - - ResourceType - - ResourceID - type: object - properties: - ID: - type: integer - format: int64 - minimum: 0 - Name: - type: string - maxLength: 128 - Hash: - type: string - minLength: 16 - maxLength: 16 - Source: - type: string - maxLength: 1048576 - ResourceType: - type: integer - format: int32 - minimum: 0 - ResourceID: - type: integer - format: int64 - minimum: 0 - ScriptCreate: - required: - - Name - - Source - - ResourceType -# - ResourceID - type: object - properties: - Name: - type: string - maxLength: 128 - Source: - type: string - maxLength: 1048576 - ResourceType: - type: integer - format: int32 - minimum: 0 - ResourceID: - type: integer - format: int64 - minimum: 0 - ScriptPolicy: - required: - - ID - - FromScriptHash - - ToScriptID - - Policy - type: object - properties: - ID: - type: integer - format: int64 - minimum: 0 - FromScriptHash: - type: string - minLength: 16 - maxLength: 16 - ToScriptID: - type: integer - format: int64 - minimum: 0 - Policy: - type: integer - format: int32 - minimum: 0 - ScriptPolicyCreate: - required: - - FromScriptID - - ToScriptID - - Policy - type: object - properties: - FromScriptID: - type: integer - format: int64 - minimum: 0 - ToScriptID: - type: integer - format: int64 - minimum: 0 - Policy: - type: integer - format: int32 - minimum: 0 - Check: - required: - - Name - - Summary - - Passed - type: object - properties: - Name: - type: string - maxLength: 128 - Summary: - type: string - maxLength: 4096 - Passed: - type: boolean - CheckList: - type: array - items: - $ref: "#/components/schemas/Check" - Error: - description: Represents error object - type: object - properties: - code: - type: integer - format: int64 - minimum: 0 - message: - type: string - required: - - code - - message diff --git a/pkg/internal/oas_cfg_gen.go b/pkg/internal/oas_cfg_gen.go deleted file mode 100644 index fc3ff34..0000000 --- a/pkg/internal/oas_cfg_gen.go +++ /dev/null @@ -1,283 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "net/http" - - "go.opentelemetry.io/otel" - "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/trace" - - ht "github.com/ogen-go/ogen/http" - "github.com/ogen-go/ogen/middleware" - "github.com/ogen-go/ogen/ogenerrors" - "github.com/ogen-go/ogen/otelogen" -) - -var ( - // Allocate option closure once. - clientSpanKind = trace.WithSpanKind(trace.SpanKindClient) - // Allocate option closure once. - serverSpanKind = trace.WithSpanKind(trace.SpanKindServer) -) - -type ( - optionFunc[C any] func(*C) - otelOptionFunc func(*otelConfig) -) - -type otelConfig struct { - TracerProvider trace.TracerProvider - Tracer trace.Tracer - MeterProvider metric.MeterProvider - Meter metric.Meter -} - -func (cfg *otelConfig) initOTEL() { - if cfg.TracerProvider == nil { - cfg.TracerProvider = otel.GetTracerProvider() - } - if cfg.MeterProvider == nil { - cfg.MeterProvider = otel.GetMeterProvider() - } - cfg.Tracer = cfg.TracerProvider.Tracer(otelogen.Name, - trace.WithInstrumentationVersion(otelogen.SemVersion()), - ) - cfg.Meter = cfg.MeterProvider.Meter(otelogen.Name, - metric.WithInstrumentationVersion(otelogen.SemVersion()), - ) -} - -// ErrorHandler is error handler. -type ErrorHandler = ogenerrors.ErrorHandler - -type serverConfig struct { - otelConfig - NotFound http.HandlerFunc - MethodNotAllowed func(w http.ResponseWriter, r *http.Request, allowed string) - ErrorHandler ErrorHandler - Prefix string - Middleware Middleware - MaxMultipartMemory int64 -} - -// ServerOption is server config option. -type ServerOption interface { - applyServer(*serverConfig) -} - -var _ ServerOption = (optionFunc[serverConfig])(nil) - -func (o optionFunc[C]) applyServer(c *C) { - o(c) -} - -var _ ServerOption = (otelOptionFunc)(nil) - -func (o otelOptionFunc) applyServer(c *serverConfig) { - o(&c.otelConfig) -} - -func newServerConfig(opts ...ServerOption) serverConfig { - cfg := serverConfig{ - NotFound: http.NotFound, - MethodNotAllowed: func(w http.ResponseWriter, r *http.Request, allowed string) { - status := http.StatusMethodNotAllowed - if r.Method == "OPTIONS" { - w.Header().Set("Access-Control-Allow-Methods", allowed) - w.Header().Set("Access-Control-Allow-Headers", "Content-Type") - status = http.StatusNoContent - } else { - w.Header().Set("Allow", allowed) - } - w.WriteHeader(status) - }, - ErrorHandler: ogenerrors.DefaultErrorHandler, - Middleware: nil, - MaxMultipartMemory: 32 << 20, // 32 MB - } - for _, opt := range opts { - opt.applyServer(&cfg) - } - cfg.initOTEL() - return cfg -} - -type baseServer struct { - cfg serverConfig - requests metric.Int64Counter - errors metric.Int64Counter - duration metric.Float64Histogram -} - -func (s baseServer) notFound(w http.ResponseWriter, r *http.Request) { - s.cfg.NotFound(w, r) -} - -func (s baseServer) notAllowed(w http.ResponseWriter, r *http.Request, allowed string) { - s.cfg.MethodNotAllowed(w, r, allowed) -} - -func (cfg serverConfig) baseServer() (s baseServer, err error) { - s = baseServer{cfg: cfg} - if s.requests, err = otelogen.ServerRequestCountCounter(s.cfg.Meter); err != nil { - return s, err - } - if s.errors, err = otelogen.ServerErrorsCountCounter(s.cfg.Meter); err != nil { - return s, err - } - if s.duration, err = otelogen.ServerDurationHistogram(s.cfg.Meter); err != nil { - return s, err - } - return s, nil -} - -type clientConfig struct { - otelConfig - Client ht.Client -} - -// ClientOption is client config option. -type ClientOption interface { - applyClient(*clientConfig) -} - -var _ ClientOption = (optionFunc[clientConfig])(nil) - -func (o optionFunc[C]) applyClient(c *C) { - o(c) -} - -var _ ClientOption = (otelOptionFunc)(nil) - -func (o otelOptionFunc) applyClient(c *clientConfig) { - o(&c.otelConfig) -} - -func newClientConfig(opts ...ClientOption) clientConfig { - cfg := clientConfig{ - Client: http.DefaultClient, - } - for _, opt := range opts { - opt.applyClient(&cfg) - } - cfg.initOTEL() - return cfg -} - -type baseClient struct { - cfg clientConfig - requests metric.Int64Counter - errors metric.Int64Counter - duration metric.Float64Histogram -} - -func (cfg clientConfig) baseClient() (c baseClient, err error) { - c = baseClient{cfg: cfg} - if c.requests, err = otelogen.ClientRequestCountCounter(c.cfg.Meter); err != nil { - return c, err - } - if c.errors, err = otelogen.ClientErrorsCountCounter(c.cfg.Meter); err != nil { - return c, err - } - if c.duration, err = otelogen.ClientDurationHistogram(c.cfg.Meter); err != nil { - return c, err - } - return c, nil -} - -// Option is config option. -type Option interface { - ServerOption - ClientOption -} - -// WithTracerProvider specifies a tracer provider to use for creating a tracer. -// -// If none is specified, the global provider is used. -func WithTracerProvider(provider trace.TracerProvider) Option { - return otelOptionFunc(func(cfg *otelConfig) { - if provider != nil { - cfg.TracerProvider = provider - } - }) -} - -// WithMeterProvider specifies a meter provider to use for creating a meter. -// -// If none is specified, the otel.GetMeterProvider() is used. -func WithMeterProvider(provider metric.MeterProvider) Option { - return otelOptionFunc(func(cfg *otelConfig) { - if provider != nil { - cfg.MeterProvider = provider - } - }) -} - -// WithClient specifies http client to use. -func WithClient(client ht.Client) ClientOption { - return optionFunc[clientConfig](func(cfg *clientConfig) { - if client != nil { - cfg.Client = client - } - }) -} - -// WithNotFound specifies Not Found handler to use. -func WithNotFound(notFound http.HandlerFunc) ServerOption { - return optionFunc[serverConfig](func(cfg *serverConfig) { - if notFound != nil { - cfg.NotFound = notFound - } - }) -} - -// WithMethodNotAllowed specifies Method Not Allowed handler to use. -func WithMethodNotAllowed(methodNotAllowed func(w http.ResponseWriter, r *http.Request, allowed string)) ServerOption { - return optionFunc[serverConfig](func(cfg *serverConfig) { - if methodNotAllowed != nil { - cfg.MethodNotAllowed = methodNotAllowed - } - }) -} - -// WithErrorHandler specifies error handler to use. -func WithErrorHandler(h ErrorHandler) ServerOption { - return optionFunc[serverConfig](func(cfg *serverConfig) { - if h != nil { - cfg.ErrorHandler = h - } - }) -} - -// WithPathPrefix specifies server path prefix. -func WithPathPrefix(prefix string) ServerOption { - return optionFunc[serverConfig](func(cfg *serverConfig) { - cfg.Prefix = prefix - }) -} - -// WithMiddleware specifies middlewares to use. -func WithMiddleware(m ...Middleware) ServerOption { - return optionFunc[serverConfig](func(cfg *serverConfig) { - switch len(m) { - case 0: - cfg.Middleware = nil - case 1: - cfg.Middleware = m[0] - default: - cfg.Middleware = middleware.ChainMiddlewares(m...) - } - }) -} - -// WithMaxMultipartMemory specifies limit of memory for storing file parts. -// File parts which can't be stored in memory will be stored on disk in temporary files. -func WithMaxMultipartMemory(max int64) ServerOption { - return optionFunc[serverConfig](func(cfg *serverConfig) { - if max > 0 { - cfg.MaxMultipartMemory = max - } - }) -} diff --git a/pkg/internal/oas_client_gen.go b/pkg/internal/oas_client_gen.go deleted file mode 100644 index ba9a38c..0000000 --- a/pkg/internal/oas_client_gen.go +++ /dev/null @@ -1,2765 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "context" - "net/url" - "strings" - "time" - - "github.com/go-faster/errors" - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/codes" - "go.opentelemetry.io/otel/metric" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" - "go.opentelemetry.io/otel/trace" - - "github.com/ogen-go/ogen/conv" - ht "github.com/ogen-go/ogen/http" - "github.com/ogen-go/ogen/otelogen" - "github.com/ogen-go/ogen/uri" -) - -func trimTrailingSlashes(u *url.URL) { - u.Path = strings.TrimRight(u.Path, "/") - u.RawPath = strings.TrimRight(u.RawPath, "/") -} - -// Invoker invokes operations described by OpenAPI v3 specification. -type Invoker interface { - // ActionMapfixAccepted invokes actionMapfixAccepted operation. - // - // (Internal endpoint) Role Validator changes status from Validating -> Accepted. - // - // POST /mapfixes/{MapfixID}/status/validator-failed - ActionMapfixAccepted(ctx context.Context, params ActionMapfixAcceptedParams) error - // ActionMapfixRequestChanges invokes actionMapfixRequestChanges operation. - // - // (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. - // - // POST /mapfixes/{MapfixID}/status/validator-request-changes - ActionMapfixRequestChanges(ctx context.Context, params ActionMapfixRequestChangesParams) error - // ActionMapfixSubmitted invokes actionMapfixSubmitted operation. - // - // (Internal endpoint) Role Validator changes status from Submitting -> Submitted. - // - // POST /mapfixes/{MapfixID}/status/validator-submitted - ActionMapfixSubmitted(ctx context.Context, params ActionMapfixSubmittedParams) error - // ActionMapfixUploaded invokes actionMapfixUploaded operation. - // - // (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. - // - // POST /mapfixes/{MapfixID}/status/validator-uploaded - ActionMapfixUploaded(ctx context.Context, params ActionMapfixUploadedParams) error - // ActionMapfixValidated invokes actionMapfixValidated operation. - // - // (Internal endpoint) Role Validator changes status from Validating -> Validated. - // - // POST /mapfixes/{MapfixID}/status/validator-validated - ActionMapfixValidated(ctx context.Context, params ActionMapfixValidatedParams) error - // ActionOperationFailed invokes actionOperationFailed operation. - // - // (Internal endpoint) Fail an operation and write a StatusMessage. - // - // POST /operations/{OperationID}/status/operation-failed - ActionOperationFailed(ctx context.Context, params ActionOperationFailedParams) error - // ActionSubmissionAccepted invokes actionSubmissionAccepted operation. - // - // (Internal endpoint) Role Validator changes status from Validating -> Accepted. - // - // POST /submissions/{SubmissionID}/status/validator-failed - ActionSubmissionAccepted(ctx context.Context, params ActionSubmissionAcceptedParams) error - // ActionSubmissionRequestChanges invokes actionSubmissionRequestChanges operation. - // - // (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. - // - // POST /submissions/{SubmissionID}/status/validator-request-changes - ActionSubmissionRequestChanges(ctx context.Context, params ActionSubmissionRequestChangesParams) error - // ActionSubmissionSubmitted invokes actionSubmissionSubmitted operation. - // - // (Internal endpoint) Role Validator changes status from Submitting -> Submitted. - // - // POST /submissions/{SubmissionID}/status/validator-submitted - ActionSubmissionSubmitted(ctx context.Context, params ActionSubmissionSubmittedParams) error - // ActionSubmissionUploaded invokes actionSubmissionUploaded operation. - // - // (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. - // - // POST /submissions/{SubmissionID}/status/validator-uploaded - ActionSubmissionUploaded(ctx context.Context, params ActionSubmissionUploadedParams) error - // ActionSubmissionValidated invokes actionSubmissionValidated operation. - // - // (Internal endpoint) Role Validator changes status from Validating -> Validated. - // - // POST /submissions/{SubmissionID}/status/validator-validated - ActionSubmissionValidated(ctx context.Context, params ActionSubmissionValidatedParams) error - // CreateMapfix invokes createMapfix operation. - // - // Create a mapfix. - // - // POST /mapfixes - CreateMapfix(ctx context.Context, request *MapfixCreate) (*MapfixID, error) - // CreateMapfixAuditCheckList invokes createMapfixAuditCheckList operation. - // - // Validator posts a checklist to the audit log. - // - // POST /mapfixes/{MapfixID}/checklist - CreateMapfixAuditCheckList(ctx context.Context, request CheckList, params CreateMapfixAuditCheckListParams) error - // CreateMapfixAuditError invokes createMapfixAuditError operation. - // - // Validator posts an error to the audit log. - // - // POST /mapfixes/{MapfixID}/error - CreateMapfixAuditError(ctx context.Context, params CreateMapfixAuditErrorParams) error - // CreateScript invokes createScript operation. - // - // Create a new script. - // - // POST /scripts - CreateScript(ctx context.Context, request *ScriptCreate) (*ScriptID, error) - // CreateScriptPolicy invokes createScriptPolicy operation. - // - // Create a new script policy. - // - // POST /script-policy - CreateScriptPolicy(ctx context.Context, request *ScriptPolicyCreate) (*ScriptPolicyID, error) - // CreateSubmission invokes createSubmission operation. - // - // Create a new submission. - // - // POST /submissions - CreateSubmission(ctx context.Context, request *SubmissionCreate) (*SubmissionID, error) - // CreateSubmissionAuditCheckList invokes createSubmissionAuditCheckList operation. - // - // Validator posts a checklist to the audit log. - // - // POST /submissions/{SubmissionID}/checklist - CreateSubmissionAuditCheckList(ctx context.Context, request CheckList, params CreateSubmissionAuditCheckListParams) error - // CreateSubmissionAuditError invokes createSubmissionAuditError operation. - // - // Validator posts an error to the audit log. - // - // POST /submissions/{SubmissionID}/error - CreateSubmissionAuditError(ctx context.Context, params CreateSubmissionAuditErrorParams) error - // GetScript invokes getScript operation. - // - // Get the specified script by ID. - // - // GET /scripts/{ScriptID} - GetScript(ctx context.Context, params GetScriptParams) (*Script, error) - // ListScriptPolicy invokes listScriptPolicy operation. - // - // Get list of script policies. - // - // GET /script-policy - ListScriptPolicy(ctx context.Context, params ListScriptPolicyParams) ([]ScriptPolicy, error) - // ListScripts invokes listScripts operation. - // - // Get list of scripts. - // - // GET /scripts - ListScripts(ctx context.Context, params ListScriptsParams) ([]Script, error) - // UpdateMapfixValidatedModel invokes updateMapfixValidatedModel operation. - // - // Update validated model. - // - // POST /mapfixes/{MapfixID}/validated-model - UpdateMapfixValidatedModel(ctx context.Context, params UpdateMapfixValidatedModelParams) error - // UpdateSubmissionValidatedModel invokes updateSubmissionValidatedModel operation. - // - // Update validated model. - // - // POST /submissions/{SubmissionID}/validated-model - UpdateSubmissionValidatedModel(ctx context.Context, params UpdateSubmissionValidatedModelParams) error -} - -// Client implements OAS client. -type Client struct { - serverURL *url.URL - baseClient -} -type errorHandler interface { - NewError(ctx context.Context, err error) *ErrorStatusCode -} - -var _ Handler = struct { - errorHandler - *Client -}{} - -// NewClient initializes new Client defined by OAS. -func NewClient(serverURL string, opts ...ClientOption) (*Client, error) { - u, err := url.Parse(serverURL) - if err != nil { - return nil, err - } - trimTrailingSlashes(u) - - c, err := newClientConfig(opts...).baseClient() - if err != nil { - return nil, err - } - return &Client{ - serverURL: u, - baseClient: c, - }, nil -} - -type serverURLKey struct{} - -// WithServerURL sets context key to override server URL. -func WithServerURL(ctx context.Context, u *url.URL) context.Context { - return context.WithValue(ctx, serverURLKey{}, u) -} - -func (c *Client) requestURL(ctx context.Context) *url.URL { - u, ok := ctx.Value(serverURLKey{}).(*url.URL) - if !ok { - return c.serverURL - } - return u -} - -// ActionMapfixAccepted invokes actionMapfixAccepted operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Accepted. -// -// POST /mapfixes/{MapfixID}/status/validator-failed -func (c *Client) ActionMapfixAccepted(ctx context.Context, params ActionMapfixAcceptedParams) error { - _, err := c.sendActionMapfixAccepted(ctx, params) - return err -} - -func (c *Client) sendActionMapfixAccepted(ctx context.Context, params ActionMapfixAcceptedParams) (res *ActionMapfixAcceptedNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixAccepted"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-failed"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionMapfixAcceptedOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/mapfixes/" - { - // Encode "MapfixID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "MapfixID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.MapfixID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-failed" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionMapfixAcceptedResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionMapfixRequestChanges invokes actionMapfixRequestChanges operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. -// -// POST /mapfixes/{MapfixID}/status/validator-request-changes -func (c *Client) ActionMapfixRequestChanges(ctx context.Context, params ActionMapfixRequestChangesParams) error { - _, err := c.sendActionMapfixRequestChanges(ctx, params) - return err -} - -func (c *Client) sendActionMapfixRequestChanges(ctx context.Context, params ActionMapfixRequestChangesParams) (res *ActionMapfixRequestChangesNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixRequestChanges"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-request-changes"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionMapfixRequestChangesOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/mapfixes/" - { - // Encode "MapfixID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "MapfixID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.MapfixID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-request-changes" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionMapfixRequestChangesResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionMapfixSubmitted invokes actionMapfixSubmitted operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> Submitted. -// -// POST /mapfixes/{MapfixID}/status/validator-submitted -func (c *Client) ActionMapfixSubmitted(ctx context.Context, params ActionMapfixSubmittedParams) error { - _, err := c.sendActionMapfixSubmitted(ctx, params) - return err -} - -func (c *Client) sendActionMapfixSubmitted(ctx context.Context, params ActionMapfixSubmittedParams) (res *ActionMapfixSubmittedNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixSubmitted"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-submitted"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionMapfixSubmittedOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/mapfixes/" - { - // Encode "MapfixID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "MapfixID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.MapfixID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-submitted" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "ModelVersion" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ModelVersion", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int64ToString(params.ModelVersion)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "DisplayName" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "DisplayName", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.StringToString(params.DisplayName)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "Creator" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Creator", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.StringToString(params.Creator)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "GameID" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "GameID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int32ToString(params.GameID)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionMapfixSubmittedResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionMapfixUploaded invokes actionMapfixUploaded operation. -// -// (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. -// -// POST /mapfixes/{MapfixID}/status/validator-uploaded -func (c *Client) ActionMapfixUploaded(ctx context.Context, params ActionMapfixUploadedParams) error { - _, err := c.sendActionMapfixUploaded(ctx, params) - return err -} - -func (c *Client) sendActionMapfixUploaded(ctx context.Context, params ActionMapfixUploadedParams) (res *ActionMapfixUploadedNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixUploaded"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-uploaded"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionMapfixUploadedOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/mapfixes/" - { - // Encode "MapfixID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "MapfixID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.MapfixID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-uploaded" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionMapfixUploadedResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionMapfixValidated invokes actionMapfixValidated operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Validated. -// -// POST /mapfixes/{MapfixID}/status/validator-validated -func (c *Client) ActionMapfixValidated(ctx context.Context, params ActionMapfixValidatedParams) error { - _, err := c.sendActionMapfixValidated(ctx, params) - return err -} - -func (c *Client) sendActionMapfixValidated(ctx context.Context, params ActionMapfixValidatedParams) (res *ActionMapfixValidatedNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixValidated"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-validated"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionMapfixValidatedOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/mapfixes/" - { - // Encode "MapfixID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "MapfixID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.MapfixID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-validated" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionMapfixValidatedResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionOperationFailed invokes actionOperationFailed operation. -// -// (Internal endpoint) Fail an operation and write a StatusMessage. -// -// POST /operations/{OperationID}/status/operation-failed -func (c *Client) ActionOperationFailed(ctx context.Context, params ActionOperationFailedParams) error { - _, err := c.sendActionOperationFailed(ctx, params) - return err -} - -func (c *Client) sendActionOperationFailed(ctx context.Context, params ActionOperationFailedParams) (res *ActionOperationFailedNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionOperationFailed"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/operations/{OperationID}/status/operation-failed"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionOperationFailedOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/operations/" - { - // Encode "OperationID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "OperationID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int32ToString(params.OperationID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/operation-failed" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "StatusMessage" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "StatusMessage", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.StringToString(params.StatusMessage)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionOperationFailedResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionSubmissionAccepted invokes actionSubmissionAccepted operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Accepted. -// -// POST /submissions/{SubmissionID}/status/validator-failed -func (c *Client) ActionSubmissionAccepted(ctx context.Context, params ActionSubmissionAcceptedParams) error { - _, err := c.sendActionSubmissionAccepted(ctx, params) - return err -} - -func (c *Client) sendActionSubmissionAccepted(ctx context.Context, params ActionSubmissionAcceptedParams) (res *ActionSubmissionAcceptedNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionAccepted"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-failed"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionSubmissionAcceptedOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/submissions/" - { - // Encode "SubmissionID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "SubmissionID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.SubmissionID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-failed" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionSubmissionAcceptedResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionSubmissionRequestChanges invokes actionSubmissionRequestChanges operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. -// -// POST /submissions/{SubmissionID}/status/validator-request-changes -func (c *Client) ActionSubmissionRequestChanges(ctx context.Context, params ActionSubmissionRequestChangesParams) error { - _, err := c.sendActionSubmissionRequestChanges(ctx, params) - return err -} - -func (c *Client) sendActionSubmissionRequestChanges(ctx context.Context, params ActionSubmissionRequestChangesParams) (res *ActionSubmissionRequestChangesNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionRequestChanges"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-request-changes"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionSubmissionRequestChangesOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/submissions/" - { - // Encode "SubmissionID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "SubmissionID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.SubmissionID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-request-changes" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionSubmissionRequestChangesResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionSubmissionSubmitted invokes actionSubmissionSubmitted operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> Submitted. -// -// POST /submissions/{SubmissionID}/status/validator-submitted -func (c *Client) ActionSubmissionSubmitted(ctx context.Context, params ActionSubmissionSubmittedParams) error { - _, err := c.sendActionSubmissionSubmitted(ctx, params) - return err -} - -func (c *Client) sendActionSubmissionSubmitted(ctx context.Context, params ActionSubmissionSubmittedParams) (res *ActionSubmissionSubmittedNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionSubmitted"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-submitted"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionSubmissionSubmittedOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/submissions/" - { - // Encode "SubmissionID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "SubmissionID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.SubmissionID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-submitted" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "ModelVersion" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ModelVersion", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int64ToString(params.ModelVersion)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "DisplayName" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "DisplayName", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.StringToString(params.DisplayName)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "Creator" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Creator", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.StringToString(params.Creator)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "GameID" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "GameID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int32ToString(params.GameID)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionSubmissionSubmittedResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionSubmissionUploaded invokes actionSubmissionUploaded operation. -// -// (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. -// -// POST /submissions/{SubmissionID}/status/validator-uploaded -func (c *Client) ActionSubmissionUploaded(ctx context.Context, params ActionSubmissionUploadedParams) error { - _, err := c.sendActionSubmissionUploaded(ctx, params) - return err -} - -func (c *Client) sendActionSubmissionUploaded(ctx context.Context, params ActionSubmissionUploadedParams) (res *ActionSubmissionUploadedNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionUploaded"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-uploaded"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionSubmissionUploadedOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/submissions/" - { - // Encode "SubmissionID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "SubmissionID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.SubmissionID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-uploaded" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "UploadedAssetID" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "UploadedAssetID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int64ToString(params.UploadedAssetID)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionSubmissionUploadedResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ActionSubmissionValidated invokes actionSubmissionValidated operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Validated. -// -// POST /submissions/{SubmissionID}/status/validator-validated -func (c *Client) ActionSubmissionValidated(ctx context.Context, params ActionSubmissionValidatedParams) error { - _, err := c.sendActionSubmissionValidated(ctx, params) - return err -} - -func (c *Client) sendActionSubmissionValidated(ctx context.Context, params ActionSubmissionValidatedParams) (res *ActionSubmissionValidatedNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionValidated"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-validated"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ActionSubmissionValidatedOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/submissions/" - { - // Encode "SubmissionID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "SubmissionID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.SubmissionID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/status/validator-validated" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeActionSubmissionValidatedResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// CreateMapfix invokes createMapfix operation. -// -// Create a mapfix. -// -// POST /mapfixes -func (c *Client) CreateMapfix(ctx context.Context, request *MapfixCreate) (*MapfixID, error) { - res, err := c.sendCreateMapfix(ctx, request) - return res, err -} - -func (c *Client) sendCreateMapfix(ctx context.Context, request *MapfixCreate) (res *MapfixID, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createMapfix"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, CreateMapfixOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [1]string - pathParts[0] = "/mapfixes" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - if err := encodeCreateMapfixRequest(request, r); err != nil { - return res, errors.Wrap(err, "encode request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeCreateMapfixResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// CreateMapfixAuditCheckList invokes createMapfixAuditCheckList operation. -// -// Validator posts a checklist to the audit log. -// -// POST /mapfixes/{MapfixID}/checklist -func (c *Client) CreateMapfixAuditCheckList(ctx context.Context, request CheckList, params CreateMapfixAuditCheckListParams) error { - _, err := c.sendCreateMapfixAuditCheckList(ctx, request, params) - return err -} - -func (c *Client) sendCreateMapfixAuditCheckList(ctx context.Context, request CheckList, params CreateMapfixAuditCheckListParams) (res *CreateMapfixAuditCheckListNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createMapfixAuditCheckList"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/checklist"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, CreateMapfixAuditCheckListOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/mapfixes/" - { - // Encode "MapfixID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "MapfixID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.MapfixID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/checklist" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - if err := encodeCreateMapfixAuditCheckListRequest(request, r); err != nil { - return res, errors.Wrap(err, "encode request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeCreateMapfixAuditCheckListResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// CreateMapfixAuditError invokes createMapfixAuditError operation. -// -// Validator posts an error to the audit log. -// -// POST /mapfixes/{MapfixID}/error -func (c *Client) CreateMapfixAuditError(ctx context.Context, params CreateMapfixAuditErrorParams) error { - _, err := c.sendCreateMapfixAuditError(ctx, params) - return err -} - -func (c *Client) sendCreateMapfixAuditError(ctx context.Context, params CreateMapfixAuditErrorParams) (res *CreateMapfixAuditErrorNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createMapfixAuditError"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/error"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, CreateMapfixAuditErrorOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/mapfixes/" - { - // Encode "MapfixID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "MapfixID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.MapfixID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/error" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "ErrorMessage" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ErrorMessage", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.StringToString(params.ErrorMessage)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeCreateMapfixAuditErrorResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// CreateScript invokes createScript operation. -// -// Create a new script. -// -// POST /scripts -func (c *Client) CreateScript(ctx context.Context, request *ScriptCreate) (*ScriptID, error) { - res, err := c.sendCreateScript(ctx, request) - return res, err -} - -func (c *Client) sendCreateScript(ctx context.Context, request *ScriptCreate) (res *ScriptID, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createScript"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/scripts"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, CreateScriptOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [1]string - pathParts[0] = "/scripts" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - if err := encodeCreateScriptRequest(request, r); err != nil { - return res, errors.Wrap(err, "encode request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeCreateScriptResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// CreateScriptPolicy invokes createScriptPolicy operation. -// -// Create a new script policy. -// -// POST /script-policy -func (c *Client) CreateScriptPolicy(ctx context.Context, request *ScriptPolicyCreate) (*ScriptPolicyID, error) { - res, err := c.sendCreateScriptPolicy(ctx, request) - return res, err -} - -func (c *Client) sendCreateScriptPolicy(ctx context.Context, request *ScriptPolicyCreate) (res *ScriptPolicyID, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createScriptPolicy"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/script-policy"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, CreateScriptPolicyOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [1]string - pathParts[0] = "/script-policy" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - if err := encodeCreateScriptPolicyRequest(request, r); err != nil { - return res, errors.Wrap(err, "encode request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeCreateScriptPolicyResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// CreateSubmission invokes createSubmission operation. -// -// Create a new submission. -// -// POST /submissions -func (c *Client) CreateSubmission(ctx context.Context, request *SubmissionCreate) (*SubmissionID, error) { - res, err := c.sendCreateSubmission(ctx, request) - return res, err -} - -func (c *Client) sendCreateSubmission(ctx context.Context, request *SubmissionCreate) (res *SubmissionID, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createSubmission"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, CreateSubmissionOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [1]string - pathParts[0] = "/submissions" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - if err := encodeCreateSubmissionRequest(request, r); err != nil { - return res, errors.Wrap(err, "encode request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeCreateSubmissionResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// CreateSubmissionAuditCheckList invokes createSubmissionAuditCheckList operation. -// -// Validator posts a checklist to the audit log. -// -// POST /submissions/{SubmissionID}/checklist -func (c *Client) CreateSubmissionAuditCheckList(ctx context.Context, request CheckList, params CreateSubmissionAuditCheckListParams) error { - _, err := c.sendCreateSubmissionAuditCheckList(ctx, request, params) - return err -} - -func (c *Client) sendCreateSubmissionAuditCheckList(ctx context.Context, request CheckList, params CreateSubmissionAuditCheckListParams) (res *CreateSubmissionAuditCheckListNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createSubmissionAuditCheckList"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/checklist"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, CreateSubmissionAuditCheckListOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/submissions/" - { - // Encode "SubmissionID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "SubmissionID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.SubmissionID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/checklist" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - if err := encodeCreateSubmissionAuditCheckListRequest(request, r); err != nil { - return res, errors.Wrap(err, "encode request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeCreateSubmissionAuditCheckListResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// CreateSubmissionAuditError invokes createSubmissionAuditError operation. -// -// Validator posts an error to the audit log. -// -// POST /submissions/{SubmissionID}/error -func (c *Client) CreateSubmissionAuditError(ctx context.Context, params CreateSubmissionAuditErrorParams) error { - _, err := c.sendCreateSubmissionAuditError(ctx, params) - return err -} - -func (c *Client) sendCreateSubmissionAuditError(ctx context.Context, params CreateSubmissionAuditErrorParams) (res *CreateSubmissionAuditErrorNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createSubmissionAuditError"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/error"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, CreateSubmissionAuditErrorOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/submissions/" - { - // Encode "SubmissionID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "SubmissionID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.SubmissionID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/error" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "ErrorMessage" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ErrorMessage", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.StringToString(params.ErrorMessage)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeCreateSubmissionAuditErrorResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// GetScript invokes getScript operation. -// -// Get the specified script by ID. -// -// GET /scripts/{ScriptID} -func (c *Client) GetScript(ctx context.Context, params GetScriptParams) (*Script, error) { - res, err := c.sendGetScript(ctx, params) - return res, err -} - -func (c *Client) sendGetScript(ctx context.Context, params GetScriptParams) (res *Script, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("getScript"), - semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/scripts/{ScriptID}"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, GetScriptOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [2]string - pathParts[0] = "/scripts/" - { - // Encode "ScriptID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "ScriptID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.ScriptID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "GET", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeGetScriptResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ListScriptPolicy invokes listScriptPolicy operation. -// -// Get list of script policies. -// -// GET /script-policy -func (c *Client) ListScriptPolicy(ctx context.Context, params ListScriptPolicyParams) ([]ScriptPolicy, error) { - res, err := c.sendListScriptPolicy(ctx, params) - return res, err -} - -func (c *Client) sendListScriptPolicy(ctx context.Context, params ListScriptPolicyParams) (res []ScriptPolicy, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("listScriptPolicy"), - semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/script-policy"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ListScriptPolicyOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [1]string - pathParts[0] = "/script-policy" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "Page" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Page", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int32ToString(params.Page)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "Limit" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Limit", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int32ToString(params.Limit)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "FromScriptHash" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "FromScriptHash", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.FromScriptHash.Get(); ok { - return e.EncodeValue(conv.StringToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "ToScriptID" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ToScriptID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.ToScriptID.Get(); ok { - return e.EncodeValue(conv.Int64ToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "Policy" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Policy", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.Policy.Get(); ok { - return e.EncodeValue(conv.Int32ToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "GET", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeListScriptPolicyResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// ListScripts invokes listScripts operation. -// -// Get list of scripts. -// -// GET /scripts -func (c *Client) ListScripts(ctx context.Context, params ListScriptsParams) ([]Script, error) { - res, err := c.sendListScripts(ctx, params) - return res, err -} - -func (c *Client) sendListScripts(ctx context.Context, params ListScriptsParams) (res []Script, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("listScripts"), - semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/scripts"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, ListScriptsOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [1]string - pathParts[0] = "/scripts" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "Page" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Page", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int32ToString(params.Page)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "Limit" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Limit", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int32ToString(params.Limit)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "Hash" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Hash", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.Hash.Get(); ok { - return e.EncodeValue(conv.StringToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "Name" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Name", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.Name.Get(); ok { - return e.EncodeValue(conv.StringToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "Source" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "Source", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.Source.Get(); ok { - return e.EncodeValue(conv.StringToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "ResourceType" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ResourceType", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.ResourceType.Get(); ok { - return e.EncodeValue(conv.Int32ToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "ResourceID" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ResourceID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - if val, ok := params.ResourceID.Get(); ok { - return e.EncodeValue(conv.Int64ToString(val)) - } - return nil - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "GET", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeListScriptsResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// UpdateMapfixValidatedModel invokes updateMapfixValidatedModel operation. -// -// Update validated model. -// -// POST /mapfixes/{MapfixID}/validated-model -func (c *Client) UpdateMapfixValidatedModel(ctx context.Context, params UpdateMapfixValidatedModelParams) error { - _, err := c.sendUpdateMapfixValidatedModel(ctx, params) - return err -} - -func (c *Client) sendUpdateMapfixValidatedModel(ctx context.Context, params UpdateMapfixValidatedModelParams) (res *UpdateMapfixValidatedModelNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("updateMapfixValidatedModel"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/validated-model"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, UpdateMapfixValidatedModelOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/mapfixes/" - { - // Encode "MapfixID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "MapfixID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.MapfixID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/validated-model" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "ValidatedModelID" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ValidatedModelID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int64ToString(params.ValidatedModelID)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "ValidatedModelVersion" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ValidatedModelVersion", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int64ToString(params.ValidatedModelVersion)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeUpdateMapfixValidatedModelResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - -// UpdateSubmissionValidatedModel invokes updateSubmissionValidatedModel operation. -// -// Update validated model. -// -// POST /submissions/{SubmissionID}/validated-model -func (c *Client) UpdateSubmissionValidatedModel(ctx context.Context, params UpdateSubmissionValidatedModelParams) error { - _, err := c.sendUpdateSubmissionValidatedModel(ctx, params) - return err -} - -func (c *Client) sendUpdateSubmissionValidatedModel(ctx context.Context, params UpdateSubmissionValidatedModelParams) (res *UpdateSubmissionValidatedModelNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("updateSubmissionValidatedModel"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/validated-model"), - } - - // Run stopwatch. - startTime := time.Now() - defer func() { - // Use floating point division here for higher precision (instead of Millisecond method). - elapsedDuration := time.Since(startTime) - c.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), metric.WithAttributes(otelAttrs...)) - }() - - // Increment request counter. - c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - - // Start a span for this request. - ctx, span := c.cfg.Tracer.Start(ctx, UpdateSubmissionValidatedModelOperation, - trace.WithAttributes(otelAttrs...), - clientSpanKind, - ) - // Track stage for error reporting. - var stage string - defer func() { - if err != nil { - span.RecordError(err) - span.SetStatus(codes.Error, stage) - c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) - } - span.End() - }() - - stage = "BuildURL" - u := uri.Clone(c.requestURL(ctx)) - var pathParts [3]string - pathParts[0] = "/submissions/" - { - // Encode "SubmissionID" parameter. - e := uri.NewPathEncoder(uri.PathEncoderConfig{ - Param: "SubmissionID", - Style: uri.PathStyleSimple, - Explode: false, - }) - if err := func() error { - return e.EncodeValue(conv.Int64ToString(params.SubmissionID)) - }(); err != nil { - return res, errors.Wrap(err, "encode path") - } - encoded, err := e.Result() - if err != nil { - return res, errors.Wrap(err, "encode path") - } - pathParts[1] = encoded - } - pathParts[2] = "/validated-model" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeQueryParams" - q := uri.NewQueryEncoder() - { - // Encode "ValidatedModelID" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ValidatedModelID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int64ToString(params.ValidatedModelID)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - { - // Encode "ValidatedModelVersion" parameter. - cfg := uri.QueryParameterEncodingConfig{ - Name: "ValidatedModelVersion", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.EncodeParam(cfg, func(e uri.Encoder) error { - return e.EncodeValue(conv.Int64ToString(params.ValidatedModelVersion)) - }); err != nil { - return res, errors.Wrap(err, "encode query") - } - } - u.RawQuery = q.Values().Encode() - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - stage = "SendRequest" - resp, err := c.cfg.Client.Do(r) - if err != nil { - return res, errors.Wrap(err, "do request") - } - defer resp.Body.Close() - - stage = "DecodeResponse" - result, err := decodeUpdateSubmissionValidatedModelResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} diff --git a/pkg/internal/oas_handlers_gen.go b/pkg/internal/oas_handlers_gen.go deleted file mode 100644 index fc18a64..0000000 --- a/pkg/internal/oas_handlers_gen.go +++ /dev/null @@ -1,3741 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "context" - "net/http" - "time" - - "github.com/go-faster/errors" - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/codes" - "go.opentelemetry.io/otel/metric" - semconv "go.opentelemetry.io/otel/semconv/v1.26.0" - "go.opentelemetry.io/otel/trace" - - ht "github.com/ogen-go/ogen/http" - "github.com/ogen-go/ogen/middleware" - "github.com/ogen-go/ogen/ogenerrors" - "github.com/ogen-go/ogen/otelogen" -) - -type codeRecorder struct { - http.ResponseWriter - status int -} - -func (c *codeRecorder) WriteHeader(status int) { - c.status = status - c.ResponseWriter.WriteHeader(status) -} - -// handleActionMapfixAcceptedRequest handles actionMapfixAccepted operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Accepted. -// -// POST /mapfixes/{MapfixID}/status/validator-failed -func (s *Server) handleActionMapfixAcceptedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixAccepted"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-failed"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionMapfixAcceptedOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionMapfixAcceptedOperation, - ID: "actionMapfixAccepted", - } - ) - params, err := decodeActionMapfixAcceptedParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionMapfixAcceptedNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionMapfixAcceptedOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Validating -> Accepted", - OperationID: "actionMapfixAccepted", - Body: nil, - Params: middleware.Parameters{ - { - Name: "MapfixID", - In: "path", - }: params.MapfixID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionMapfixAcceptedParams - Response = *ActionMapfixAcceptedNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionMapfixAcceptedParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionMapfixAccepted(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionMapfixAccepted(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionMapfixAcceptedResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionMapfixRequestChangesRequest handles actionMapfixRequestChanges operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. -// -// POST /mapfixes/{MapfixID}/status/validator-request-changes -func (s *Server) handleActionMapfixRequestChangesRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixRequestChanges"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-request-changes"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionMapfixRequestChangesOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionMapfixRequestChangesOperation, - ID: "actionMapfixRequestChanges", - } - ) - params, err := decodeActionMapfixRequestChangesParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionMapfixRequestChangesNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionMapfixRequestChangesOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested", - OperationID: "actionMapfixRequestChanges", - Body: nil, - Params: middleware.Parameters{ - { - Name: "MapfixID", - In: "path", - }: params.MapfixID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionMapfixRequestChangesParams - Response = *ActionMapfixRequestChangesNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionMapfixRequestChangesParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionMapfixRequestChanges(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionMapfixRequestChanges(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionMapfixRequestChangesResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionMapfixSubmittedRequest handles actionMapfixSubmitted operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> Submitted. -// -// POST /mapfixes/{MapfixID}/status/validator-submitted -func (s *Server) handleActionMapfixSubmittedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixSubmitted"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-submitted"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionMapfixSubmittedOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionMapfixSubmittedOperation, - ID: "actionMapfixSubmitted", - } - ) - params, err := decodeActionMapfixSubmittedParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionMapfixSubmittedNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionMapfixSubmittedOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Submitting -> Submitted", - OperationID: "actionMapfixSubmitted", - Body: nil, - Params: middleware.Parameters{ - { - Name: "MapfixID", - In: "path", - }: params.MapfixID, - { - Name: "ModelVersion", - In: "query", - }: params.ModelVersion, - { - Name: "DisplayName", - In: "query", - }: params.DisplayName, - { - Name: "Creator", - In: "query", - }: params.Creator, - { - Name: "GameID", - In: "query", - }: params.GameID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionMapfixSubmittedParams - Response = *ActionMapfixSubmittedNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionMapfixSubmittedParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionMapfixSubmitted(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionMapfixSubmitted(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionMapfixSubmittedResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionMapfixUploadedRequest handles actionMapfixUploaded operation. -// -// (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. -// -// POST /mapfixes/{MapfixID}/status/validator-uploaded -func (s *Server) handleActionMapfixUploadedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixUploaded"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-uploaded"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionMapfixUploadedOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionMapfixUploadedOperation, - ID: "actionMapfixUploaded", - } - ) - params, err := decodeActionMapfixUploadedParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionMapfixUploadedNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionMapfixUploadedOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Uploading -> Uploaded", - OperationID: "actionMapfixUploaded", - Body: nil, - Params: middleware.Parameters{ - { - Name: "MapfixID", - In: "path", - }: params.MapfixID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionMapfixUploadedParams - Response = *ActionMapfixUploadedNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionMapfixUploadedParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionMapfixUploaded(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionMapfixUploaded(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionMapfixUploadedResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionMapfixValidatedRequest handles actionMapfixValidated operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Validated. -// -// POST /mapfixes/{MapfixID}/status/validator-validated -func (s *Server) handleActionMapfixValidatedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixValidated"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/validator-validated"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionMapfixValidatedOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionMapfixValidatedOperation, - ID: "actionMapfixValidated", - } - ) - params, err := decodeActionMapfixValidatedParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionMapfixValidatedNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionMapfixValidatedOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Validating -> Validated", - OperationID: "actionMapfixValidated", - Body: nil, - Params: middleware.Parameters{ - { - Name: "MapfixID", - In: "path", - }: params.MapfixID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionMapfixValidatedParams - Response = *ActionMapfixValidatedNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionMapfixValidatedParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionMapfixValidated(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionMapfixValidated(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionMapfixValidatedResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionOperationFailedRequest handles actionOperationFailed operation. -// -// (Internal endpoint) Fail an operation and write a StatusMessage. -// -// POST /operations/{OperationID}/status/operation-failed -func (s *Server) handleActionOperationFailedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionOperationFailed"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/operations/{OperationID}/status/operation-failed"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionOperationFailedOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionOperationFailedOperation, - ID: "actionOperationFailed", - } - ) - params, err := decodeActionOperationFailedParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionOperationFailedNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionOperationFailedOperation, - OperationSummary: "(Internal endpoint) Fail an operation and write a StatusMessage", - OperationID: "actionOperationFailed", - Body: nil, - Params: middleware.Parameters{ - { - Name: "OperationID", - In: "path", - }: params.OperationID, - { - Name: "StatusMessage", - In: "query", - }: params.StatusMessage, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionOperationFailedParams - Response = *ActionOperationFailedNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionOperationFailedParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionOperationFailed(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionOperationFailed(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionOperationFailedResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionSubmissionAcceptedRequest handles actionSubmissionAccepted operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Accepted. -// -// POST /submissions/{SubmissionID}/status/validator-failed -func (s *Server) handleActionSubmissionAcceptedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionAccepted"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-failed"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionSubmissionAcceptedOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionSubmissionAcceptedOperation, - ID: "actionSubmissionAccepted", - } - ) - params, err := decodeActionSubmissionAcceptedParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionSubmissionAcceptedNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionSubmissionAcceptedOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Validating -> Accepted", - OperationID: "actionSubmissionAccepted", - Body: nil, - Params: middleware.Parameters{ - { - Name: "SubmissionID", - In: "path", - }: params.SubmissionID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionSubmissionAcceptedParams - Response = *ActionSubmissionAcceptedNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionSubmissionAcceptedParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionSubmissionAccepted(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionSubmissionAccepted(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionSubmissionAcceptedResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionSubmissionRequestChangesRequest handles actionSubmissionRequestChanges operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. -// -// POST /submissions/{SubmissionID}/status/validator-request-changes -func (s *Server) handleActionSubmissionRequestChangesRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionRequestChanges"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-request-changes"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionSubmissionRequestChangesOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionSubmissionRequestChangesOperation, - ID: "actionSubmissionRequestChanges", - } - ) - params, err := decodeActionSubmissionRequestChangesParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionSubmissionRequestChangesNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionSubmissionRequestChangesOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested", - OperationID: "actionSubmissionRequestChanges", - Body: nil, - Params: middleware.Parameters{ - { - Name: "SubmissionID", - In: "path", - }: params.SubmissionID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionSubmissionRequestChangesParams - Response = *ActionSubmissionRequestChangesNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionSubmissionRequestChangesParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionSubmissionRequestChanges(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionSubmissionRequestChanges(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionSubmissionRequestChangesResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionSubmissionSubmittedRequest handles actionSubmissionSubmitted operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> Submitted. -// -// POST /submissions/{SubmissionID}/status/validator-submitted -func (s *Server) handleActionSubmissionSubmittedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionSubmitted"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-submitted"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionSubmissionSubmittedOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionSubmissionSubmittedOperation, - ID: "actionSubmissionSubmitted", - } - ) - params, err := decodeActionSubmissionSubmittedParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionSubmissionSubmittedNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionSubmissionSubmittedOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Submitting -> Submitted", - OperationID: "actionSubmissionSubmitted", - Body: nil, - Params: middleware.Parameters{ - { - Name: "SubmissionID", - In: "path", - }: params.SubmissionID, - { - Name: "ModelVersion", - In: "query", - }: params.ModelVersion, - { - Name: "DisplayName", - In: "query", - }: params.DisplayName, - { - Name: "Creator", - In: "query", - }: params.Creator, - { - Name: "GameID", - In: "query", - }: params.GameID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionSubmissionSubmittedParams - Response = *ActionSubmissionSubmittedNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionSubmissionSubmittedParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionSubmissionSubmitted(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionSubmissionSubmitted(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionSubmissionSubmittedResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionSubmissionUploadedRequest handles actionSubmissionUploaded operation. -// -// (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. -// -// POST /submissions/{SubmissionID}/status/validator-uploaded -func (s *Server) handleActionSubmissionUploadedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionUploaded"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-uploaded"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionSubmissionUploadedOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionSubmissionUploadedOperation, - ID: "actionSubmissionUploaded", - } - ) - params, err := decodeActionSubmissionUploadedParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionSubmissionUploadedNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionSubmissionUploadedOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Uploading -> Uploaded", - OperationID: "actionSubmissionUploaded", - Body: nil, - Params: middleware.Parameters{ - { - Name: "SubmissionID", - In: "path", - }: params.SubmissionID, - { - Name: "UploadedAssetID", - In: "query", - }: params.UploadedAssetID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionSubmissionUploadedParams - Response = *ActionSubmissionUploadedNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionSubmissionUploadedParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionSubmissionUploaded(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionSubmissionUploaded(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionSubmissionUploadedResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleActionSubmissionValidatedRequest handles actionSubmissionValidated operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Validated. -// -// POST /submissions/{SubmissionID}/status/validator-validated -func (s *Server) handleActionSubmissionValidatedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionValidated"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/validator-validated"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionSubmissionValidatedOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ActionSubmissionValidatedOperation, - ID: "actionSubmissionValidated", - } - ) - params, err := decodeActionSubmissionValidatedParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *ActionSubmissionValidatedNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionSubmissionValidatedOperation, - OperationSummary: "(Internal endpoint) Role Validator changes status from Validating -> Validated", - OperationID: "actionSubmissionValidated", - Body: nil, - Params: middleware.Parameters{ - { - Name: "SubmissionID", - In: "path", - }: params.SubmissionID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionSubmissionValidatedParams - Response = *ActionSubmissionValidatedNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionSubmissionValidatedParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionSubmissionValidated(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionSubmissionValidated(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeActionSubmissionValidatedResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleCreateMapfixRequest handles createMapfix operation. -// -// Create a mapfix. -// -// POST /mapfixes -func (s *Server) handleCreateMapfixRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createMapfix"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), CreateMapfixOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: CreateMapfixOperation, - ID: "createMapfix", - } - ) - request, close, err := s.decodeCreateMapfixRequest(r) - if err != nil { - err = &ogenerrors.DecodeRequestError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeRequest", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - defer func() { - if err := close(); err != nil { - recordError("CloseRequest", err) - } - }() - - var response *MapfixID - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: CreateMapfixOperation, - OperationSummary: "Create a mapfix", - OperationID: "createMapfix", - Body: request, - Params: middleware.Parameters{}, - Raw: r, - } - - type ( - Request = *MapfixCreate - Params = struct{} - Response = *MapfixID - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - nil, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - response, err = s.h.CreateMapfix(ctx, request) - return response, err - }, - ) - } else { - response, err = s.h.CreateMapfix(ctx, request) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeCreateMapfixResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleCreateMapfixAuditCheckListRequest handles createMapfixAuditCheckList operation. -// -// Validator posts a checklist to the audit log. -// -// POST /mapfixes/{MapfixID}/checklist -func (s *Server) handleCreateMapfixAuditCheckListRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createMapfixAuditCheckList"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/checklist"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), CreateMapfixAuditCheckListOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: CreateMapfixAuditCheckListOperation, - ID: "createMapfixAuditCheckList", - } - ) - params, err := decodeCreateMapfixAuditCheckListParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - request, close, err := s.decodeCreateMapfixAuditCheckListRequest(r) - if err != nil { - err = &ogenerrors.DecodeRequestError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeRequest", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - defer func() { - if err := close(); err != nil { - recordError("CloseRequest", err) - } - }() - - var response *CreateMapfixAuditCheckListNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: CreateMapfixAuditCheckListOperation, - OperationSummary: "Validator posts a checklist to the audit log", - OperationID: "createMapfixAuditCheckList", - Body: request, - Params: middleware.Parameters{ - { - Name: "MapfixID", - In: "path", - }: params.MapfixID, - }, - Raw: r, - } - - type ( - Request = CheckList - Params = CreateMapfixAuditCheckListParams - Response = *CreateMapfixAuditCheckListNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackCreateMapfixAuditCheckListParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.CreateMapfixAuditCheckList(ctx, request, params) - return response, err - }, - ) - } else { - err = s.h.CreateMapfixAuditCheckList(ctx, request, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeCreateMapfixAuditCheckListResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleCreateMapfixAuditErrorRequest handles createMapfixAuditError operation. -// -// Validator posts an error to the audit log. -// -// POST /mapfixes/{MapfixID}/error -func (s *Server) handleCreateMapfixAuditErrorRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createMapfixAuditError"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/error"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), CreateMapfixAuditErrorOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: CreateMapfixAuditErrorOperation, - ID: "createMapfixAuditError", - } - ) - params, err := decodeCreateMapfixAuditErrorParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *CreateMapfixAuditErrorNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: CreateMapfixAuditErrorOperation, - OperationSummary: "Validator posts an error to the audit log", - OperationID: "createMapfixAuditError", - Body: nil, - Params: middleware.Parameters{ - { - Name: "MapfixID", - In: "path", - }: params.MapfixID, - { - Name: "ErrorMessage", - In: "query", - }: params.ErrorMessage, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = CreateMapfixAuditErrorParams - Response = *CreateMapfixAuditErrorNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackCreateMapfixAuditErrorParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.CreateMapfixAuditError(ctx, params) - return response, err - }, - ) - } else { - err = s.h.CreateMapfixAuditError(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeCreateMapfixAuditErrorResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleCreateScriptRequest handles createScript operation. -// -// Create a new script. -// -// POST /scripts -func (s *Server) handleCreateScriptRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createScript"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/scripts"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), CreateScriptOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: CreateScriptOperation, - ID: "createScript", - } - ) - request, close, err := s.decodeCreateScriptRequest(r) - if err != nil { - err = &ogenerrors.DecodeRequestError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeRequest", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - defer func() { - if err := close(); err != nil { - recordError("CloseRequest", err) - } - }() - - var response *ScriptID - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: CreateScriptOperation, - OperationSummary: "Create a new script", - OperationID: "createScript", - Body: request, - Params: middleware.Parameters{}, - Raw: r, - } - - type ( - Request = *ScriptCreate - Params = struct{} - Response = *ScriptID - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - nil, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - response, err = s.h.CreateScript(ctx, request) - return response, err - }, - ) - } else { - response, err = s.h.CreateScript(ctx, request) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeCreateScriptResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleCreateScriptPolicyRequest handles createScriptPolicy operation. -// -// Create a new script policy. -// -// POST /script-policy -func (s *Server) handleCreateScriptPolicyRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createScriptPolicy"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/script-policy"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), CreateScriptPolicyOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: CreateScriptPolicyOperation, - ID: "createScriptPolicy", - } - ) - request, close, err := s.decodeCreateScriptPolicyRequest(r) - if err != nil { - err = &ogenerrors.DecodeRequestError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeRequest", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - defer func() { - if err := close(); err != nil { - recordError("CloseRequest", err) - } - }() - - var response *ScriptPolicyID - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: CreateScriptPolicyOperation, - OperationSummary: "Create a new script policy", - OperationID: "createScriptPolicy", - Body: request, - Params: middleware.Parameters{}, - Raw: r, - } - - type ( - Request = *ScriptPolicyCreate - Params = struct{} - Response = *ScriptPolicyID - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - nil, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - response, err = s.h.CreateScriptPolicy(ctx, request) - return response, err - }, - ) - } else { - response, err = s.h.CreateScriptPolicy(ctx, request) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeCreateScriptPolicyResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleCreateSubmissionRequest handles createSubmission operation. -// -// Create a new submission. -// -// POST /submissions -func (s *Server) handleCreateSubmissionRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createSubmission"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), CreateSubmissionOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: CreateSubmissionOperation, - ID: "createSubmission", - } - ) - request, close, err := s.decodeCreateSubmissionRequest(r) - if err != nil { - err = &ogenerrors.DecodeRequestError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeRequest", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - defer func() { - if err := close(); err != nil { - recordError("CloseRequest", err) - } - }() - - var response *SubmissionID - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: CreateSubmissionOperation, - OperationSummary: "Create a new submission", - OperationID: "createSubmission", - Body: request, - Params: middleware.Parameters{}, - Raw: r, - } - - type ( - Request = *SubmissionCreate - Params = struct{} - Response = *SubmissionID - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - nil, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - response, err = s.h.CreateSubmission(ctx, request) - return response, err - }, - ) - } else { - response, err = s.h.CreateSubmission(ctx, request) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeCreateSubmissionResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleCreateSubmissionAuditCheckListRequest handles createSubmissionAuditCheckList operation. -// -// Validator posts a checklist to the audit log. -// -// POST /submissions/{SubmissionID}/checklist -func (s *Server) handleCreateSubmissionAuditCheckListRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createSubmissionAuditCheckList"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/checklist"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), CreateSubmissionAuditCheckListOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: CreateSubmissionAuditCheckListOperation, - ID: "createSubmissionAuditCheckList", - } - ) - params, err := decodeCreateSubmissionAuditCheckListParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - request, close, err := s.decodeCreateSubmissionAuditCheckListRequest(r) - if err != nil { - err = &ogenerrors.DecodeRequestError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeRequest", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - defer func() { - if err := close(); err != nil { - recordError("CloseRequest", err) - } - }() - - var response *CreateSubmissionAuditCheckListNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: CreateSubmissionAuditCheckListOperation, - OperationSummary: "Validator posts a checklist to the audit log", - OperationID: "createSubmissionAuditCheckList", - Body: request, - Params: middleware.Parameters{ - { - Name: "SubmissionID", - In: "path", - }: params.SubmissionID, - }, - Raw: r, - } - - type ( - Request = CheckList - Params = CreateSubmissionAuditCheckListParams - Response = *CreateSubmissionAuditCheckListNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackCreateSubmissionAuditCheckListParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.CreateSubmissionAuditCheckList(ctx, request, params) - return response, err - }, - ) - } else { - err = s.h.CreateSubmissionAuditCheckList(ctx, request, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeCreateSubmissionAuditCheckListResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleCreateSubmissionAuditErrorRequest handles createSubmissionAuditError operation. -// -// Validator posts an error to the audit log. -// -// POST /submissions/{SubmissionID}/error -func (s *Server) handleCreateSubmissionAuditErrorRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("createSubmissionAuditError"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/error"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), CreateSubmissionAuditErrorOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: CreateSubmissionAuditErrorOperation, - ID: "createSubmissionAuditError", - } - ) - params, err := decodeCreateSubmissionAuditErrorParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *CreateSubmissionAuditErrorNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: CreateSubmissionAuditErrorOperation, - OperationSummary: "Validator posts an error to the audit log", - OperationID: "createSubmissionAuditError", - Body: nil, - Params: middleware.Parameters{ - { - Name: "SubmissionID", - In: "path", - }: params.SubmissionID, - { - Name: "ErrorMessage", - In: "query", - }: params.ErrorMessage, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = CreateSubmissionAuditErrorParams - Response = *CreateSubmissionAuditErrorNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackCreateSubmissionAuditErrorParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.CreateSubmissionAuditError(ctx, params) - return response, err - }, - ) - } else { - err = s.h.CreateSubmissionAuditError(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeCreateSubmissionAuditErrorResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleGetScriptRequest handles getScript operation. -// -// Get the specified script by ID. -// -// GET /scripts/{ScriptID} -func (s *Server) handleGetScriptRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("getScript"), - semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/scripts/{ScriptID}"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), GetScriptOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: GetScriptOperation, - ID: "getScript", - } - ) - params, err := decodeGetScriptParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *Script - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: GetScriptOperation, - OperationSummary: "Get the specified script by ID", - OperationID: "getScript", - Body: nil, - Params: middleware.Parameters{ - { - Name: "ScriptID", - In: "path", - }: params.ScriptID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = GetScriptParams - Response = *Script - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackGetScriptParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - response, err = s.h.GetScript(ctx, params) - return response, err - }, - ) - } else { - response, err = s.h.GetScript(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeGetScriptResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleListScriptPolicyRequest handles listScriptPolicy operation. -// -// Get list of script policies. -// -// GET /script-policy -func (s *Server) handleListScriptPolicyRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("listScriptPolicy"), - semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/script-policy"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ListScriptPolicyOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ListScriptPolicyOperation, - ID: "listScriptPolicy", - } - ) - params, err := decodeListScriptPolicyParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response []ScriptPolicy - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ListScriptPolicyOperation, - OperationSummary: "Get list of script policies", - OperationID: "listScriptPolicy", - Body: nil, - Params: middleware.Parameters{ - { - Name: "Page", - In: "query", - }: params.Page, - { - Name: "Limit", - In: "query", - }: params.Limit, - { - Name: "FromScriptHash", - In: "query", - }: params.FromScriptHash, - { - Name: "ToScriptID", - In: "query", - }: params.ToScriptID, - { - Name: "Policy", - In: "query", - }: params.Policy, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ListScriptPolicyParams - Response = []ScriptPolicy - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackListScriptPolicyParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - response, err = s.h.ListScriptPolicy(ctx, params) - return response, err - }, - ) - } else { - response, err = s.h.ListScriptPolicy(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeListScriptPolicyResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleListScriptsRequest handles listScripts operation. -// -// Get list of scripts. -// -// GET /scripts -func (s *Server) handleListScriptsRequest(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("listScripts"), - semconv.HTTPRequestMethodKey.String("GET"), - semconv.HTTPRouteKey.String("/scripts"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ListScriptsOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: ListScriptsOperation, - ID: "listScripts", - } - ) - params, err := decodeListScriptsParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response []Script - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ListScriptsOperation, - OperationSummary: "Get list of scripts", - OperationID: "listScripts", - Body: nil, - Params: middleware.Parameters{ - { - Name: "Page", - In: "query", - }: params.Page, - { - Name: "Limit", - In: "query", - }: params.Limit, - { - Name: "Hash", - In: "query", - }: params.Hash, - { - Name: "Name", - In: "query", - }: params.Name, - { - Name: "Source", - In: "query", - }: params.Source, - { - Name: "ResourceType", - In: "query", - }: params.ResourceType, - { - Name: "ResourceID", - In: "query", - }: params.ResourceID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ListScriptsParams - Response = []Script - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackListScriptsParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - response, err = s.h.ListScripts(ctx, params) - return response, err - }, - ) - } else { - response, err = s.h.ListScripts(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeListScriptsResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleUpdateMapfixValidatedModelRequest handles updateMapfixValidatedModel operation. -// -// Update validated model. -// -// POST /mapfixes/{MapfixID}/validated-model -func (s *Server) handleUpdateMapfixValidatedModelRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("updateMapfixValidatedModel"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/validated-model"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), UpdateMapfixValidatedModelOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: UpdateMapfixValidatedModelOperation, - ID: "updateMapfixValidatedModel", - } - ) - params, err := decodeUpdateMapfixValidatedModelParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *UpdateMapfixValidatedModelNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: UpdateMapfixValidatedModelOperation, - OperationSummary: "Update validated model", - OperationID: "updateMapfixValidatedModel", - Body: nil, - Params: middleware.Parameters{ - { - Name: "MapfixID", - In: "path", - }: params.MapfixID, - { - Name: "ValidatedModelID", - In: "query", - }: params.ValidatedModelID, - { - Name: "ValidatedModelVersion", - In: "query", - }: params.ValidatedModelVersion, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = UpdateMapfixValidatedModelParams - Response = *UpdateMapfixValidatedModelNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackUpdateMapfixValidatedModelParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.UpdateMapfixValidatedModel(ctx, params) - return response, err - }, - ) - } else { - err = s.h.UpdateMapfixValidatedModel(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeUpdateMapfixValidatedModelResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - -// handleUpdateSubmissionValidatedModelRequest handles updateSubmissionValidatedModel operation. -// -// Update validated model. -// -// POST /submissions/{SubmissionID}/validated-model -func (s *Server) handleUpdateSubmissionValidatedModelRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("updateSubmissionValidatedModel"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/validated-model"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), UpdateSubmissionValidatedModelOperation, - trace.WithAttributes(otelAttrs...), - serverSpanKind, - ) - defer span.End() - - // Add Labeler to context. - labeler := &Labeler{attrs: otelAttrs} - ctx = contextWithLabeler(ctx, labeler) - - // Run stopwatch. - startTime := time.Now() - defer func() { - elapsedDuration := time.Since(startTime) - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - code := statusWriter.status - if code != 0 { - codeAttr := semconv.HTTPResponseStatusCode(code) - attrs = append(attrs, codeAttr) - span.SetAttributes(codeAttr) - } - attrOpt := metric.WithAttributes(attrs...) - - // Increment request counter. - s.requests.Add(ctx, 1, attrOpt) - - // Use floating point division here for higher precision (instead of Millisecond method). - s.duration.Record(ctx, float64(elapsedDuration)/float64(time.Millisecond), attrOpt) - }() - - var ( - recordError = func(stage string, err error) { - span.RecordError(err) - - // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status - // Span Status MUST be left unset if HTTP status code was in the 1xx, 2xx or 3xx ranges, - // unless there was another error (e.g., network error receiving the response body; or 3xx codes with - // max redirects exceeded), in which case status MUST be set to Error. - code := statusWriter.status - if code >= 100 && code < 500 { - span.SetStatus(codes.Error, stage) - } - - attrSet := labeler.AttributeSet() - attrs := attrSet.ToSlice() - if code != 0 { - attrs = append(attrs, semconv.HTTPResponseStatusCode(code)) - } - - s.errors.Add(ctx, 1, metric.WithAttributes(attrs...)) - } - err error - opErrContext = ogenerrors.OperationContext{ - Name: UpdateSubmissionValidatedModelOperation, - ID: "updateSubmissionValidatedModel", - } - ) - params, err := decodeUpdateSubmissionValidatedModelParams(args, argsEscaped, r) - if err != nil { - err = &ogenerrors.DecodeParamsError{ - OperationContext: opErrContext, - Err: err, - } - defer recordError("DecodeParams", err) - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - - var response *UpdateSubmissionValidatedModelNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: UpdateSubmissionValidatedModelOperation, - OperationSummary: "Update validated model", - OperationID: "updateSubmissionValidatedModel", - Body: nil, - Params: middleware.Parameters{ - { - Name: "SubmissionID", - In: "path", - }: params.SubmissionID, - { - Name: "ValidatedModelID", - In: "query", - }: params.ValidatedModelID, - { - Name: "ValidatedModelVersion", - In: "query", - }: params.ValidatedModelVersion, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = UpdateSubmissionValidatedModelParams - Response = *UpdateSubmissionValidatedModelNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackUpdateSubmissionValidatedModelParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.UpdateSubmissionValidatedModel(ctx, params) - return response, err - }, - ) - } else { - err = s.h.UpdateSubmissionValidatedModel(ctx, params) - } - if err != nil { - if errRes, ok := errors.Into[*ErrorStatusCode](err); ok { - if err := encodeErrorResponse(errRes, w, span); err != nil { - defer recordError("Internal", err) - } - return - } - if errors.Is(err, ht.ErrNotImplemented) { - s.cfg.ErrorHandler(ctx, w, r, err) - return - } - if err := encodeErrorResponse(s.h.NewError(ctx, err), w, span); err != nil { - defer recordError("Internal", err) - } - return - } - - if err := encodeUpdateSubmissionValidatedModelResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} diff --git a/pkg/internal/oas_json_gen.go b/pkg/internal/oas_json_gen.go deleted file mode 100644 index 4f95e1c..0000000 --- a/pkg/internal/oas_json_gen.go +++ /dev/null @@ -1,1796 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "math/bits" - "strconv" - - "github.com/go-faster/errors" - "github.com/go-faster/jx" - - "github.com/ogen-go/ogen/validate" -) - -// Encode implements json.Marshaler. -func (s *Check) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *Check) encodeFields(e *jx.Encoder) { - { - e.FieldStart("Name") - e.Str(s.Name) - } - { - e.FieldStart("Summary") - e.Str(s.Summary) - } - { - e.FieldStart("Passed") - e.Bool(s.Passed) - } -} - -var jsonFieldsNameOfCheck = [3]string{ - 0: "Name", - 1: "Summary", - 2: "Passed", -} - -// Decode decodes Check from json. -func (s *Check) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode Check to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "Name": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Str() - s.Name = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Name\"") - } - case "Summary": - requiredBitSet[0] |= 1 << 1 - if err := func() error { - v, err := d.Str() - s.Summary = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Summary\"") - } - case "Passed": - requiredBitSet[0] |= 1 << 2 - if err := func() error { - v, err := d.Bool() - s.Passed = bool(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Passed\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode Check") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00000111, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfCheck) { - name = jsonFieldsNameOfCheck[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *Check) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *Check) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode encodes CheckList as json. -func (s CheckList) Encode(e *jx.Encoder) { - unwrapped := []Check(s) - - e.ArrStart() - for _, elem := range unwrapped { - elem.Encode(e) - } - e.ArrEnd() -} - -// Decode decodes CheckList from json. -func (s *CheckList) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode CheckList to nil") - } - var unwrapped []Check - if err := func() error { - unwrapped = make([]Check, 0) - if err := d.Arr(func(d *jx.Decoder) error { - var elem Check - if err := elem.Decode(d); err != nil { - return err - } - unwrapped = append(unwrapped, elem) - return nil - }); err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "alias") - } - *s = CheckList(unwrapped) - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s CheckList) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *CheckList) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *Error) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *Error) encodeFields(e *jx.Encoder) { - { - e.FieldStart("code") - e.Int64(s.Code) - } - { - e.FieldStart("message") - e.Str(s.Message) - } -} - -var jsonFieldsNameOfError = [2]string{ - 0: "code", - 1: "message", -} - -// Decode decodes Error from json. -func (s *Error) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode Error to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "code": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.Code = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"code\"") - } - case "message": - requiredBitSet[0] |= 1 << 1 - if err := func() error { - v, err := d.Str() - s.Message = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"message\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode Error") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00000011, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfError) { - name = jsonFieldsNameOfError[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *Error) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *Error) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *MapfixCreate) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *MapfixCreate) encodeFields(e *jx.Encoder) { - { - e.FieldStart("OperationID") - e.Int32(s.OperationID) - } - { - e.FieldStart("AssetOwner") - e.Int64(s.AssetOwner) - } - { - e.FieldStart("DisplayName") - e.Str(s.DisplayName) - } - { - e.FieldStart("Creator") - e.Str(s.Creator) - } - { - e.FieldStart("GameID") - e.Int32(s.GameID) - } - { - e.FieldStart("AssetID") - e.Int64(s.AssetID) - } - { - e.FieldStart("AssetVersion") - e.Int64(s.AssetVersion) - } - { - e.FieldStart("TargetAssetID") - e.Int64(s.TargetAssetID) - } - { - e.FieldStart("Description") - e.Str(s.Description) - } -} - -var jsonFieldsNameOfMapfixCreate = [9]string{ - 0: "OperationID", - 1: "AssetOwner", - 2: "DisplayName", - 3: "Creator", - 4: "GameID", - 5: "AssetID", - 6: "AssetVersion", - 7: "TargetAssetID", - 8: "Description", -} - -// Decode decodes MapfixCreate from json. -func (s *MapfixCreate) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode MapfixCreate to nil") - } - var requiredBitSet [2]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "OperationID": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int32() - s.OperationID = int32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"OperationID\"") - } - case "AssetOwner": - requiredBitSet[0] |= 1 << 1 - if err := func() error { - v, err := d.Int64() - s.AssetOwner = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"AssetOwner\"") - } - case "DisplayName": - requiredBitSet[0] |= 1 << 2 - if err := func() error { - v, err := d.Str() - s.DisplayName = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"DisplayName\"") - } - case "Creator": - requiredBitSet[0] |= 1 << 3 - if err := func() error { - v, err := d.Str() - s.Creator = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Creator\"") - } - case "GameID": - requiredBitSet[0] |= 1 << 4 - if err := func() error { - v, err := d.Int32() - s.GameID = int32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"GameID\"") - } - case "AssetID": - requiredBitSet[0] |= 1 << 5 - if err := func() error { - v, err := d.Int64() - s.AssetID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"AssetID\"") - } - case "AssetVersion": - requiredBitSet[0] |= 1 << 6 - if err := func() error { - v, err := d.Int64() - s.AssetVersion = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"AssetVersion\"") - } - case "TargetAssetID": - requiredBitSet[0] |= 1 << 7 - if err := func() error { - v, err := d.Int64() - s.TargetAssetID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"TargetAssetID\"") - } - case "Description": - requiredBitSet[1] |= 1 << 0 - if err := func() error { - v, err := d.Str() - s.Description = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Description\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode MapfixCreate") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [2]uint8{ - 0b11111111, - 0b00000001, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfMapfixCreate) { - name = jsonFieldsNameOfMapfixCreate[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *MapfixCreate) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *MapfixCreate) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *MapfixID) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *MapfixID) encodeFields(e *jx.Encoder) { - { - e.FieldStart("MapfixID") - e.Int64(s.MapfixID) - } -} - -var jsonFieldsNameOfMapfixID = [1]string{ - 0: "MapfixID", -} - -// Decode decodes MapfixID from json. -func (s *MapfixID) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode MapfixID to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "MapfixID": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.MapfixID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"MapfixID\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode MapfixID") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00000001, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfMapfixID) { - name = jsonFieldsNameOfMapfixID[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *MapfixID) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *MapfixID) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode encodes int64 as json. -func (o OptInt64) Encode(e *jx.Encoder) { - if !o.Set { - return - } - e.Int64(int64(o.Value)) -} - -// Decode decodes int64 from json. -func (o *OptInt64) Decode(d *jx.Decoder) error { - if o == nil { - return errors.New("invalid: unable to decode OptInt64 to nil") - } - o.Set = true - v, err := d.Int64() - if err != nil { - return err - } - o.Value = int64(v) - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s OptInt64) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptInt64) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *Script) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *Script) encodeFields(e *jx.Encoder) { - { - e.FieldStart("ID") - e.Int64(s.ID) - } - { - e.FieldStart("Name") - e.Str(s.Name) - } - { - e.FieldStart("Hash") - e.Str(s.Hash) - } - { - e.FieldStart("Source") - e.Str(s.Source) - } - { - e.FieldStart("ResourceType") - e.Int32(s.ResourceType) - } - { - e.FieldStart("ResourceID") - e.Int64(s.ResourceID) - } -} - -var jsonFieldsNameOfScript = [6]string{ - 0: "ID", - 1: "Name", - 2: "Hash", - 3: "Source", - 4: "ResourceType", - 5: "ResourceID", -} - -// Decode decodes Script from json. -func (s *Script) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode Script to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "ID": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.ID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ID\"") - } - case "Name": - requiredBitSet[0] |= 1 << 1 - if err := func() error { - v, err := d.Str() - s.Name = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Name\"") - } - case "Hash": - requiredBitSet[0] |= 1 << 2 - if err := func() error { - v, err := d.Str() - s.Hash = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Hash\"") - } - case "Source": - requiredBitSet[0] |= 1 << 3 - if err := func() error { - v, err := d.Str() - s.Source = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Source\"") - } - case "ResourceType": - requiredBitSet[0] |= 1 << 4 - if err := func() error { - v, err := d.Int32() - s.ResourceType = int32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ResourceType\"") - } - case "ResourceID": - requiredBitSet[0] |= 1 << 5 - if err := func() error { - v, err := d.Int64() - s.ResourceID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ResourceID\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode Script") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00111111, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfScript) { - name = jsonFieldsNameOfScript[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *Script) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *Script) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *ScriptCreate) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *ScriptCreate) encodeFields(e *jx.Encoder) { - { - e.FieldStart("Name") - e.Str(s.Name) - } - { - e.FieldStart("Source") - e.Str(s.Source) - } - { - e.FieldStart("ResourceType") - e.Int32(s.ResourceType) - } - { - if s.ResourceID.Set { - e.FieldStart("ResourceID") - s.ResourceID.Encode(e) - } - } -} - -var jsonFieldsNameOfScriptCreate = [4]string{ - 0: "Name", - 1: "Source", - 2: "ResourceType", - 3: "ResourceID", -} - -// Decode decodes ScriptCreate from json. -func (s *ScriptCreate) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode ScriptCreate to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "Name": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Str() - s.Name = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Name\"") - } - case "Source": - requiredBitSet[0] |= 1 << 1 - if err := func() error { - v, err := d.Str() - s.Source = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Source\"") - } - case "ResourceType": - requiredBitSet[0] |= 1 << 2 - if err := func() error { - v, err := d.Int32() - s.ResourceType = int32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ResourceType\"") - } - case "ResourceID": - if err := func() error { - s.ResourceID.Reset() - if err := s.ResourceID.Decode(d); err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ResourceID\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode ScriptCreate") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00000111, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfScriptCreate) { - name = jsonFieldsNameOfScriptCreate[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *ScriptCreate) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *ScriptCreate) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *ScriptID) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *ScriptID) encodeFields(e *jx.Encoder) { - { - e.FieldStart("ScriptID") - e.Int64(s.ScriptID) - } -} - -var jsonFieldsNameOfScriptID = [1]string{ - 0: "ScriptID", -} - -// Decode decodes ScriptID from json. -func (s *ScriptID) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode ScriptID to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "ScriptID": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.ScriptID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ScriptID\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode ScriptID") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00000001, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfScriptID) { - name = jsonFieldsNameOfScriptID[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *ScriptID) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *ScriptID) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *ScriptPolicy) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *ScriptPolicy) encodeFields(e *jx.Encoder) { - { - e.FieldStart("ID") - e.Int64(s.ID) - } - { - e.FieldStart("FromScriptHash") - e.Str(s.FromScriptHash) - } - { - e.FieldStart("ToScriptID") - e.Int64(s.ToScriptID) - } - { - e.FieldStart("Policy") - e.Int32(s.Policy) - } -} - -var jsonFieldsNameOfScriptPolicy = [4]string{ - 0: "ID", - 1: "FromScriptHash", - 2: "ToScriptID", - 3: "Policy", -} - -// Decode decodes ScriptPolicy from json. -func (s *ScriptPolicy) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode ScriptPolicy to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "ID": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.ID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ID\"") - } - case "FromScriptHash": - requiredBitSet[0] |= 1 << 1 - if err := func() error { - v, err := d.Str() - s.FromScriptHash = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"FromScriptHash\"") - } - case "ToScriptID": - requiredBitSet[0] |= 1 << 2 - if err := func() error { - v, err := d.Int64() - s.ToScriptID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ToScriptID\"") - } - case "Policy": - requiredBitSet[0] |= 1 << 3 - if err := func() error { - v, err := d.Int32() - s.Policy = int32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Policy\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode ScriptPolicy") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00001111, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfScriptPolicy) { - name = jsonFieldsNameOfScriptPolicy[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *ScriptPolicy) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *ScriptPolicy) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *ScriptPolicyCreate) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *ScriptPolicyCreate) encodeFields(e *jx.Encoder) { - { - e.FieldStart("FromScriptID") - e.Int64(s.FromScriptID) - } - { - e.FieldStart("ToScriptID") - e.Int64(s.ToScriptID) - } - { - e.FieldStart("Policy") - e.Int32(s.Policy) - } -} - -var jsonFieldsNameOfScriptPolicyCreate = [3]string{ - 0: "FromScriptID", - 1: "ToScriptID", - 2: "Policy", -} - -// Decode decodes ScriptPolicyCreate from json. -func (s *ScriptPolicyCreate) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode ScriptPolicyCreate to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "FromScriptID": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.FromScriptID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"FromScriptID\"") - } - case "ToScriptID": - requiredBitSet[0] |= 1 << 1 - if err := func() error { - v, err := d.Int64() - s.ToScriptID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ToScriptID\"") - } - case "Policy": - requiredBitSet[0] |= 1 << 2 - if err := func() error { - v, err := d.Int32() - s.Policy = int32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Policy\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode ScriptPolicyCreate") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00000111, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfScriptPolicyCreate) { - name = jsonFieldsNameOfScriptPolicyCreate[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *ScriptPolicyCreate) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *ScriptPolicyCreate) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *ScriptPolicyID) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *ScriptPolicyID) encodeFields(e *jx.Encoder) { - { - e.FieldStart("ScriptPolicyID") - e.Int64(s.ScriptPolicyID) - } -} - -var jsonFieldsNameOfScriptPolicyID = [1]string{ - 0: "ScriptPolicyID", -} - -// Decode decodes ScriptPolicyID from json. -func (s *ScriptPolicyID) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode ScriptPolicyID to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "ScriptPolicyID": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.ScriptPolicyID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"ScriptPolicyID\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode ScriptPolicyID") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00000001, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfScriptPolicyID) { - name = jsonFieldsNameOfScriptPolicyID[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *ScriptPolicyID) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *ScriptPolicyID) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *SubmissionCreate) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *SubmissionCreate) encodeFields(e *jx.Encoder) { - { - e.FieldStart("OperationID") - e.Int32(s.OperationID) - } - { - e.FieldStart("AssetOwner") - e.Int64(s.AssetOwner) - } - { - e.FieldStart("DisplayName") - e.Str(s.DisplayName) - } - { - e.FieldStart("Creator") - e.Str(s.Creator) - } - { - e.FieldStart("GameID") - e.Int32(s.GameID) - } - { - e.FieldStart("AssetID") - e.Int64(s.AssetID) - } - { - e.FieldStart("AssetVersion") - e.Int64(s.AssetVersion) - } - { - e.FieldStart("Status") - e.UInt32(s.Status) - } - { - e.FieldStart("Roles") - e.UInt32(s.Roles) - } -} - -var jsonFieldsNameOfSubmissionCreate = [9]string{ - 0: "OperationID", - 1: "AssetOwner", - 2: "DisplayName", - 3: "Creator", - 4: "GameID", - 5: "AssetID", - 6: "AssetVersion", - 7: "Status", - 8: "Roles", -} - -// Decode decodes SubmissionCreate from json. -func (s *SubmissionCreate) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode SubmissionCreate to nil") - } - var requiredBitSet [2]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "OperationID": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int32() - s.OperationID = int32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"OperationID\"") - } - case "AssetOwner": - requiredBitSet[0] |= 1 << 1 - if err := func() error { - v, err := d.Int64() - s.AssetOwner = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"AssetOwner\"") - } - case "DisplayName": - requiredBitSet[0] |= 1 << 2 - if err := func() error { - v, err := d.Str() - s.DisplayName = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"DisplayName\"") - } - case "Creator": - requiredBitSet[0] |= 1 << 3 - if err := func() error { - v, err := d.Str() - s.Creator = string(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Creator\"") - } - case "GameID": - requiredBitSet[0] |= 1 << 4 - if err := func() error { - v, err := d.Int32() - s.GameID = int32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"GameID\"") - } - case "AssetID": - requiredBitSet[0] |= 1 << 5 - if err := func() error { - v, err := d.Int64() - s.AssetID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"AssetID\"") - } - case "AssetVersion": - requiredBitSet[0] |= 1 << 6 - if err := func() error { - v, err := d.Int64() - s.AssetVersion = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"AssetVersion\"") - } - case "Status": - requiredBitSet[0] |= 1 << 7 - if err := func() error { - v, err := d.UInt32() - s.Status = uint32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Status\"") - } - case "Roles": - requiredBitSet[1] |= 1 << 0 - if err := func() error { - v, err := d.UInt32() - s.Roles = uint32(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"Roles\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode SubmissionCreate") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [2]uint8{ - 0b11111111, - 0b00000001, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfSubmissionCreate) { - name = jsonFieldsNameOfSubmissionCreate[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *SubmissionCreate) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *SubmissionCreate) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} - -// Encode implements json.Marshaler. -func (s *SubmissionID) Encode(e *jx.Encoder) { - e.ObjStart() - s.encodeFields(e) - e.ObjEnd() -} - -// encodeFields encodes fields. -func (s *SubmissionID) encodeFields(e *jx.Encoder) { - { - e.FieldStart("SubmissionID") - e.Int64(s.SubmissionID) - } -} - -var jsonFieldsNameOfSubmissionID = [1]string{ - 0: "SubmissionID", -} - -// Decode decodes SubmissionID from json. -func (s *SubmissionID) Decode(d *jx.Decoder) error { - if s == nil { - return errors.New("invalid: unable to decode SubmissionID to nil") - } - var requiredBitSet [1]uint8 - - if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - case "SubmissionID": - requiredBitSet[0] |= 1 << 0 - if err := func() error { - v, err := d.Int64() - s.SubmissionID = int64(v) - if err != nil { - return err - } - return nil - }(); err != nil { - return errors.Wrap(err, "decode field \"SubmissionID\"") - } - default: - return d.Skip() - } - return nil - }); err != nil { - return errors.Wrap(err, "decode SubmissionID") - } - // Validate required fields. - var failures []validate.FieldError - for i, mask := range [1]uint8{ - 0b00000001, - } { - if result := (requiredBitSet[i] & mask) ^ mask; result != 0 { - // Mask only required fields and check equality to mask using XOR. - // - // If XOR result is not zero, result is not equal to expected, so some fields are missed. - // Bits of fields which would be set are actually bits of missed fields. - missed := bits.OnesCount8(result) - for bitN := 0; bitN < missed; bitN++ { - bitIdx := bits.TrailingZeros8(result) - fieldIdx := i*8 + bitIdx - var name string - if fieldIdx < len(jsonFieldsNameOfSubmissionID) { - name = jsonFieldsNameOfSubmissionID[fieldIdx] - } else { - name = strconv.Itoa(fieldIdx) - } - failures = append(failures, validate.FieldError{ - Name: name, - Error: validate.ErrFieldRequired, - }) - // Reset bit. - result &^= 1 << bitIdx - } - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - - return nil -} - -// MarshalJSON implements stdjson.Marshaler. -func (s *SubmissionID) MarshalJSON() ([]byte, error) { - e := jx.Encoder{} - s.Encode(&e) - return e.Bytes(), nil -} - -// UnmarshalJSON implements stdjson.Unmarshaler. -func (s *SubmissionID) UnmarshalJSON(data []byte) error { - d := jx.DecodeBytes(data) - return s.Decode(d) -} diff --git a/pkg/internal/oas_labeler_gen.go b/pkg/internal/oas_labeler_gen.go deleted file mode 100644 index 7e519e8..0000000 --- a/pkg/internal/oas_labeler_gen.go +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "context" - - "go.opentelemetry.io/otel/attribute" -) - -// Labeler is used to allow adding custom attributes to the server request metrics. -type Labeler struct { - attrs []attribute.KeyValue -} - -// Add attributes to the Labeler. -func (l *Labeler) Add(attrs ...attribute.KeyValue) { - l.attrs = append(l.attrs, attrs...) -} - -// AttributeSet returns the attributes added to the Labeler as an attribute.Set. -func (l *Labeler) AttributeSet() attribute.Set { - return attribute.NewSet(l.attrs...) -} - -type labelerContextKey struct{} - -// LabelerFromContext retrieves the Labeler from the provided context, if present. -// -// If no Labeler was found in the provided context a new, empty Labeler is returned and the second -// return value is false. In this case it is safe to use the Labeler but any attributes added to -// it will not be used. -func LabelerFromContext(ctx context.Context) (*Labeler, bool) { - if l, ok := ctx.Value(labelerContextKey{}).(*Labeler); ok { - return l, true - } - return &Labeler{}, false -} - -func contextWithLabeler(ctx context.Context, l *Labeler) context.Context { - return context.WithValue(ctx, labelerContextKey{}, l) -} diff --git a/pkg/internal/oas_middleware_gen.go b/pkg/internal/oas_middleware_gen.go deleted file mode 100644 index 6f58a1a..0000000 --- a/pkg/internal/oas_middleware_gen.go +++ /dev/null @@ -1,10 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "github.com/ogen-go/ogen/middleware" -) - -// Middleware is middleware type. -type Middleware = middleware.Middleware diff --git a/pkg/internal/oas_operations_gen.go b/pkg/internal/oas_operations_gen.go deleted file mode 100644 index a789b23..0000000 --- a/pkg/internal/oas_operations_gen.go +++ /dev/null @@ -1,33 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -// OperationName is the ogen operation name -type OperationName = string - -const ( - ActionMapfixAcceptedOperation OperationName = "ActionMapfixAccepted" - ActionMapfixRequestChangesOperation OperationName = "ActionMapfixRequestChanges" - ActionMapfixSubmittedOperation OperationName = "ActionMapfixSubmitted" - ActionMapfixUploadedOperation OperationName = "ActionMapfixUploaded" - ActionMapfixValidatedOperation OperationName = "ActionMapfixValidated" - ActionOperationFailedOperation OperationName = "ActionOperationFailed" - ActionSubmissionAcceptedOperation OperationName = "ActionSubmissionAccepted" - ActionSubmissionRequestChangesOperation OperationName = "ActionSubmissionRequestChanges" - ActionSubmissionSubmittedOperation OperationName = "ActionSubmissionSubmitted" - ActionSubmissionUploadedOperation OperationName = "ActionSubmissionUploaded" - ActionSubmissionValidatedOperation OperationName = "ActionSubmissionValidated" - CreateMapfixOperation OperationName = "CreateMapfix" - CreateMapfixAuditCheckListOperation OperationName = "CreateMapfixAuditCheckList" - CreateMapfixAuditErrorOperation OperationName = "CreateMapfixAuditError" - CreateScriptOperation OperationName = "CreateScript" - CreateScriptPolicyOperation OperationName = "CreateScriptPolicy" - CreateSubmissionOperation OperationName = "CreateSubmission" - CreateSubmissionAuditCheckListOperation OperationName = "CreateSubmissionAuditCheckList" - CreateSubmissionAuditErrorOperation OperationName = "CreateSubmissionAuditError" - GetScriptOperation OperationName = "GetScript" - ListScriptPolicyOperation OperationName = "ListScriptPolicy" - ListScriptsOperation OperationName = "ListScripts" - UpdateMapfixValidatedModelOperation OperationName = "UpdateMapfixValidatedModel" - UpdateSubmissionValidatedModelOperation OperationName = "UpdateSubmissionValidatedModel" -) diff --git a/pkg/internal/oas_parameters_gen.go b/pkg/internal/oas_parameters_gen.go deleted file mode 100644 index 7194603..0000000 --- a/pkg/internal/oas_parameters_gen.go +++ /dev/null @@ -1,3353 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "net/http" - "net/url" - - "github.com/go-faster/errors" - - "github.com/ogen-go/ogen/conv" - "github.com/ogen-go/ogen/middleware" - "github.com/ogen-go/ogen/ogenerrors" - "github.com/ogen-go/ogen/uri" - "github.com/ogen-go/ogen/validate" -) - -// ActionMapfixAcceptedParams is parameters of actionMapfixAccepted operation. -type ActionMapfixAcceptedParams struct { - // The unique identifier for a submission. - MapfixID int64 -} - -func unpackActionMapfixAcceptedParams(packed middleware.Parameters) (params ActionMapfixAcceptedParams) { - { - key := middleware.ParameterKey{ - Name: "MapfixID", - In: "path", - } - params.MapfixID = packed[key].(int64) - } - return params -} - -func decodeActionMapfixAcceptedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionMapfixAcceptedParams, _ error) { - // Decode path: MapfixID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "MapfixID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.MapfixID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.MapfixID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "MapfixID", - In: "path", - Err: err, - } - } - return params, nil -} - -// ActionMapfixRequestChangesParams is parameters of actionMapfixRequestChanges operation. -type ActionMapfixRequestChangesParams struct { - // The unique identifier for a submission. - MapfixID int64 -} - -func unpackActionMapfixRequestChangesParams(packed middleware.Parameters) (params ActionMapfixRequestChangesParams) { - { - key := middleware.ParameterKey{ - Name: "MapfixID", - In: "path", - } - params.MapfixID = packed[key].(int64) - } - return params -} - -func decodeActionMapfixRequestChangesParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionMapfixRequestChangesParams, _ error) { - // Decode path: MapfixID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "MapfixID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.MapfixID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.MapfixID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "MapfixID", - In: "path", - Err: err, - } - } - return params, nil -} - -// ActionMapfixSubmittedParams is parameters of actionMapfixSubmitted operation. -type ActionMapfixSubmittedParams struct { - // The unique identifier for a submission. - MapfixID int64 - ModelVersion int64 - DisplayName string - Creator string - GameID int32 -} - -func unpackActionMapfixSubmittedParams(packed middleware.Parameters) (params ActionMapfixSubmittedParams) { - { - key := middleware.ParameterKey{ - Name: "MapfixID", - In: "path", - } - params.MapfixID = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "ModelVersion", - In: "query", - } - params.ModelVersion = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "DisplayName", - In: "query", - } - params.DisplayName = packed[key].(string) - } - { - key := middleware.ParameterKey{ - Name: "Creator", - In: "query", - } - params.Creator = packed[key].(string) - } - { - key := middleware.ParameterKey{ - Name: "GameID", - In: "query", - } - params.GameID = packed[key].(int32) - } - return params -} - -func decodeActionMapfixSubmittedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionMapfixSubmittedParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode path: MapfixID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "MapfixID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.MapfixID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.MapfixID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "MapfixID", - In: "path", - Err: err, - } - } - // Decode query: ModelVersion. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ModelVersion", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.ModelVersion = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.ModelVersion)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ModelVersion", - In: "query", - Err: err, - } - } - // Decode query: DisplayName. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "DisplayName", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - params.DisplayName = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(params.DisplayName)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "DisplayName", - In: "query", - Err: err, - } - } - // Decode query: Creator. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Creator", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - params.Creator = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(params.Creator)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Creator", - In: "query", - Err: err, - } - } - // Decode query: GameID. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "GameID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt32(val) - if err != nil { - return err - } - - params.GameID = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.GameID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "GameID", - In: "query", - Err: err, - } - } - return params, nil -} - -// ActionMapfixUploadedParams is parameters of actionMapfixUploaded operation. -type ActionMapfixUploadedParams struct { - // The unique identifier for a submission. - MapfixID int64 -} - -func unpackActionMapfixUploadedParams(packed middleware.Parameters) (params ActionMapfixUploadedParams) { - { - key := middleware.ParameterKey{ - Name: "MapfixID", - In: "path", - } - params.MapfixID = packed[key].(int64) - } - return params -} - -func decodeActionMapfixUploadedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionMapfixUploadedParams, _ error) { - // Decode path: MapfixID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "MapfixID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.MapfixID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.MapfixID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "MapfixID", - In: "path", - Err: err, - } - } - return params, nil -} - -// ActionMapfixValidatedParams is parameters of actionMapfixValidated operation. -type ActionMapfixValidatedParams struct { - // The unique identifier for a submission. - MapfixID int64 -} - -func unpackActionMapfixValidatedParams(packed middleware.Parameters) (params ActionMapfixValidatedParams) { - { - key := middleware.ParameterKey{ - Name: "MapfixID", - In: "path", - } - params.MapfixID = packed[key].(int64) - } - return params -} - -func decodeActionMapfixValidatedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionMapfixValidatedParams, _ error) { - // Decode path: MapfixID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "MapfixID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.MapfixID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.MapfixID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "MapfixID", - In: "path", - Err: err, - } - } - return params, nil -} - -// ActionOperationFailedParams is parameters of actionOperationFailed operation. -type ActionOperationFailedParams struct { - // The unique identifier for a long-running operation. - OperationID int32 - StatusMessage string -} - -func unpackActionOperationFailedParams(packed middleware.Parameters) (params ActionOperationFailedParams) { - { - key := middleware.ParameterKey{ - Name: "OperationID", - In: "path", - } - params.OperationID = packed[key].(int32) - } - { - key := middleware.ParameterKey{ - Name: "StatusMessage", - In: "query", - } - params.StatusMessage = packed[key].(string) - } - return params -} - -func decodeActionOperationFailedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionOperationFailedParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode path: OperationID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "OperationID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt32(val) - if err != nil { - return err - } - - params.OperationID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.OperationID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "OperationID", - In: "path", - Err: err, - } - } - // Decode query: StatusMessage. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "StatusMessage", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - params.StatusMessage = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: true, - MaxLength: 4096, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(params.StatusMessage)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "StatusMessage", - In: "query", - Err: err, - } - } - return params, nil -} - -// ActionSubmissionAcceptedParams is parameters of actionSubmissionAccepted operation. -type ActionSubmissionAcceptedParams struct { - // The unique identifier for a submission. - SubmissionID int64 -} - -func unpackActionSubmissionAcceptedParams(packed middleware.Parameters) (params ActionSubmissionAcceptedParams) { - { - key := middleware.ParameterKey{ - Name: "SubmissionID", - In: "path", - } - params.SubmissionID = packed[key].(int64) - } - return params -} - -func decodeActionSubmissionAcceptedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionSubmissionAcceptedParams, _ error) { - // Decode path: SubmissionID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "SubmissionID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.SubmissionID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.SubmissionID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "SubmissionID", - In: "path", - Err: err, - } - } - return params, nil -} - -// ActionSubmissionRequestChangesParams is parameters of actionSubmissionRequestChanges operation. -type ActionSubmissionRequestChangesParams struct { - // The unique identifier for a submission. - SubmissionID int64 -} - -func unpackActionSubmissionRequestChangesParams(packed middleware.Parameters) (params ActionSubmissionRequestChangesParams) { - { - key := middleware.ParameterKey{ - Name: "SubmissionID", - In: "path", - } - params.SubmissionID = packed[key].(int64) - } - return params -} - -func decodeActionSubmissionRequestChangesParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionSubmissionRequestChangesParams, _ error) { - // Decode path: SubmissionID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "SubmissionID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.SubmissionID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.SubmissionID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "SubmissionID", - In: "path", - Err: err, - } - } - return params, nil -} - -// ActionSubmissionSubmittedParams is parameters of actionSubmissionSubmitted operation. -type ActionSubmissionSubmittedParams struct { - // The unique identifier for a submission. - SubmissionID int64 - ModelVersion int64 - DisplayName string - Creator string - GameID int32 -} - -func unpackActionSubmissionSubmittedParams(packed middleware.Parameters) (params ActionSubmissionSubmittedParams) { - { - key := middleware.ParameterKey{ - Name: "SubmissionID", - In: "path", - } - params.SubmissionID = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "ModelVersion", - In: "query", - } - params.ModelVersion = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "DisplayName", - In: "query", - } - params.DisplayName = packed[key].(string) - } - { - key := middleware.ParameterKey{ - Name: "Creator", - In: "query", - } - params.Creator = packed[key].(string) - } - { - key := middleware.ParameterKey{ - Name: "GameID", - In: "query", - } - params.GameID = packed[key].(int32) - } - return params -} - -func decodeActionSubmissionSubmittedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionSubmissionSubmittedParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode path: SubmissionID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "SubmissionID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.SubmissionID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.SubmissionID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "SubmissionID", - In: "path", - Err: err, - } - } - // Decode query: ModelVersion. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ModelVersion", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.ModelVersion = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.ModelVersion)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ModelVersion", - In: "query", - Err: err, - } - } - // Decode query: DisplayName. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "DisplayName", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - params.DisplayName = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(params.DisplayName)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "DisplayName", - In: "query", - Err: err, - } - } - // Decode query: Creator. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Creator", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - params.Creator = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(params.Creator)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Creator", - In: "query", - Err: err, - } - } - // Decode query: GameID. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "GameID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt32(val) - if err != nil { - return err - } - - params.GameID = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.GameID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "GameID", - In: "query", - Err: err, - } - } - return params, nil -} - -// ActionSubmissionUploadedParams is parameters of actionSubmissionUploaded operation. -type ActionSubmissionUploadedParams struct { - // The unique identifier for a submission. - SubmissionID int64 - UploadedAssetID int64 -} - -func unpackActionSubmissionUploadedParams(packed middleware.Parameters) (params ActionSubmissionUploadedParams) { - { - key := middleware.ParameterKey{ - Name: "SubmissionID", - In: "path", - } - params.SubmissionID = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "UploadedAssetID", - In: "query", - } - params.UploadedAssetID = packed[key].(int64) - } - return params -} - -func decodeActionSubmissionUploadedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionSubmissionUploadedParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode path: SubmissionID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "SubmissionID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.SubmissionID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.SubmissionID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "SubmissionID", - In: "path", - Err: err, - } - } - // Decode query: UploadedAssetID. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "UploadedAssetID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.UploadedAssetID = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.UploadedAssetID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "UploadedAssetID", - In: "query", - Err: err, - } - } - return params, nil -} - -// ActionSubmissionValidatedParams is parameters of actionSubmissionValidated operation. -type ActionSubmissionValidatedParams struct { - // The unique identifier for a submission. - SubmissionID int64 -} - -func unpackActionSubmissionValidatedParams(packed middleware.Parameters) (params ActionSubmissionValidatedParams) { - { - key := middleware.ParameterKey{ - Name: "SubmissionID", - In: "path", - } - params.SubmissionID = packed[key].(int64) - } - return params -} - -func decodeActionSubmissionValidatedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionSubmissionValidatedParams, _ error) { - // Decode path: SubmissionID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "SubmissionID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.SubmissionID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.SubmissionID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "SubmissionID", - In: "path", - Err: err, - } - } - return params, nil -} - -// CreateMapfixAuditCheckListParams is parameters of createMapfixAuditCheckList operation. -type CreateMapfixAuditCheckListParams struct { - // The unique identifier for a submission. - MapfixID int64 -} - -func unpackCreateMapfixAuditCheckListParams(packed middleware.Parameters) (params CreateMapfixAuditCheckListParams) { - { - key := middleware.ParameterKey{ - Name: "MapfixID", - In: "path", - } - params.MapfixID = packed[key].(int64) - } - return params -} - -func decodeCreateMapfixAuditCheckListParams(args [1]string, argsEscaped bool, r *http.Request) (params CreateMapfixAuditCheckListParams, _ error) { - // Decode path: MapfixID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "MapfixID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.MapfixID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.MapfixID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "MapfixID", - In: "path", - Err: err, - } - } - return params, nil -} - -// CreateMapfixAuditErrorParams is parameters of createMapfixAuditError operation. -type CreateMapfixAuditErrorParams struct { - // The unique identifier for a submission. - MapfixID int64 - ErrorMessage string -} - -func unpackCreateMapfixAuditErrorParams(packed middleware.Parameters) (params CreateMapfixAuditErrorParams) { - { - key := middleware.ParameterKey{ - Name: "MapfixID", - In: "path", - } - params.MapfixID = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "ErrorMessage", - In: "query", - } - params.ErrorMessage = packed[key].(string) - } - return params -} - -func decodeCreateMapfixAuditErrorParams(args [1]string, argsEscaped bool, r *http.Request) (params CreateMapfixAuditErrorParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode path: MapfixID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "MapfixID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.MapfixID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.MapfixID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "MapfixID", - In: "path", - Err: err, - } - } - // Decode query: ErrorMessage. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ErrorMessage", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - params.ErrorMessage = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: true, - MaxLength: 4096, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(params.ErrorMessage)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ErrorMessage", - In: "query", - Err: err, - } - } - return params, nil -} - -// CreateSubmissionAuditCheckListParams is parameters of createSubmissionAuditCheckList operation. -type CreateSubmissionAuditCheckListParams struct { - // The unique identifier for a submission. - SubmissionID int64 -} - -func unpackCreateSubmissionAuditCheckListParams(packed middleware.Parameters) (params CreateSubmissionAuditCheckListParams) { - { - key := middleware.ParameterKey{ - Name: "SubmissionID", - In: "path", - } - params.SubmissionID = packed[key].(int64) - } - return params -} - -func decodeCreateSubmissionAuditCheckListParams(args [1]string, argsEscaped bool, r *http.Request) (params CreateSubmissionAuditCheckListParams, _ error) { - // Decode path: SubmissionID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "SubmissionID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.SubmissionID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.SubmissionID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "SubmissionID", - In: "path", - Err: err, - } - } - return params, nil -} - -// CreateSubmissionAuditErrorParams is parameters of createSubmissionAuditError operation. -type CreateSubmissionAuditErrorParams struct { - // The unique identifier for a submission. - SubmissionID int64 - ErrorMessage string -} - -func unpackCreateSubmissionAuditErrorParams(packed middleware.Parameters) (params CreateSubmissionAuditErrorParams) { - { - key := middleware.ParameterKey{ - Name: "SubmissionID", - In: "path", - } - params.SubmissionID = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "ErrorMessage", - In: "query", - } - params.ErrorMessage = packed[key].(string) - } - return params -} - -func decodeCreateSubmissionAuditErrorParams(args [1]string, argsEscaped bool, r *http.Request) (params CreateSubmissionAuditErrorParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode path: SubmissionID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "SubmissionID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.SubmissionID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.SubmissionID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "SubmissionID", - In: "path", - Err: err, - } - } - // Decode query: ErrorMessage. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ErrorMessage", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - params.ErrorMessage = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: true, - MaxLength: 4096, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(params.ErrorMessage)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ErrorMessage", - In: "query", - Err: err, - } - } - return params, nil -} - -// GetScriptParams is parameters of getScript operation. -type GetScriptParams struct { - // The unique identifier for a script. - ScriptID int64 -} - -func unpackGetScriptParams(packed middleware.Parameters) (params GetScriptParams) { - { - key := middleware.ParameterKey{ - Name: "ScriptID", - In: "path", - } - params.ScriptID = packed[key].(int64) - } - return params -} - -func decodeGetScriptParams(args [1]string, argsEscaped bool, r *http.Request) (params GetScriptParams, _ error) { - // Decode path: ScriptID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "ScriptID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.ScriptID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.ScriptID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ScriptID", - In: "path", - Err: err, - } - } - return params, nil -} - -// ListScriptPolicyParams is parameters of listScriptPolicy operation. -type ListScriptPolicyParams struct { - Page int32 - Limit int32 - FromScriptHash OptString - ToScriptID OptInt64 - Policy OptInt32 -} - -func unpackListScriptPolicyParams(packed middleware.Parameters) (params ListScriptPolicyParams) { - { - key := middleware.ParameterKey{ - Name: "Page", - In: "query", - } - params.Page = packed[key].(int32) - } - { - key := middleware.ParameterKey{ - Name: "Limit", - In: "query", - } - params.Limit = packed[key].(int32) - } - { - key := middleware.ParameterKey{ - Name: "FromScriptHash", - In: "query", - } - if v, ok := packed[key]; ok { - params.FromScriptHash = v.(OptString) - } - } - { - key := middleware.ParameterKey{ - Name: "ToScriptID", - In: "query", - } - if v, ok := packed[key]; ok { - params.ToScriptID = v.(OptInt64) - } - } - { - key := middleware.ParameterKey{ - Name: "Policy", - In: "query", - } - if v, ok := packed[key]; ok { - params.Policy = v.(OptInt32) - } - } - return params -} - -func decodeListScriptPolicyParams(args [0]string, argsEscaped bool, r *http.Request) (params ListScriptPolicyParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode query: Page. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Page", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt32(val) - if err != nil { - return err - } - - params.Page = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 1, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.Page)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Page", - In: "query", - Err: err, - } - } - // Decode query: Limit. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Limit", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt32(val) - if err != nil { - return err - } - - params.Limit = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 1, - MaxSet: true, - Max: 100, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.Limit)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Limit", - In: "query", - Err: err, - } - } - // Decode query: FromScriptHash. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "FromScriptHash", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - var paramsDotFromScriptHashVal string - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - paramsDotFromScriptHashVal = c - return nil - }(); err != nil { - return err - } - params.FromScriptHash.SetTo(paramsDotFromScriptHashVal) - return nil - }); err != nil { - return err - } - if err := func() error { - if value, ok := params.FromScriptHash.Get(); ok { - if err := func() error { - if err := (validate.String{ - MinLength: 16, - MinLengthSet: true, - MaxLength: 16, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(value)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "FromScriptHash", - In: "query", - Err: err, - } - } - // Decode query: ToScriptID. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ToScriptID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - var paramsDotToScriptIDVal int64 - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - paramsDotToScriptIDVal = c - return nil - }(); err != nil { - return err - } - params.ToScriptID.SetTo(paramsDotToScriptIDVal) - return nil - }); err != nil { - return err - } - if err := func() error { - if value, ok := params.ToScriptID.Get(); ok { - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(value)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ToScriptID", - In: "query", - Err: err, - } - } - // Decode query: Policy. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Policy", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - var paramsDotPolicyVal int32 - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt32(val) - if err != nil { - return err - } - - paramsDotPolicyVal = c - return nil - }(); err != nil { - return err - } - params.Policy.SetTo(paramsDotPolicyVal) - return nil - }); err != nil { - return err - } - if err := func() error { - if value, ok := params.Policy.Get(); ok { - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(value)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Policy", - In: "query", - Err: err, - } - } - return params, nil -} - -// ListScriptsParams is parameters of listScripts operation. -type ListScriptsParams struct { - Page int32 - Limit int32 - Hash OptString - Name OptString - Source OptString - ResourceType OptInt32 - ResourceID OptInt64 -} - -func unpackListScriptsParams(packed middleware.Parameters) (params ListScriptsParams) { - { - key := middleware.ParameterKey{ - Name: "Page", - In: "query", - } - params.Page = packed[key].(int32) - } - { - key := middleware.ParameterKey{ - Name: "Limit", - In: "query", - } - params.Limit = packed[key].(int32) - } - { - key := middleware.ParameterKey{ - Name: "Hash", - In: "query", - } - if v, ok := packed[key]; ok { - params.Hash = v.(OptString) - } - } - { - key := middleware.ParameterKey{ - Name: "Name", - In: "query", - } - if v, ok := packed[key]; ok { - params.Name = v.(OptString) - } - } - { - key := middleware.ParameterKey{ - Name: "Source", - In: "query", - } - if v, ok := packed[key]; ok { - params.Source = v.(OptString) - } - } - { - key := middleware.ParameterKey{ - Name: "ResourceType", - In: "query", - } - if v, ok := packed[key]; ok { - params.ResourceType = v.(OptInt32) - } - } - { - key := middleware.ParameterKey{ - Name: "ResourceID", - In: "query", - } - if v, ok := packed[key]; ok { - params.ResourceID = v.(OptInt64) - } - } - return params -} - -func decodeListScriptsParams(args [0]string, argsEscaped bool, r *http.Request) (params ListScriptsParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode query: Page. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Page", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt32(val) - if err != nil { - return err - } - - params.Page = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 1, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.Page)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Page", - In: "query", - Err: err, - } - } - // Decode query: Limit. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Limit", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt32(val) - if err != nil { - return err - } - - params.Limit = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 1, - MaxSet: true, - Max: 100, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.Limit)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Limit", - In: "query", - Err: err, - } - } - // Decode query: Hash. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Hash", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - var paramsDotHashVal string - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - paramsDotHashVal = c - return nil - }(); err != nil { - return err - } - params.Hash.SetTo(paramsDotHashVal) - return nil - }); err != nil { - return err - } - if err := func() error { - if value, ok := params.Hash.Get(); ok { - if err := func() error { - if err := (validate.String{ - MinLength: 16, - MinLengthSet: true, - MaxLength: 16, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(value)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Hash", - In: "query", - Err: err, - } - } - // Decode query: Name. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Name", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - var paramsDotNameVal string - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - paramsDotNameVal = c - return nil - }(); err != nil { - return err - } - params.Name.SetTo(paramsDotNameVal) - return nil - }); err != nil { - return err - } - if err := func() error { - if value, ok := params.Name.Get(); ok { - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(value)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Name", - In: "query", - Err: err, - } - } - // Decode query: Source. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "Source", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - var paramsDotSourceVal string - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToString(val) - if err != nil { - return err - } - - paramsDotSourceVal = c - return nil - }(); err != nil { - return err - } - params.Source.SetTo(paramsDotSourceVal) - return nil - }); err != nil { - return err - } - if err := func() error { - if value, ok := params.Source.Get(); ok { - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 1048576, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(value)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "Source", - In: "query", - Err: err, - } - } - // Decode query: ResourceType. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ResourceType", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - var paramsDotResourceTypeVal int32 - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt32(val) - if err != nil { - return err - } - - paramsDotResourceTypeVal = c - return nil - }(); err != nil { - return err - } - params.ResourceType.SetTo(paramsDotResourceTypeVal) - return nil - }); err != nil { - return err - } - if err := func() error { - if value, ok := params.ResourceType.Get(); ok { - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(value)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ResourceType", - In: "query", - Err: err, - } - } - // Decode query: ResourceID. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ResourceID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - var paramsDotResourceIDVal int64 - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - paramsDotResourceIDVal = c - return nil - }(); err != nil { - return err - } - params.ResourceID.SetTo(paramsDotResourceIDVal) - return nil - }); err != nil { - return err - } - if err := func() error { - if value, ok := params.ResourceID.Get(); ok { - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(value)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ResourceID", - In: "query", - Err: err, - } - } - return params, nil -} - -// UpdateMapfixValidatedModelParams is parameters of updateMapfixValidatedModel operation. -type UpdateMapfixValidatedModelParams struct { - // The unique identifier for a submission. - MapfixID int64 - ValidatedModelID int64 - ValidatedModelVersion int64 -} - -func unpackUpdateMapfixValidatedModelParams(packed middleware.Parameters) (params UpdateMapfixValidatedModelParams) { - { - key := middleware.ParameterKey{ - Name: "MapfixID", - In: "path", - } - params.MapfixID = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "ValidatedModelID", - In: "query", - } - params.ValidatedModelID = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "ValidatedModelVersion", - In: "query", - } - params.ValidatedModelVersion = packed[key].(int64) - } - return params -} - -func decodeUpdateMapfixValidatedModelParams(args [1]string, argsEscaped bool, r *http.Request) (params UpdateMapfixValidatedModelParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode path: MapfixID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "MapfixID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.MapfixID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.MapfixID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "MapfixID", - In: "path", - Err: err, - } - } - // Decode query: ValidatedModelID. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ValidatedModelID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.ValidatedModelID = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.ValidatedModelID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ValidatedModelID", - In: "query", - Err: err, - } - } - // Decode query: ValidatedModelVersion. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ValidatedModelVersion", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.ValidatedModelVersion = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.ValidatedModelVersion)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ValidatedModelVersion", - In: "query", - Err: err, - } - } - return params, nil -} - -// UpdateSubmissionValidatedModelParams is parameters of updateSubmissionValidatedModel operation. -type UpdateSubmissionValidatedModelParams struct { - // The unique identifier for a submission. - SubmissionID int64 - ValidatedModelID int64 - ValidatedModelVersion int64 -} - -func unpackUpdateSubmissionValidatedModelParams(packed middleware.Parameters) (params UpdateSubmissionValidatedModelParams) { - { - key := middleware.ParameterKey{ - Name: "SubmissionID", - In: "path", - } - params.SubmissionID = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "ValidatedModelID", - In: "query", - } - params.ValidatedModelID = packed[key].(int64) - } - { - key := middleware.ParameterKey{ - Name: "ValidatedModelVersion", - In: "query", - } - params.ValidatedModelVersion = packed[key].(int64) - } - return params -} - -func decodeUpdateSubmissionValidatedModelParams(args [1]string, argsEscaped bool, r *http.Request) (params UpdateSubmissionValidatedModelParams, _ error) { - q := uri.NewQueryDecoder(r.URL.Query()) - // Decode path: SubmissionID. - if err := func() error { - param := args[0] - if argsEscaped { - unescaped, err := url.PathUnescape(args[0]) - if err != nil { - return errors.Wrap(err, "unescape path") - } - param = unescaped - } - if len(param) > 0 { - d := uri.NewPathDecoder(uri.PathDecoderConfig{ - Param: "SubmissionID", - Value: param, - Style: uri.PathStyleSimple, - Explode: false, - }) - - if err := func() error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.SubmissionID = c - return nil - }(); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.SubmissionID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return validate.ErrFieldRequired - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "SubmissionID", - In: "path", - Err: err, - } - } - // Decode query: ValidatedModelID. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ValidatedModelID", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.ValidatedModelID = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.ValidatedModelID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ValidatedModelID", - In: "query", - Err: err, - } - } - // Decode query: ValidatedModelVersion. - if err := func() error { - cfg := uri.QueryParameterDecodingConfig{ - Name: "ValidatedModelVersion", - Style: uri.QueryStyleForm, - Explode: true, - } - - if err := q.HasParam(cfg); err == nil { - if err := q.DecodeParam(cfg, func(d uri.Decoder) error { - val, err := d.DecodeValue() - if err != nil { - return err - } - - c, err := conv.ToInt64(val) - if err != nil { - return err - } - - params.ValidatedModelVersion = c - return nil - }); err != nil { - return err - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(params.ValidatedModelVersion)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } else { - return err - } - return nil - }(); err != nil { - return params, &ogenerrors.DecodeParamError{ - Name: "ValidatedModelVersion", - In: "query", - Err: err, - } - } - return params, nil -} diff --git a/pkg/internal/oas_request_decoders_gen.go b/pkg/internal/oas_request_decoders_gen.go deleted file mode 100644 index 3d02cd5..0000000 --- a/pkg/internal/oas_request_decoders_gen.go +++ /dev/null @@ -1,441 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "io" - "mime" - "net/http" - - "github.com/go-faster/errors" - "github.com/go-faster/jx" - - "github.com/ogen-go/ogen/ogenerrors" - "github.com/ogen-go/ogen/validate" -) - -func (s *Server) decodeCreateMapfixRequest(r *http.Request) ( - req *MapfixCreate, - close func() error, - rerr error, -) { - var closers []func() error - close = func() error { - var merr error - // Close in reverse order, to match defer behavior. - for i := len(closers) - 1; i >= 0; i-- { - c := closers[i] - merr = errors.Join(merr, c()) - } - return merr - } - defer func() { - if rerr != nil { - rerr = errors.Join(rerr, close()) - } - }() - ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) - if err != nil { - return req, close, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - if r.ContentLength == 0 { - return req, close, validate.ErrBodyRequired - } - buf, err := io.ReadAll(r.Body) - if err != nil { - return req, close, err - } - - if len(buf) == 0 { - return req, close, validate.ErrBodyRequired - } - - d := jx.DecodeBytes(buf) - - var request MapfixCreate - if err := func() error { - if err := request.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return req, close, err - } - if err := func() error { - if err := request.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return req, close, errors.Wrap(err, "validate") - } - return &request, close, nil - default: - return req, close, validate.InvalidContentType(ct) - } -} - -func (s *Server) decodeCreateMapfixAuditCheckListRequest(r *http.Request) ( - req CheckList, - close func() error, - rerr error, -) { - var closers []func() error - close = func() error { - var merr error - // Close in reverse order, to match defer behavior. - for i := len(closers) - 1; i >= 0; i-- { - c := closers[i] - merr = errors.Join(merr, c()) - } - return merr - } - defer func() { - if rerr != nil { - rerr = errors.Join(rerr, close()) - } - }() - ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) - if err != nil { - return req, close, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - if r.ContentLength == 0 { - return req, close, validate.ErrBodyRequired - } - buf, err := io.ReadAll(r.Body) - if err != nil { - return req, close, err - } - - if len(buf) == 0 { - return req, close, validate.ErrBodyRequired - } - - d := jx.DecodeBytes(buf) - - var request CheckList - if err := func() error { - if err := request.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return req, close, err - } - if err := func() error { - if err := request.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return req, close, errors.Wrap(err, "validate") - } - return request, close, nil - default: - return req, close, validate.InvalidContentType(ct) - } -} - -func (s *Server) decodeCreateScriptRequest(r *http.Request) ( - req *ScriptCreate, - close func() error, - rerr error, -) { - var closers []func() error - close = func() error { - var merr error - // Close in reverse order, to match defer behavior. - for i := len(closers) - 1; i >= 0; i-- { - c := closers[i] - merr = errors.Join(merr, c()) - } - return merr - } - defer func() { - if rerr != nil { - rerr = errors.Join(rerr, close()) - } - }() - ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) - if err != nil { - return req, close, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - if r.ContentLength == 0 { - return req, close, validate.ErrBodyRequired - } - buf, err := io.ReadAll(r.Body) - if err != nil { - return req, close, err - } - - if len(buf) == 0 { - return req, close, validate.ErrBodyRequired - } - - d := jx.DecodeBytes(buf) - - var request ScriptCreate - if err := func() error { - if err := request.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return req, close, err - } - if err := func() error { - if err := request.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return req, close, errors.Wrap(err, "validate") - } - return &request, close, nil - default: - return req, close, validate.InvalidContentType(ct) - } -} - -func (s *Server) decodeCreateScriptPolicyRequest(r *http.Request) ( - req *ScriptPolicyCreate, - close func() error, - rerr error, -) { - var closers []func() error - close = func() error { - var merr error - // Close in reverse order, to match defer behavior. - for i := len(closers) - 1; i >= 0; i-- { - c := closers[i] - merr = errors.Join(merr, c()) - } - return merr - } - defer func() { - if rerr != nil { - rerr = errors.Join(rerr, close()) - } - }() - ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) - if err != nil { - return req, close, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - if r.ContentLength == 0 { - return req, close, validate.ErrBodyRequired - } - buf, err := io.ReadAll(r.Body) - if err != nil { - return req, close, err - } - - if len(buf) == 0 { - return req, close, validate.ErrBodyRequired - } - - d := jx.DecodeBytes(buf) - - var request ScriptPolicyCreate - if err := func() error { - if err := request.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return req, close, err - } - if err := func() error { - if err := request.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return req, close, errors.Wrap(err, "validate") - } - return &request, close, nil - default: - return req, close, validate.InvalidContentType(ct) - } -} - -func (s *Server) decodeCreateSubmissionRequest(r *http.Request) ( - req *SubmissionCreate, - close func() error, - rerr error, -) { - var closers []func() error - close = func() error { - var merr error - // Close in reverse order, to match defer behavior. - for i := len(closers) - 1; i >= 0; i-- { - c := closers[i] - merr = errors.Join(merr, c()) - } - return merr - } - defer func() { - if rerr != nil { - rerr = errors.Join(rerr, close()) - } - }() - ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) - if err != nil { - return req, close, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - if r.ContentLength == 0 { - return req, close, validate.ErrBodyRequired - } - buf, err := io.ReadAll(r.Body) - if err != nil { - return req, close, err - } - - if len(buf) == 0 { - return req, close, validate.ErrBodyRequired - } - - d := jx.DecodeBytes(buf) - - var request SubmissionCreate - if err := func() error { - if err := request.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return req, close, err - } - if err := func() error { - if err := request.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return req, close, errors.Wrap(err, "validate") - } - return &request, close, nil - default: - return req, close, validate.InvalidContentType(ct) - } -} - -func (s *Server) decodeCreateSubmissionAuditCheckListRequest(r *http.Request) ( - req CheckList, - close func() error, - rerr error, -) { - var closers []func() error - close = func() error { - var merr error - // Close in reverse order, to match defer behavior. - for i := len(closers) - 1; i >= 0; i-- { - c := closers[i] - merr = errors.Join(merr, c()) - } - return merr - } - defer func() { - if rerr != nil { - rerr = errors.Join(rerr, close()) - } - }() - ct, _, err := mime.ParseMediaType(r.Header.Get("Content-Type")) - if err != nil { - return req, close, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - if r.ContentLength == 0 { - return req, close, validate.ErrBodyRequired - } - buf, err := io.ReadAll(r.Body) - if err != nil { - return req, close, err - } - - if len(buf) == 0 { - return req, close, validate.ErrBodyRequired - } - - d := jx.DecodeBytes(buf) - - var request CheckList - if err := func() error { - if err := request.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return req, close, err - } - if err := func() error { - if err := request.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return req, close, errors.Wrap(err, "validate") - } - return request, close, nil - default: - return req, close, validate.InvalidContentType(ct) - } -} diff --git a/pkg/internal/oas_request_encoders_gen.go b/pkg/internal/oas_request_encoders_gen.go deleted file mode 100644 index a819e46..0000000 --- a/pkg/internal/oas_request_encoders_gen.go +++ /dev/null @@ -1,96 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "bytes" - "net/http" - - "github.com/go-faster/jx" - - ht "github.com/ogen-go/ogen/http" -) - -func encodeCreateMapfixRequest( - req *MapfixCreate, - r *http.Request, -) error { - const contentType = "application/json" - e := new(jx.Encoder) - { - req.Encode(e) - } - encoded := e.Bytes() - ht.SetBody(r, bytes.NewReader(encoded), contentType) - return nil -} - -func encodeCreateMapfixAuditCheckListRequest( - req CheckList, - r *http.Request, -) error { - const contentType = "application/json" - e := new(jx.Encoder) - { - req.Encode(e) - } - encoded := e.Bytes() - ht.SetBody(r, bytes.NewReader(encoded), contentType) - return nil -} - -func encodeCreateScriptRequest( - req *ScriptCreate, - r *http.Request, -) error { - const contentType = "application/json" - e := new(jx.Encoder) - { - req.Encode(e) - } - encoded := e.Bytes() - ht.SetBody(r, bytes.NewReader(encoded), contentType) - return nil -} - -func encodeCreateScriptPolicyRequest( - req *ScriptPolicyCreate, - r *http.Request, -) error { - const contentType = "application/json" - e := new(jx.Encoder) - { - req.Encode(e) - } - encoded := e.Bytes() - ht.SetBody(r, bytes.NewReader(encoded), contentType) - return nil -} - -func encodeCreateSubmissionRequest( - req *SubmissionCreate, - r *http.Request, -) error { - const contentType = "application/json" - e := new(jx.Encoder) - { - req.Encode(e) - } - encoded := e.Bytes() - ht.SetBody(r, bytes.NewReader(encoded), contentType) - return nil -} - -func encodeCreateSubmissionAuditCheckListRequest( - req CheckList, - r *http.Request, -) error { - const contentType = "application/json" - e := new(jx.Encoder) - { - req.Encode(e) - } - encoded := e.Bytes() - ht.SetBody(r, bytes.NewReader(encoded), contentType) - return nil -} diff --git a/pkg/internal/oas_response_decoders_gen.go b/pkg/internal/oas_response_decoders_gen.go deleted file mode 100644 index c68aff2..0000000 --- a/pkg/internal/oas_response_decoders_gen.go +++ /dev/null @@ -1,1793 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "fmt" - "io" - "mime" - "net/http" - - "github.com/go-faster/errors" - "github.com/go-faster/jx" - - "github.com/ogen-go/ogen/ogenerrors" - "github.com/ogen-go/ogen/validate" -) - -func decodeActionMapfixAcceptedResponse(resp *http.Response) (res *ActionMapfixAcceptedNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionMapfixAcceptedNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionMapfixRequestChangesResponse(resp *http.Response) (res *ActionMapfixRequestChangesNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionMapfixRequestChangesNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionMapfixSubmittedResponse(resp *http.Response) (res *ActionMapfixSubmittedNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionMapfixSubmittedNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionMapfixUploadedResponse(resp *http.Response) (res *ActionMapfixUploadedNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionMapfixUploadedNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionMapfixValidatedResponse(resp *http.Response) (res *ActionMapfixValidatedNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionMapfixValidatedNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionOperationFailedResponse(resp *http.Response) (res *ActionOperationFailedNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionOperationFailedNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionSubmissionAcceptedResponse(resp *http.Response) (res *ActionSubmissionAcceptedNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionSubmissionAcceptedNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionSubmissionRequestChangesResponse(resp *http.Response) (res *ActionSubmissionRequestChangesNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionSubmissionRequestChangesNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionSubmissionSubmittedResponse(resp *http.Response) (res *ActionSubmissionSubmittedNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionSubmissionSubmittedNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionSubmissionUploadedResponse(resp *http.Response) (res *ActionSubmissionUploadedNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionSubmissionUploadedNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeActionSubmissionValidatedResponse(resp *http.Response) (res *ActionSubmissionValidatedNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionSubmissionValidatedNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeCreateMapfixResponse(resp *http.Response) (res *MapfixID, _ error) { - switch resp.StatusCode { - case 201: - // Code 201. - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response MapfixID - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &response, nil - default: - return res, validate.InvalidContentType(ct) - } - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeCreateMapfixAuditCheckListResponse(resp *http.Response) (res *CreateMapfixAuditCheckListNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &CreateMapfixAuditCheckListNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeCreateMapfixAuditErrorResponse(resp *http.Response) (res *CreateMapfixAuditErrorNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &CreateMapfixAuditErrorNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeCreateScriptResponse(resp *http.Response) (res *ScriptID, _ error) { - switch resp.StatusCode { - case 201: - // Code 201. - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response ScriptID - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &response, nil - default: - return res, validate.InvalidContentType(ct) - } - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeCreateScriptPolicyResponse(resp *http.Response) (res *ScriptPolicyID, _ error) { - switch resp.StatusCode { - case 201: - // Code 201. - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response ScriptPolicyID - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &response, nil - default: - return res, validate.InvalidContentType(ct) - } - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeCreateSubmissionResponse(resp *http.Response) (res *SubmissionID, _ error) { - switch resp.StatusCode { - case 201: - // Code 201. - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response SubmissionID - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &response, nil - default: - return res, validate.InvalidContentType(ct) - } - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeCreateSubmissionAuditCheckListResponse(resp *http.Response) (res *CreateSubmissionAuditCheckListNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &CreateSubmissionAuditCheckListNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeCreateSubmissionAuditErrorResponse(resp *http.Response) (res *CreateSubmissionAuditErrorNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &CreateSubmissionAuditErrorNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeGetScriptResponse(resp *http.Response) (res *Script, _ error) { - switch resp.StatusCode { - case 200: - // Code 200. - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Script - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &response, nil - default: - return res, validate.InvalidContentType(ct) - } - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeListScriptPolicyResponse(resp *http.Response) (res []ScriptPolicy, _ error) { - switch resp.StatusCode { - case 200: - // Code 200. - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response []ScriptPolicy - if err := func() error { - response = make([]ScriptPolicy, 0) - if err := d.Arr(func(d *jx.Decoder) error { - var elem ScriptPolicy - if err := elem.Decode(d); err != nil { - return err - } - response = append(response, elem) - return nil - }); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if response == nil { - return errors.New("nil is invalid value") - } - var failures []validate.FieldError - for i, elem := range response { - if err := func() error { - if err := elem.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: fmt.Sprintf("[%d]", i), - Error: err, - }) - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return response, nil - default: - return res, validate.InvalidContentType(ct) - } - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeListScriptsResponse(resp *http.Response) (res []Script, _ error) { - switch resp.StatusCode { - case 200: - // Code 200. - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response []Script - if err := func() error { - response = make([]Script, 0) - if err := d.Arr(func(d *jx.Decoder) error { - var elem Script - if err := elem.Decode(d); err != nil { - return err - } - response = append(response, elem) - return nil - }); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if response == nil { - return errors.New("nil is invalid value") - } - var failures []validate.FieldError - for i, elem := range response { - if err := func() error { - if err := elem.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: fmt.Sprintf("[%d]", i), - Error: err, - }) - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return response, nil - default: - return res, validate.InvalidContentType(ct) - } - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeUpdateMapfixValidatedModelResponse(resp *http.Response) (res *UpdateMapfixValidatedModelNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &UpdateMapfixValidatedModelNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} - -func decodeUpdateSubmissionValidatedModelResponse(resp *http.Response) (res *UpdateSubmissionValidatedModelNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &UpdateSubmissionValidatedModelNoContent{}, nil - } - // Convenient error response. - defRes, err := func() (res *ErrorStatusCode, err error) { - ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) - if err != nil { - return res, errors.Wrap(err, "parse media type") - } - switch { - case ct == "application/json": - buf, err := io.ReadAll(resp.Body) - if err != nil { - return res, err - } - d := jx.DecodeBytes(buf) - - var response Error - if err := func() error { - if err := response.Decode(d); err != nil { - return err - } - if err := d.Skip(); err != io.EOF { - return errors.New("unexpected trailing data") - } - return nil - }(); err != nil { - err = &ogenerrors.DecodeBodyError{ - ContentType: ct, - Body: buf, - Err: err, - } - return res, err - } - // Validate response. - if err := func() error { - if err := response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - return res, errors.Wrap(err, "validate") - } - return &ErrorStatusCode{ - StatusCode: resp.StatusCode, - Response: response, - }, nil - default: - return res, validate.InvalidContentType(ct) - } - }() - if err != nil { - return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) - } - return res, errors.Wrap(defRes, "error") -} diff --git a/pkg/internal/oas_response_encoders_gen.go b/pkg/internal/oas_response_encoders_gen.go deleted file mode 100644 index 00268a8..0000000 --- a/pkg/internal/oas_response_encoders_gen.go +++ /dev/null @@ -1,266 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "net/http" - - "github.com/go-faster/errors" - "github.com/go-faster/jx" - "go.opentelemetry.io/otel/codes" - "go.opentelemetry.io/otel/trace" - - ht "github.com/ogen-go/ogen/http" -) - -func encodeActionMapfixAcceptedResponse(response *ActionMapfixAcceptedNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionMapfixRequestChangesResponse(response *ActionMapfixRequestChangesNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionMapfixSubmittedResponse(response *ActionMapfixSubmittedNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionMapfixUploadedResponse(response *ActionMapfixUploadedNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionMapfixValidatedResponse(response *ActionMapfixValidatedNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionOperationFailedResponse(response *ActionOperationFailedNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionSubmissionAcceptedResponse(response *ActionSubmissionAcceptedNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionSubmissionRequestChangesResponse(response *ActionSubmissionRequestChangesNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionSubmissionSubmittedResponse(response *ActionSubmissionSubmittedNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionSubmissionUploadedResponse(response *ActionSubmissionUploadedNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeActionSubmissionValidatedResponse(response *ActionSubmissionValidatedNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeCreateMapfixResponse(response *MapfixID, w http.ResponseWriter, span trace.Span) error { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.WriteHeader(201) - span.SetStatus(codes.Ok, http.StatusText(201)) - - e := new(jx.Encoder) - response.Encode(e) - if _, err := e.WriteTo(w); err != nil { - return errors.Wrap(err, "write") - } - - return nil -} - -func encodeCreateMapfixAuditCheckListResponse(response *CreateMapfixAuditCheckListNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeCreateMapfixAuditErrorResponse(response *CreateMapfixAuditErrorNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeCreateScriptResponse(response *ScriptID, w http.ResponseWriter, span trace.Span) error { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.WriteHeader(201) - span.SetStatus(codes.Ok, http.StatusText(201)) - - e := new(jx.Encoder) - response.Encode(e) - if _, err := e.WriteTo(w); err != nil { - return errors.Wrap(err, "write") - } - - return nil -} - -func encodeCreateScriptPolicyResponse(response *ScriptPolicyID, w http.ResponseWriter, span trace.Span) error { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.WriteHeader(201) - span.SetStatus(codes.Ok, http.StatusText(201)) - - e := new(jx.Encoder) - response.Encode(e) - if _, err := e.WriteTo(w); err != nil { - return errors.Wrap(err, "write") - } - - return nil -} - -func encodeCreateSubmissionResponse(response *SubmissionID, w http.ResponseWriter, span trace.Span) error { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.WriteHeader(201) - span.SetStatus(codes.Ok, http.StatusText(201)) - - e := new(jx.Encoder) - response.Encode(e) - if _, err := e.WriteTo(w); err != nil { - return errors.Wrap(err, "write") - } - - return nil -} - -func encodeCreateSubmissionAuditCheckListResponse(response *CreateSubmissionAuditCheckListNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeCreateSubmissionAuditErrorResponse(response *CreateSubmissionAuditErrorNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeGetScriptResponse(response *Script, w http.ResponseWriter, span trace.Span) error { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.WriteHeader(200) - span.SetStatus(codes.Ok, http.StatusText(200)) - - e := new(jx.Encoder) - response.Encode(e) - if _, err := e.WriteTo(w); err != nil { - return errors.Wrap(err, "write") - } - - return nil -} - -func encodeListScriptPolicyResponse(response []ScriptPolicy, w http.ResponseWriter, span trace.Span) error { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.WriteHeader(200) - span.SetStatus(codes.Ok, http.StatusText(200)) - - e := new(jx.Encoder) - e.ArrStart() - for _, elem := range response { - elem.Encode(e) - } - e.ArrEnd() - if _, err := e.WriteTo(w); err != nil { - return errors.Wrap(err, "write") - } - - return nil -} - -func encodeListScriptsResponse(response []Script, w http.ResponseWriter, span trace.Span) error { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.WriteHeader(200) - span.SetStatus(codes.Ok, http.StatusText(200)) - - e := new(jx.Encoder) - e.ArrStart() - for _, elem := range response { - elem.Encode(e) - } - e.ArrEnd() - if _, err := e.WriteTo(w); err != nil { - return errors.Wrap(err, "write") - } - - return nil -} - -func encodeUpdateMapfixValidatedModelResponse(response *UpdateMapfixValidatedModelNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeUpdateSubmissionValidatedModelResponse(response *UpdateSubmissionValidatedModelNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - -func encodeErrorResponse(response *ErrorStatusCode, w http.ResponseWriter, span trace.Span) error { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - code := response.StatusCode - if code == 0 { - // Set default status code. - code = http.StatusOK - } - w.WriteHeader(code) - if st := http.StatusText(code); code >= http.StatusBadRequest { - span.SetStatus(codes.Error, st) - } else { - span.SetStatus(codes.Ok, st) - } - - e := new(jx.Encoder) - response.Response.Encode(e) - if _, err := e.WriteTo(w); err != nil { - return errors.Wrap(err, "write") - } - - if code >= http.StatusInternalServerError { - return errors.Wrapf(ht.ErrInternalServerErrorResponse, "code: %d, message: %s", code, http.StatusText(code)) - } - return nil - -} diff --git a/pkg/internal/oas_router_gen.go b/pkg/internal/oas_router_gen.go deleted file mode 100644 index e89474a..0000000 --- a/pkg/internal/oas_router_gen.go +++ /dev/null @@ -1,1517 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "net/http" - "net/url" - "strings" - - "github.com/ogen-go/ogen/uri" -) - -func (s *Server) cutPrefix(path string) (string, bool) { - prefix := s.cfg.Prefix - if prefix == "" { - return path, true - } - if !strings.HasPrefix(path, prefix) { - // Prefix doesn't match. - return "", false - } - // Cut prefix from the path. - return strings.TrimPrefix(path, prefix), true -} - -// ServeHTTP serves http request as defined by OpenAPI v3 specification, -// calling handler that matches the path or returning not found error. -func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { - elem := r.URL.Path - elemIsEscaped := false - if rawPath := r.URL.RawPath; rawPath != "" { - if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { - elem = normalized - elemIsEscaped = strings.ContainsRune(elem, '%') - } - } - - elem, ok := s.cutPrefix(elem) - if !ok || len(elem) == 0 { - s.notFound(w, r) - return - } - args := [1]string{} - - // Static code generated router with unwrapped path search. - switch { - default: - if len(elem) == 0 { - break - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'm': // Prefix: "mapfixes" - - if l := len("mapfixes"); len(elem) >= l && elem[0:l] == "mapfixes" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - switch r.Method { - case "POST": - s.handleCreateMapfixRequest([0]string{}, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - // Param: "MapfixID" - // Match until "/" - idx := strings.IndexByte(elem, '/') - if idx < 0 { - idx = len(elem) - } - args[0] = elem[:idx] - elem = elem[idx:] - - if len(elem) == 0 { - break - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'c': // Prefix: "checklist" - - if l := len("checklist"); len(elem) >= l && elem[0:l] == "checklist" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleCreateMapfixAuditCheckListRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 'e': // Prefix: "error" - - if l := len("error"); len(elem) >= l && elem[0:l] == "error" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleCreateMapfixAuditErrorRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 's': // Prefix: "status/validator-" - - if l := len("status/validator-"); len(elem) >= l && elem[0:l] == "status/validator-" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'f': // Prefix: "failed" - - if l := len("failed"); len(elem) >= l && elem[0:l] == "failed" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionMapfixAcceptedRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 'r': // Prefix: "request-changes" - - if l := len("request-changes"); len(elem) >= l && elem[0:l] == "request-changes" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionMapfixRequestChangesRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 's': // Prefix: "submitted" - - if l := len("submitted"); len(elem) >= l && elem[0:l] == "submitted" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionMapfixSubmittedRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 'u': // Prefix: "uploaded" - - if l := len("uploaded"); len(elem) >= l && elem[0:l] == "uploaded" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionMapfixUploadedRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 'v': // Prefix: "validated" - - if l := len("validated"); len(elem) >= l && elem[0:l] == "validated" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionMapfixValidatedRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - } - - case 'v': // Prefix: "validated-model" - - if l := len("validated-model"); len(elem) >= l && elem[0:l] == "validated-model" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleUpdateMapfixValidatedModelRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - } - - } - - } - - case 'o': // Prefix: "operations/" - - if l := len("operations/"); len(elem) >= l && elem[0:l] == "operations/" { - elem = elem[l:] - } else { - break - } - - // Param: "OperationID" - // Match until "/" - idx := strings.IndexByte(elem, '/') - if idx < 0 { - idx = len(elem) - } - args[0] = elem[:idx] - elem = elem[idx:] - - if len(elem) == 0 { - break - } - switch elem[0] { - case '/': // Prefix: "/status/operation-failed" - - if l := len("/status/operation-failed"); len(elem) >= l && elem[0:l] == "/status/operation-failed" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionOperationFailedRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - } - - case 's': // Prefix: "s" - - if l := len("s"); len(elem) >= l && elem[0:l] == "s" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'c': // Prefix: "cript" - - if l := len("cript"); len(elem) >= l && elem[0:l] == "cript" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case '-': // Prefix: "-policy" - - if l := len("-policy"); len(elem) >= l && elem[0:l] == "-policy" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "GET": - s.handleListScriptPolicyRequest([0]string{}, elemIsEscaped, w, r) - case "POST": - s.handleCreateScriptPolicyRequest([0]string{}, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "GET,POST") - } - - return - } - - case 's': // Prefix: "s" - - if l := len("s"); len(elem) >= l && elem[0:l] == "s" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - switch r.Method { - case "GET": - s.handleListScriptsRequest([0]string{}, elemIsEscaped, w, r) - case "POST": - s.handleCreateScriptRequest([0]string{}, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "GET,POST") - } - - return - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - // Param: "ScriptID" - // Leaf parameter, slashes are prohibited - idx := strings.IndexByte(elem, '/') - if idx >= 0 { - break - } - args[0] = elem - elem = "" - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "GET": - s.handleGetScriptRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "GET") - } - - return - } - - } - - } - - case 'u': // Prefix: "ubmissions" - - if l := len("ubmissions"); len(elem) >= l && elem[0:l] == "ubmissions" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - switch r.Method { - case "POST": - s.handleCreateSubmissionRequest([0]string{}, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - // Param: "SubmissionID" - // Match until "/" - idx := strings.IndexByte(elem, '/') - if idx < 0 { - idx = len(elem) - } - args[0] = elem[:idx] - elem = elem[idx:] - - if len(elem) == 0 { - break - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'c': // Prefix: "checklist" - - if l := len("checklist"); len(elem) >= l && elem[0:l] == "checklist" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleCreateSubmissionAuditCheckListRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 'e': // Prefix: "error" - - if l := len("error"); len(elem) >= l && elem[0:l] == "error" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleCreateSubmissionAuditErrorRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 's': // Prefix: "status/validator-" - - if l := len("status/validator-"); len(elem) >= l && elem[0:l] == "status/validator-" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'f': // Prefix: "failed" - - if l := len("failed"); len(elem) >= l && elem[0:l] == "failed" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionSubmissionAcceptedRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 'r': // Prefix: "request-changes" - - if l := len("request-changes"); len(elem) >= l && elem[0:l] == "request-changes" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionSubmissionRequestChangesRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 's': // Prefix: "submitted" - - if l := len("submitted"); len(elem) >= l && elem[0:l] == "submitted" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionSubmissionSubmittedRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 'u': // Prefix: "uploaded" - - if l := len("uploaded"); len(elem) >= l && elem[0:l] == "uploaded" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionSubmissionUploadedRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - case 'v': // Prefix: "validated" - - if l := len("validated"); len(elem) >= l && elem[0:l] == "validated" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionSubmissionValidatedRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - } - - case 'v': // Prefix: "validated-model" - - if l := len("validated-model"); len(elem) >= l && elem[0:l] == "validated-model" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleUpdateSubmissionValidatedModelRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - - } - - } - - } - - } - - } - - } - } - s.notFound(w, r) -} - -// Route is route object. -type Route struct { - name string - summary string - operationID string - pathPattern string - count int - args [1]string -} - -// Name returns ogen operation name. -// -// It is guaranteed to be unique and not empty. -func (r Route) Name() string { - return r.name -} - -// Summary returns OpenAPI summary. -func (r Route) Summary() string { - return r.summary -} - -// OperationID returns OpenAPI operationId. -func (r Route) OperationID() string { - return r.operationID -} - -// PathPattern returns OpenAPI path. -func (r Route) PathPattern() string { - return r.pathPattern -} - -// Args returns parsed arguments. -func (r Route) Args() []string { - return r.args[:r.count] -} - -// FindRoute finds Route for given method and path. -// -// Note: this method does not unescape path or handle reserved characters in path properly. Use FindPath instead. -func (s *Server) FindRoute(method, path string) (Route, bool) { - return s.FindPath(method, &url.URL{Path: path}) -} - -// FindPath finds Route for given method and URL. -func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { - var ( - elem = u.Path - args = r.args - ) - if rawPath := u.RawPath; rawPath != "" { - if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { - elem = normalized - } - defer func() { - for i, arg := range r.args[:r.count] { - if unescaped, err := url.PathUnescape(arg); err == nil { - r.args[i] = unescaped - } - } - }() - } - - elem, ok := s.cutPrefix(elem) - if !ok { - return r, false - } - - // Static code generated router with unwrapped path search. - switch { - default: - if len(elem) == 0 { - break - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'm': // Prefix: "mapfixes" - - if l := len("mapfixes"); len(elem) >= l && elem[0:l] == "mapfixes" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - switch method { - case "POST": - r.name = CreateMapfixOperation - r.summary = "Create a mapfix" - r.operationID = "createMapfix" - r.pathPattern = "/mapfixes" - r.args = args - r.count = 0 - return r, true - default: - return - } - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - // Param: "MapfixID" - // Match until "/" - idx := strings.IndexByte(elem, '/') - if idx < 0 { - idx = len(elem) - } - args[0] = elem[:idx] - elem = elem[idx:] - - if len(elem) == 0 { - break - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'c': // Prefix: "checklist" - - if l := len("checklist"); len(elem) >= l && elem[0:l] == "checklist" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = CreateMapfixAuditCheckListOperation - r.summary = "Validator posts a checklist to the audit log" - r.operationID = "createMapfixAuditCheckList" - r.pathPattern = "/mapfixes/{MapfixID}/checklist" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 'e': // Prefix: "error" - - if l := len("error"); len(elem) >= l && elem[0:l] == "error" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = CreateMapfixAuditErrorOperation - r.summary = "Validator posts an error to the audit log" - r.operationID = "createMapfixAuditError" - r.pathPattern = "/mapfixes/{MapfixID}/error" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 's': // Prefix: "status/validator-" - - if l := len("status/validator-"); len(elem) >= l && elem[0:l] == "status/validator-" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'f': // Prefix: "failed" - - if l := len("failed"); len(elem) >= l && elem[0:l] == "failed" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionMapfixAcceptedOperation - r.summary = "(Internal endpoint) Role Validator changes status from Validating -> Accepted" - r.operationID = "actionMapfixAccepted" - r.pathPattern = "/mapfixes/{MapfixID}/status/validator-failed" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 'r': // Prefix: "request-changes" - - if l := len("request-changes"); len(elem) >= l && elem[0:l] == "request-changes" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionMapfixRequestChangesOperation - r.summary = "(Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested" - r.operationID = "actionMapfixRequestChanges" - r.pathPattern = "/mapfixes/{MapfixID}/status/validator-request-changes" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 's': // Prefix: "submitted" - - if l := len("submitted"); len(elem) >= l && elem[0:l] == "submitted" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionMapfixSubmittedOperation - r.summary = "(Internal endpoint) Role Validator changes status from Submitting -> Submitted" - r.operationID = "actionMapfixSubmitted" - r.pathPattern = "/mapfixes/{MapfixID}/status/validator-submitted" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 'u': // Prefix: "uploaded" - - if l := len("uploaded"); len(elem) >= l && elem[0:l] == "uploaded" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionMapfixUploadedOperation - r.summary = "(Internal endpoint) Role Validator changes status from Uploading -> Uploaded" - r.operationID = "actionMapfixUploaded" - r.pathPattern = "/mapfixes/{MapfixID}/status/validator-uploaded" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 'v': // Prefix: "validated" - - if l := len("validated"); len(elem) >= l && elem[0:l] == "validated" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionMapfixValidatedOperation - r.summary = "(Internal endpoint) Role Validator changes status from Validating -> Validated" - r.operationID = "actionMapfixValidated" - r.pathPattern = "/mapfixes/{MapfixID}/status/validator-validated" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - } - - case 'v': // Prefix: "validated-model" - - if l := len("validated-model"); len(elem) >= l && elem[0:l] == "validated-model" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = UpdateMapfixValidatedModelOperation - r.summary = "Update validated model" - r.operationID = "updateMapfixValidatedModel" - r.pathPattern = "/mapfixes/{MapfixID}/validated-model" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - } - - } - - } - - case 'o': // Prefix: "operations/" - - if l := len("operations/"); len(elem) >= l && elem[0:l] == "operations/" { - elem = elem[l:] - } else { - break - } - - // Param: "OperationID" - // Match until "/" - idx := strings.IndexByte(elem, '/') - if idx < 0 { - idx = len(elem) - } - args[0] = elem[:idx] - elem = elem[idx:] - - if len(elem) == 0 { - break - } - switch elem[0] { - case '/': // Prefix: "/status/operation-failed" - - if l := len("/status/operation-failed"); len(elem) >= l && elem[0:l] == "/status/operation-failed" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionOperationFailedOperation - r.summary = "(Internal endpoint) Fail an operation and write a StatusMessage" - r.operationID = "actionOperationFailed" - r.pathPattern = "/operations/{OperationID}/status/operation-failed" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - } - - case 's': // Prefix: "s" - - if l := len("s"); len(elem) >= l && elem[0:l] == "s" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'c': // Prefix: "cript" - - if l := len("cript"); len(elem) >= l && elem[0:l] == "cript" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case '-': // Prefix: "-policy" - - if l := len("-policy"); len(elem) >= l && elem[0:l] == "-policy" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "GET": - r.name = ListScriptPolicyOperation - r.summary = "Get list of script policies" - r.operationID = "listScriptPolicy" - r.pathPattern = "/script-policy" - r.args = args - r.count = 0 - return r, true - case "POST": - r.name = CreateScriptPolicyOperation - r.summary = "Create a new script policy" - r.operationID = "createScriptPolicy" - r.pathPattern = "/script-policy" - r.args = args - r.count = 0 - return r, true - default: - return - } - } - - case 's': // Prefix: "s" - - if l := len("s"); len(elem) >= l && elem[0:l] == "s" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - switch method { - case "GET": - r.name = ListScriptsOperation - r.summary = "Get list of scripts" - r.operationID = "listScripts" - r.pathPattern = "/scripts" - r.args = args - r.count = 0 - return r, true - case "POST": - r.name = CreateScriptOperation - r.summary = "Create a new script" - r.operationID = "createScript" - r.pathPattern = "/scripts" - r.args = args - r.count = 0 - return r, true - default: - return - } - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - // Param: "ScriptID" - // Leaf parameter, slashes are prohibited - idx := strings.IndexByte(elem, '/') - if idx >= 0 { - break - } - args[0] = elem - elem = "" - - if len(elem) == 0 { - // Leaf node. - switch method { - case "GET": - r.name = GetScriptOperation - r.summary = "Get the specified script by ID" - r.operationID = "getScript" - r.pathPattern = "/scripts/{ScriptID}" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - } - - } - - case 'u': // Prefix: "ubmissions" - - if l := len("ubmissions"); len(elem) >= l && elem[0:l] == "ubmissions" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - switch method { - case "POST": - r.name = CreateSubmissionOperation - r.summary = "Create a new submission" - r.operationID = "createSubmission" - r.pathPattern = "/submissions" - r.args = args - r.count = 0 - return r, true - default: - return - } - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - // Param: "SubmissionID" - // Match until "/" - idx := strings.IndexByte(elem, '/') - if idx < 0 { - idx = len(elem) - } - args[0] = elem[:idx] - elem = elem[idx:] - - if len(elem) == 0 { - break - } - switch elem[0] { - case '/': // Prefix: "/" - - if l := len("/"); len(elem) >= l && elem[0:l] == "/" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'c': // Prefix: "checklist" - - if l := len("checklist"); len(elem) >= l && elem[0:l] == "checklist" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = CreateSubmissionAuditCheckListOperation - r.summary = "Validator posts a checklist to the audit log" - r.operationID = "createSubmissionAuditCheckList" - r.pathPattern = "/submissions/{SubmissionID}/checklist" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 'e': // Prefix: "error" - - if l := len("error"); len(elem) >= l && elem[0:l] == "error" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = CreateSubmissionAuditErrorOperation - r.summary = "Validator posts an error to the audit log" - r.operationID = "createSubmissionAuditError" - r.pathPattern = "/submissions/{SubmissionID}/error" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 's': // Prefix: "status/validator-" - - if l := len("status/validator-"); len(elem) >= l && elem[0:l] == "status/validator-" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - break - } - switch elem[0] { - case 'f': // Prefix: "failed" - - if l := len("failed"); len(elem) >= l && elem[0:l] == "failed" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionSubmissionAcceptedOperation - r.summary = "(Internal endpoint) Role Validator changes status from Validating -> Accepted" - r.operationID = "actionSubmissionAccepted" - r.pathPattern = "/submissions/{SubmissionID}/status/validator-failed" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 'r': // Prefix: "request-changes" - - if l := len("request-changes"); len(elem) >= l && elem[0:l] == "request-changes" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionSubmissionRequestChangesOperation - r.summary = "(Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested" - r.operationID = "actionSubmissionRequestChanges" - r.pathPattern = "/submissions/{SubmissionID}/status/validator-request-changes" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 's': // Prefix: "submitted" - - if l := len("submitted"); len(elem) >= l && elem[0:l] == "submitted" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionSubmissionSubmittedOperation - r.summary = "(Internal endpoint) Role Validator changes status from Submitting -> Submitted" - r.operationID = "actionSubmissionSubmitted" - r.pathPattern = "/submissions/{SubmissionID}/status/validator-submitted" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 'u': // Prefix: "uploaded" - - if l := len("uploaded"); len(elem) >= l && elem[0:l] == "uploaded" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionSubmissionUploadedOperation - r.summary = "(Internal endpoint) Role Validator changes status from Uploading -> Uploaded" - r.operationID = "actionSubmissionUploaded" - r.pathPattern = "/submissions/{SubmissionID}/status/validator-uploaded" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - case 'v': // Prefix: "validated" - - if l := len("validated"); len(elem) >= l && elem[0:l] == "validated" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionSubmissionValidatedOperation - r.summary = "(Internal endpoint) Role Validator changes status from Validating -> Validated" - r.operationID = "actionSubmissionValidated" - r.pathPattern = "/submissions/{SubmissionID}/status/validator-validated" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - } - - case 'v': // Prefix: "validated-model" - - if l := len("validated-model"); len(elem) >= l && elem[0:l] == "validated-model" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = UpdateSubmissionValidatedModelOperation - r.summary = "Update validated model" - r.operationID = "updateSubmissionValidatedModel" - r.pathPattern = "/submissions/{SubmissionID}/validated-model" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - - } - - } - - } - - } - - } - - } - } - return r, false -} diff --git a/pkg/internal/oas_schemas_gen.go b/pkg/internal/oas_schemas_gen.go deleted file mode 100644 index bcca85e..0000000 --- a/pkg/internal/oas_schemas_gen.go +++ /dev/null @@ -1,761 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "fmt" -) - -func (s *ErrorStatusCode) Error() string { - return fmt.Sprintf("code %d: %+v", s.StatusCode, s.Response) -} - -// ActionMapfixAcceptedNoContent is response for ActionMapfixAccepted operation. -type ActionMapfixAcceptedNoContent struct{} - -// ActionMapfixRequestChangesNoContent is response for ActionMapfixRequestChanges operation. -type ActionMapfixRequestChangesNoContent struct{} - -// ActionMapfixSubmittedNoContent is response for ActionMapfixSubmitted operation. -type ActionMapfixSubmittedNoContent struct{} - -// ActionMapfixUploadedNoContent is response for ActionMapfixUploaded operation. -type ActionMapfixUploadedNoContent struct{} - -// ActionMapfixValidatedNoContent is response for ActionMapfixValidated operation. -type ActionMapfixValidatedNoContent struct{} - -// ActionOperationFailedNoContent is response for ActionOperationFailed operation. -type ActionOperationFailedNoContent struct{} - -// ActionSubmissionAcceptedNoContent is response for ActionSubmissionAccepted operation. -type ActionSubmissionAcceptedNoContent struct{} - -// ActionSubmissionRequestChangesNoContent is response for ActionSubmissionRequestChanges operation. -type ActionSubmissionRequestChangesNoContent struct{} - -// ActionSubmissionSubmittedNoContent is response for ActionSubmissionSubmitted operation. -type ActionSubmissionSubmittedNoContent struct{} - -// ActionSubmissionUploadedNoContent is response for ActionSubmissionUploaded operation. -type ActionSubmissionUploadedNoContent struct{} - -// ActionSubmissionValidatedNoContent is response for ActionSubmissionValidated operation. -type ActionSubmissionValidatedNoContent struct{} - -// Ref: #/components/schemas/Check -type Check struct { - Name string `json:"Name"` - Summary string `json:"Summary"` - Passed bool `json:"Passed"` -} - -// GetName returns the value of Name. -func (s *Check) GetName() string { - return s.Name -} - -// GetSummary returns the value of Summary. -func (s *Check) GetSummary() string { - return s.Summary -} - -// GetPassed returns the value of Passed. -func (s *Check) GetPassed() bool { - return s.Passed -} - -// SetName sets the value of Name. -func (s *Check) SetName(val string) { - s.Name = val -} - -// SetSummary sets the value of Summary. -func (s *Check) SetSummary(val string) { - s.Summary = val -} - -// SetPassed sets the value of Passed. -func (s *Check) SetPassed(val bool) { - s.Passed = val -} - -type CheckList []Check - -// CreateMapfixAuditCheckListNoContent is response for CreateMapfixAuditCheckList operation. -type CreateMapfixAuditCheckListNoContent struct{} - -// CreateMapfixAuditErrorNoContent is response for CreateMapfixAuditError operation. -type CreateMapfixAuditErrorNoContent struct{} - -// CreateSubmissionAuditCheckListNoContent is response for CreateSubmissionAuditCheckList operation. -type CreateSubmissionAuditCheckListNoContent struct{} - -// CreateSubmissionAuditErrorNoContent is response for CreateSubmissionAuditError operation. -type CreateSubmissionAuditErrorNoContent struct{} - -// Represents error object. -// Ref: #/components/schemas/Error -type Error struct { - Code int64 `json:"code"` - Message string `json:"message"` -} - -// GetCode returns the value of Code. -func (s *Error) GetCode() int64 { - return s.Code -} - -// GetMessage returns the value of Message. -func (s *Error) GetMessage() string { - return s.Message -} - -// SetCode sets the value of Code. -func (s *Error) SetCode(val int64) { - s.Code = val -} - -// SetMessage sets the value of Message. -func (s *Error) SetMessage(val string) { - s.Message = val -} - -// ErrorStatusCode wraps Error with StatusCode. -type ErrorStatusCode struct { - StatusCode int - Response Error -} - -// GetStatusCode returns the value of StatusCode. -func (s *ErrorStatusCode) GetStatusCode() int { - return s.StatusCode -} - -// GetResponse returns the value of Response. -func (s *ErrorStatusCode) GetResponse() Error { - return s.Response -} - -// SetStatusCode sets the value of StatusCode. -func (s *ErrorStatusCode) SetStatusCode(val int) { - s.StatusCode = val -} - -// SetResponse sets the value of Response. -func (s *ErrorStatusCode) SetResponse(val Error) { - s.Response = val -} - -// Ref: #/components/schemas/MapfixCreate -type MapfixCreate struct { - OperationID int32 `json:"OperationID"` - AssetOwner int64 `json:"AssetOwner"` - DisplayName string `json:"DisplayName"` - Creator string `json:"Creator"` - GameID int32 `json:"GameID"` - AssetID int64 `json:"AssetID"` - AssetVersion int64 `json:"AssetVersion"` - TargetAssetID int64 `json:"TargetAssetID"` - Description string `json:"Description"` -} - -// GetOperationID returns the value of OperationID. -func (s *MapfixCreate) GetOperationID() int32 { - return s.OperationID -} - -// GetAssetOwner returns the value of AssetOwner. -func (s *MapfixCreate) GetAssetOwner() int64 { - return s.AssetOwner -} - -// GetDisplayName returns the value of DisplayName. -func (s *MapfixCreate) GetDisplayName() string { - return s.DisplayName -} - -// GetCreator returns the value of Creator. -func (s *MapfixCreate) GetCreator() string { - return s.Creator -} - -// GetGameID returns the value of GameID. -func (s *MapfixCreate) GetGameID() int32 { - return s.GameID -} - -// GetAssetID returns the value of AssetID. -func (s *MapfixCreate) GetAssetID() int64 { - return s.AssetID -} - -// GetAssetVersion returns the value of AssetVersion. -func (s *MapfixCreate) GetAssetVersion() int64 { - return s.AssetVersion -} - -// GetTargetAssetID returns the value of TargetAssetID. -func (s *MapfixCreate) GetTargetAssetID() int64 { - return s.TargetAssetID -} - -// GetDescription returns the value of Description. -func (s *MapfixCreate) GetDescription() string { - return s.Description -} - -// SetOperationID sets the value of OperationID. -func (s *MapfixCreate) SetOperationID(val int32) { - s.OperationID = val -} - -// SetAssetOwner sets the value of AssetOwner. -func (s *MapfixCreate) SetAssetOwner(val int64) { - s.AssetOwner = val -} - -// SetDisplayName sets the value of DisplayName. -func (s *MapfixCreate) SetDisplayName(val string) { - s.DisplayName = val -} - -// SetCreator sets the value of Creator. -func (s *MapfixCreate) SetCreator(val string) { - s.Creator = val -} - -// SetGameID sets the value of GameID. -func (s *MapfixCreate) SetGameID(val int32) { - s.GameID = val -} - -// SetAssetID sets the value of AssetID. -func (s *MapfixCreate) SetAssetID(val int64) { - s.AssetID = val -} - -// SetAssetVersion sets the value of AssetVersion. -func (s *MapfixCreate) SetAssetVersion(val int64) { - s.AssetVersion = val -} - -// SetTargetAssetID sets the value of TargetAssetID. -func (s *MapfixCreate) SetTargetAssetID(val int64) { - s.TargetAssetID = val -} - -// SetDescription sets the value of Description. -func (s *MapfixCreate) SetDescription(val string) { - s.Description = val -} - -// Ref: #/components/schemas/MapfixID -type MapfixID struct { - MapfixID int64 `json:"MapfixID"` -} - -// GetMapfixID returns the value of MapfixID. -func (s *MapfixID) GetMapfixID() int64 { - return s.MapfixID -} - -// SetMapfixID sets the value of MapfixID. -func (s *MapfixID) SetMapfixID(val int64) { - s.MapfixID = val -} - -// NewOptInt32 returns new OptInt32 with value set to v. -func NewOptInt32(v int32) OptInt32 { - return OptInt32{ - Value: v, - Set: true, - } -} - -// OptInt32 is optional int32. -type OptInt32 struct { - Value int32 - Set bool -} - -// IsSet returns true if OptInt32 was set. -func (o OptInt32) IsSet() bool { return o.Set } - -// Reset unsets value. -func (o *OptInt32) Reset() { - var v int32 - o.Value = v - o.Set = false -} - -// SetTo sets value to v. -func (o *OptInt32) SetTo(v int32) { - o.Set = true - o.Value = v -} - -// Get returns value and boolean that denotes whether value was set. -func (o OptInt32) Get() (v int32, ok bool) { - if !o.Set { - return v, false - } - return o.Value, true -} - -// Or returns value if set, or given parameter if does not. -func (o OptInt32) Or(d int32) int32 { - if v, ok := o.Get(); ok { - return v - } - return d -} - -// NewOptInt64 returns new OptInt64 with value set to v. -func NewOptInt64(v int64) OptInt64 { - return OptInt64{ - Value: v, - Set: true, - } -} - -// OptInt64 is optional int64. -type OptInt64 struct { - Value int64 - Set bool -} - -// IsSet returns true if OptInt64 was set. -func (o OptInt64) IsSet() bool { return o.Set } - -// Reset unsets value. -func (o *OptInt64) Reset() { - var v int64 - o.Value = v - o.Set = false -} - -// SetTo sets value to v. -func (o *OptInt64) SetTo(v int64) { - o.Set = true - o.Value = v -} - -// Get returns value and boolean that denotes whether value was set. -func (o OptInt64) Get() (v int64, ok bool) { - if !o.Set { - return v, false - } - return o.Value, true -} - -// Or returns value if set, or given parameter if does not. -func (o OptInt64) Or(d int64) int64 { - if v, ok := o.Get(); ok { - return v - } - return d -} - -// NewOptString returns new OptString with value set to v. -func NewOptString(v string) OptString { - return OptString{ - Value: v, - Set: true, - } -} - -// OptString is optional string. -type OptString struct { - Value string - Set bool -} - -// IsSet returns true if OptString was set. -func (o OptString) IsSet() bool { return o.Set } - -// Reset unsets value. -func (o *OptString) Reset() { - var v string - o.Value = v - o.Set = false -} - -// SetTo sets value to v. -func (o *OptString) SetTo(v string) { - o.Set = true - o.Value = v -} - -// Get returns value and boolean that denotes whether value was set. -func (o OptString) Get() (v string, ok bool) { - if !o.Set { - return v, false - } - return o.Value, true -} - -// Or returns value if set, or given parameter if does not. -func (o OptString) Or(d string) string { - if v, ok := o.Get(); ok { - return v - } - return d -} - -// Ref: #/components/schemas/Script -type Script struct { - ID int64 `json:"ID"` - Name string `json:"Name"` - Hash string `json:"Hash"` - Source string `json:"Source"` - ResourceType int32 `json:"ResourceType"` - ResourceID int64 `json:"ResourceID"` -} - -// GetID returns the value of ID. -func (s *Script) GetID() int64 { - return s.ID -} - -// GetName returns the value of Name. -func (s *Script) GetName() string { - return s.Name -} - -// GetHash returns the value of Hash. -func (s *Script) GetHash() string { - return s.Hash -} - -// GetSource returns the value of Source. -func (s *Script) GetSource() string { - return s.Source -} - -// GetResourceType returns the value of ResourceType. -func (s *Script) GetResourceType() int32 { - return s.ResourceType -} - -// GetResourceID returns the value of ResourceID. -func (s *Script) GetResourceID() int64 { - return s.ResourceID -} - -// SetID sets the value of ID. -func (s *Script) SetID(val int64) { - s.ID = val -} - -// SetName sets the value of Name. -func (s *Script) SetName(val string) { - s.Name = val -} - -// SetHash sets the value of Hash. -func (s *Script) SetHash(val string) { - s.Hash = val -} - -// SetSource sets the value of Source. -func (s *Script) SetSource(val string) { - s.Source = val -} - -// SetResourceType sets the value of ResourceType. -func (s *Script) SetResourceType(val int32) { - s.ResourceType = val -} - -// SetResourceID sets the value of ResourceID. -func (s *Script) SetResourceID(val int64) { - s.ResourceID = val -} - -// Ref: #/components/schemas/ScriptCreate -type ScriptCreate struct { - Name string `json:"Name"` - Source string `json:"Source"` - ResourceType int32 `json:"ResourceType"` - ResourceID OptInt64 `json:"ResourceID"` -} - -// GetName returns the value of Name. -func (s *ScriptCreate) GetName() string { - return s.Name -} - -// GetSource returns the value of Source. -func (s *ScriptCreate) GetSource() string { - return s.Source -} - -// GetResourceType returns the value of ResourceType. -func (s *ScriptCreate) GetResourceType() int32 { - return s.ResourceType -} - -// GetResourceID returns the value of ResourceID. -func (s *ScriptCreate) GetResourceID() OptInt64 { - return s.ResourceID -} - -// SetName sets the value of Name. -func (s *ScriptCreate) SetName(val string) { - s.Name = val -} - -// SetSource sets the value of Source. -func (s *ScriptCreate) SetSource(val string) { - s.Source = val -} - -// SetResourceType sets the value of ResourceType. -func (s *ScriptCreate) SetResourceType(val int32) { - s.ResourceType = val -} - -// SetResourceID sets the value of ResourceID. -func (s *ScriptCreate) SetResourceID(val OptInt64) { - s.ResourceID = val -} - -// Ref: #/components/schemas/ScriptID -type ScriptID struct { - ScriptID int64 `json:"ScriptID"` -} - -// GetScriptID returns the value of ScriptID. -func (s *ScriptID) GetScriptID() int64 { - return s.ScriptID -} - -// SetScriptID sets the value of ScriptID. -func (s *ScriptID) SetScriptID(val int64) { - s.ScriptID = val -} - -// Ref: #/components/schemas/ScriptPolicy -type ScriptPolicy struct { - ID int64 `json:"ID"` - FromScriptHash string `json:"FromScriptHash"` - ToScriptID int64 `json:"ToScriptID"` - Policy int32 `json:"Policy"` -} - -// GetID returns the value of ID. -func (s *ScriptPolicy) GetID() int64 { - return s.ID -} - -// GetFromScriptHash returns the value of FromScriptHash. -func (s *ScriptPolicy) GetFromScriptHash() string { - return s.FromScriptHash -} - -// GetToScriptID returns the value of ToScriptID. -func (s *ScriptPolicy) GetToScriptID() int64 { - return s.ToScriptID -} - -// GetPolicy returns the value of Policy. -func (s *ScriptPolicy) GetPolicy() int32 { - return s.Policy -} - -// SetID sets the value of ID. -func (s *ScriptPolicy) SetID(val int64) { - s.ID = val -} - -// SetFromScriptHash sets the value of FromScriptHash. -func (s *ScriptPolicy) SetFromScriptHash(val string) { - s.FromScriptHash = val -} - -// SetToScriptID sets the value of ToScriptID. -func (s *ScriptPolicy) SetToScriptID(val int64) { - s.ToScriptID = val -} - -// SetPolicy sets the value of Policy. -func (s *ScriptPolicy) SetPolicy(val int32) { - s.Policy = val -} - -// Ref: #/components/schemas/ScriptPolicyCreate -type ScriptPolicyCreate struct { - FromScriptID int64 `json:"FromScriptID"` - ToScriptID int64 `json:"ToScriptID"` - Policy int32 `json:"Policy"` -} - -// GetFromScriptID returns the value of FromScriptID. -func (s *ScriptPolicyCreate) GetFromScriptID() int64 { - return s.FromScriptID -} - -// GetToScriptID returns the value of ToScriptID. -func (s *ScriptPolicyCreate) GetToScriptID() int64 { - return s.ToScriptID -} - -// GetPolicy returns the value of Policy. -func (s *ScriptPolicyCreate) GetPolicy() int32 { - return s.Policy -} - -// SetFromScriptID sets the value of FromScriptID. -func (s *ScriptPolicyCreate) SetFromScriptID(val int64) { - s.FromScriptID = val -} - -// SetToScriptID sets the value of ToScriptID. -func (s *ScriptPolicyCreate) SetToScriptID(val int64) { - s.ToScriptID = val -} - -// SetPolicy sets the value of Policy. -func (s *ScriptPolicyCreate) SetPolicy(val int32) { - s.Policy = val -} - -// Ref: #/components/schemas/ScriptPolicyID -type ScriptPolicyID struct { - ScriptPolicyID int64 `json:"ScriptPolicyID"` -} - -// GetScriptPolicyID returns the value of ScriptPolicyID. -func (s *ScriptPolicyID) GetScriptPolicyID() int64 { - return s.ScriptPolicyID -} - -// SetScriptPolicyID sets the value of ScriptPolicyID. -func (s *ScriptPolicyID) SetScriptPolicyID(val int64) { - s.ScriptPolicyID = val -} - -// Ref: #/components/schemas/SubmissionCreate -type SubmissionCreate struct { - OperationID int32 `json:"OperationID"` - AssetOwner int64 `json:"AssetOwner"` - DisplayName string `json:"DisplayName"` - Creator string `json:"Creator"` - GameID int32 `json:"GameID"` - AssetID int64 `json:"AssetID"` - AssetVersion int64 `json:"AssetVersion"` - Status uint32 `json:"Status"` - Roles uint32 `json:"Roles"` -} - -// GetOperationID returns the value of OperationID. -func (s *SubmissionCreate) GetOperationID() int32 { - return s.OperationID -} - -// GetAssetOwner returns the value of AssetOwner. -func (s *SubmissionCreate) GetAssetOwner() int64 { - return s.AssetOwner -} - -// GetDisplayName returns the value of DisplayName. -func (s *SubmissionCreate) GetDisplayName() string { - return s.DisplayName -} - -// GetCreator returns the value of Creator. -func (s *SubmissionCreate) GetCreator() string { - return s.Creator -} - -// GetGameID returns the value of GameID. -func (s *SubmissionCreate) GetGameID() int32 { - return s.GameID -} - -// GetAssetID returns the value of AssetID. -func (s *SubmissionCreate) GetAssetID() int64 { - return s.AssetID -} - -// GetAssetVersion returns the value of AssetVersion. -func (s *SubmissionCreate) GetAssetVersion() int64 { - return s.AssetVersion -} - -// GetStatus returns the value of Status. -func (s *SubmissionCreate) GetStatus() uint32 { - return s.Status -} - -// GetRoles returns the value of Roles. -func (s *SubmissionCreate) GetRoles() uint32 { - return s.Roles -} - -// SetOperationID sets the value of OperationID. -func (s *SubmissionCreate) SetOperationID(val int32) { - s.OperationID = val -} - -// SetAssetOwner sets the value of AssetOwner. -func (s *SubmissionCreate) SetAssetOwner(val int64) { - s.AssetOwner = val -} - -// SetDisplayName sets the value of DisplayName. -func (s *SubmissionCreate) SetDisplayName(val string) { - s.DisplayName = val -} - -// SetCreator sets the value of Creator. -func (s *SubmissionCreate) SetCreator(val string) { - s.Creator = val -} - -// SetGameID sets the value of GameID. -func (s *SubmissionCreate) SetGameID(val int32) { - s.GameID = val -} - -// SetAssetID sets the value of AssetID. -func (s *SubmissionCreate) SetAssetID(val int64) { - s.AssetID = val -} - -// SetAssetVersion sets the value of AssetVersion. -func (s *SubmissionCreate) SetAssetVersion(val int64) { - s.AssetVersion = val -} - -// SetStatus sets the value of Status. -func (s *SubmissionCreate) SetStatus(val uint32) { - s.Status = val -} - -// SetRoles sets the value of Roles. -func (s *SubmissionCreate) SetRoles(val uint32) { - s.Roles = val -} - -// Ref: #/components/schemas/SubmissionID -type SubmissionID struct { - SubmissionID int64 `json:"SubmissionID"` -} - -// GetSubmissionID returns the value of SubmissionID. -func (s *SubmissionID) GetSubmissionID() int64 { - return s.SubmissionID -} - -// SetSubmissionID sets the value of SubmissionID. -func (s *SubmissionID) SetSubmissionID(val int64) { - s.SubmissionID = val -} - -// UpdateMapfixValidatedModelNoContent is response for UpdateMapfixValidatedModel operation. -type UpdateMapfixValidatedModelNoContent struct{} - -// UpdateSubmissionValidatedModelNoContent is response for UpdateSubmissionValidatedModel operation. -type UpdateSubmissionValidatedModelNoContent struct{} diff --git a/pkg/internal/oas_server_gen.go b/pkg/internal/oas_server_gen.go deleted file mode 100644 index 58f028f..0000000 --- a/pkg/internal/oas_server_gen.go +++ /dev/null @@ -1,178 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "context" -) - -// Handler handles operations described by OpenAPI v3 specification. -type Handler interface { - // ActionMapfixAccepted implements actionMapfixAccepted operation. - // - // (Internal endpoint) Role Validator changes status from Validating -> Accepted. - // - // POST /mapfixes/{MapfixID}/status/validator-failed - ActionMapfixAccepted(ctx context.Context, params ActionMapfixAcceptedParams) error - // ActionMapfixRequestChanges implements actionMapfixRequestChanges operation. - // - // (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. - // - // POST /mapfixes/{MapfixID}/status/validator-request-changes - ActionMapfixRequestChanges(ctx context.Context, params ActionMapfixRequestChangesParams) error - // ActionMapfixSubmitted implements actionMapfixSubmitted operation. - // - // (Internal endpoint) Role Validator changes status from Submitting -> Submitted. - // - // POST /mapfixes/{MapfixID}/status/validator-submitted - ActionMapfixSubmitted(ctx context.Context, params ActionMapfixSubmittedParams) error - // ActionMapfixUploaded implements actionMapfixUploaded operation. - // - // (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. - // - // POST /mapfixes/{MapfixID}/status/validator-uploaded - ActionMapfixUploaded(ctx context.Context, params ActionMapfixUploadedParams) error - // ActionMapfixValidated implements actionMapfixValidated operation. - // - // (Internal endpoint) Role Validator changes status from Validating -> Validated. - // - // POST /mapfixes/{MapfixID}/status/validator-validated - ActionMapfixValidated(ctx context.Context, params ActionMapfixValidatedParams) error - // ActionOperationFailed implements actionOperationFailed operation. - // - // (Internal endpoint) Fail an operation and write a StatusMessage. - // - // POST /operations/{OperationID}/status/operation-failed - ActionOperationFailed(ctx context.Context, params ActionOperationFailedParams) error - // ActionSubmissionAccepted implements actionSubmissionAccepted operation. - // - // (Internal endpoint) Role Validator changes status from Validating -> Accepted. - // - // POST /submissions/{SubmissionID}/status/validator-failed - ActionSubmissionAccepted(ctx context.Context, params ActionSubmissionAcceptedParams) error - // ActionSubmissionRequestChanges implements actionSubmissionRequestChanges operation. - // - // (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. - // - // POST /submissions/{SubmissionID}/status/validator-request-changes - ActionSubmissionRequestChanges(ctx context.Context, params ActionSubmissionRequestChangesParams) error - // ActionSubmissionSubmitted implements actionSubmissionSubmitted operation. - // - // (Internal endpoint) Role Validator changes status from Submitting -> Submitted. - // - // POST /submissions/{SubmissionID}/status/validator-submitted - ActionSubmissionSubmitted(ctx context.Context, params ActionSubmissionSubmittedParams) error - // ActionSubmissionUploaded implements actionSubmissionUploaded operation. - // - // (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. - // - // POST /submissions/{SubmissionID}/status/validator-uploaded - ActionSubmissionUploaded(ctx context.Context, params ActionSubmissionUploadedParams) error - // ActionSubmissionValidated implements actionSubmissionValidated operation. - // - // (Internal endpoint) Role Validator changes status from Validating -> Validated. - // - // POST /submissions/{SubmissionID}/status/validator-validated - ActionSubmissionValidated(ctx context.Context, params ActionSubmissionValidatedParams) error - // CreateMapfix implements createMapfix operation. - // - // Create a mapfix. - // - // POST /mapfixes - CreateMapfix(ctx context.Context, req *MapfixCreate) (*MapfixID, error) - // CreateMapfixAuditCheckList implements createMapfixAuditCheckList operation. - // - // Validator posts a checklist to the audit log. - // - // POST /mapfixes/{MapfixID}/checklist - CreateMapfixAuditCheckList(ctx context.Context, req CheckList, params CreateMapfixAuditCheckListParams) error - // CreateMapfixAuditError implements createMapfixAuditError operation. - // - // Validator posts an error to the audit log. - // - // POST /mapfixes/{MapfixID}/error - CreateMapfixAuditError(ctx context.Context, params CreateMapfixAuditErrorParams) error - // CreateScript implements createScript operation. - // - // Create a new script. - // - // POST /scripts - CreateScript(ctx context.Context, req *ScriptCreate) (*ScriptID, error) - // CreateScriptPolicy implements createScriptPolicy operation. - // - // Create a new script policy. - // - // POST /script-policy - CreateScriptPolicy(ctx context.Context, req *ScriptPolicyCreate) (*ScriptPolicyID, error) - // CreateSubmission implements createSubmission operation. - // - // Create a new submission. - // - // POST /submissions - CreateSubmission(ctx context.Context, req *SubmissionCreate) (*SubmissionID, error) - // CreateSubmissionAuditCheckList implements createSubmissionAuditCheckList operation. - // - // Validator posts a checklist to the audit log. - // - // POST /submissions/{SubmissionID}/checklist - CreateSubmissionAuditCheckList(ctx context.Context, req CheckList, params CreateSubmissionAuditCheckListParams) error - // CreateSubmissionAuditError implements createSubmissionAuditError operation. - // - // Validator posts an error to the audit log. - // - // POST /submissions/{SubmissionID}/error - CreateSubmissionAuditError(ctx context.Context, params CreateSubmissionAuditErrorParams) error - // GetScript implements getScript operation. - // - // Get the specified script by ID. - // - // GET /scripts/{ScriptID} - GetScript(ctx context.Context, params GetScriptParams) (*Script, error) - // ListScriptPolicy implements listScriptPolicy operation. - // - // Get list of script policies. - // - // GET /script-policy - ListScriptPolicy(ctx context.Context, params ListScriptPolicyParams) ([]ScriptPolicy, error) - // ListScripts implements listScripts operation. - // - // Get list of scripts. - // - // GET /scripts - ListScripts(ctx context.Context, params ListScriptsParams) ([]Script, error) - // UpdateMapfixValidatedModel implements updateMapfixValidatedModel operation. - // - // Update validated model. - // - // POST /mapfixes/{MapfixID}/validated-model - UpdateMapfixValidatedModel(ctx context.Context, params UpdateMapfixValidatedModelParams) error - // UpdateSubmissionValidatedModel implements updateSubmissionValidatedModel operation. - // - // Update validated model. - // - // POST /submissions/{SubmissionID}/validated-model - UpdateSubmissionValidatedModel(ctx context.Context, params UpdateSubmissionValidatedModelParams) error - // NewError creates *ErrorStatusCode from error returned by handler. - // - // Used for common default response. - NewError(ctx context.Context, err error) *ErrorStatusCode -} - -// Server implements http server based on OpenAPI v3 specification and -// calls Handler to handle requests. -type Server struct { - h Handler - baseServer -} - -// NewServer creates new Server. -func NewServer(h Handler, opts ...ServerOption) (*Server, error) { - s, err := newServerConfig(opts...).baseServer() - if err != nil { - return nil, err - } - return &Server{ - h: h, - baseServer: s, - }, nil -} diff --git a/pkg/internal/oas_unimplemented_gen.go b/pkg/internal/oas_unimplemented_gen.go deleted file mode 100644 index 6257f15..0000000 --- a/pkg/internal/oas_unimplemented_gen.go +++ /dev/null @@ -1,238 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "context" - - ht "github.com/ogen-go/ogen/http" -) - -// UnimplementedHandler is no-op Handler which returns http.ErrNotImplemented. -type UnimplementedHandler struct{} - -var _ Handler = UnimplementedHandler{} - -// ActionMapfixAccepted implements actionMapfixAccepted operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Accepted. -// -// POST /mapfixes/{MapfixID}/status/validator-failed -func (UnimplementedHandler) ActionMapfixAccepted(ctx context.Context, params ActionMapfixAcceptedParams) error { - return ht.ErrNotImplemented -} - -// ActionMapfixRequestChanges implements actionMapfixRequestChanges operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. -// -// POST /mapfixes/{MapfixID}/status/validator-request-changes -func (UnimplementedHandler) ActionMapfixRequestChanges(ctx context.Context, params ActionMapfixRequestChangesParams) error { - return ht.ErrNotImplemented -} - -// ActionMapfixSubmitted implements actionMapfixSubmitted operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> Submitted. -// -// POST /mapfixes/{MapfixID}/status/validator-submitted -func (UnimplementedHandler) ActionMapfixSubmitted(ctx context.Context, params ActionMapfixSubmittedParams) error { - return ht.ErrNotImplemented -} - -// ActionMapfixUploaded implements actionMapfixUploaded operation. -// -// (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. -// -// POST /mapfixes/{MapfixID}/status/validator-uploaded -func (UnimplementedHandler) ActionMapfixUploaded(ctx context.Context, params ActionMapfixUploadedParams) error { - return ht.ErrNotImplemented -} - -// ActionMapfixValidated implements actionMapfixValidated operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Validated. -// -// POST /mapfixes/{MapfixID}/status/validator-validated -func (UnimplementedHandler) ActionMapfixValidated(ctx context.Context, params ActionMapfixValidatedParams) error { - return ht.ErrNotImplemented -} - -// ActionOperationFailed implements actionOperationFailed operation. -// -// (Internal endpoint) Fail an operation and write a StatusMessage. -// -// POST /operations/{OperationID}/status/operation-failed -func (UnimplementedHandler) ActionOperationFailed(ctx context.Context, params ActionOperationFailedParams) error { - return ht.ErrNotImplemented -} - -// ActionSubmissionAccepted implements actionSubmissionAccepted operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Accepted. -// -// POST /submissions/{SubmissionID}/status/validator-failed -func (UnimplementedHandler) ActionSubmissionAccepted(ctx context.Context, params ActionSubmissionAcceptedParams) error { - return ht.ErrNotImplemented -} - -// ActionSubmissionRequestChanges implements actionSubmissionRequestChanges operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> ChangesRequested. -// -// POST /submissions/{SubmissionID}/status/validator-request-changes -func (UnimplementedHandler) ActionSubmissionRequestChanges(ctx context.Context, params ActionSubmissionRequestChangesParams) error { - return ht.ErrNotImplemented -} - -// ActionSubmissionSubmitted implements actionSubmissionSubmitted operation. -// -// (Internal endpoint) Role Validator changes status from Submitting -> Submitted. -// -// POST /submissions/{SubmissionID}/status/validator-submitted -func (UnimplementedHandler) ActionSubmissionSubmitted(ctx context.Context, params ActionSubmissionSubmittedParams) error { - return ht.ErrNotImplemented -} - -// ActionSubmissionUploaded implements actionSubmissionUploaded operation. -// -// (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. -// -// POST /submissions/{SubmissionID}/status/validator-uploaded -func (UnimplementedHandler) ActionSubmissionUploaded(ctx context.Context, params ActionSubmissionUploadedParams) error { - return ht.ErrNotImplemented -} - -// ActionSubmissionValidated implements actionSubmissionValidated operation. -// -// (Internal endpoint) Role Validator changes status from Validating -> Validated. -// -// POST /submissions/{SubmissionID}/status/validator-validated -func (UnimplementedHandler) ActionSubmissionValidated(ctx context.Context, params ActionSubmissionValidatedParams) error { - return ht.ErrNotImplemented -} - -// CreateMapfix implements createMapfix operation. -// -// Create a mapfix. -// -// POST /mapfixes -func (UnimplementedHandler) CreateMapfix(ctx context.Context, req *MapfixCreate) (r *MapfixID, _ error) { - return r, ht.ErrNotImplemented -} - -// CreateMapfixAuditCheckList implements createMapfixAuditCheckList operation. -// -// Validator posts a checklist to the audit log. -// -// POST /mapfixes/{MapfixID}/checklist -func (UnimplementedHandler) CreateMapfixAuditCheckList(ctx context.Context, req CheckList, params CreateMapfixAuditCheckListParams) error { - return ht.ErrNotImplemented -} - -// CreateMapfixAuditError implements createMapfixAuditError operation. -// -// Validator posts an error to the audit log. -// -// POST /mapfixes/{MapfixID}/error -func (UnimplementedHandler) CreateMapfixAuditError(ctx context.Context, params CreateMapfixAuditErrorParams) error { - return ht.ErrNotImplemented -} - -// CreateScript implements createScript operation. -// -// Create a new script. -// -// POST /scripts -func (UnimplementedHandler) CreateScript(ctx context.Context, req *ScriptCreate) (r *ScriptID, _ error) { - return r, ht.ErrNotImplemented -} - -// CreateScriptPolicy implements createScriptPolicy operation. -// -// Create a new script policy. -// -// POST /script-policy -func (UnimplementedHandler) CreateScriptPolicy(ctx context.Context, req *ScriptPolicyCreate) (r *ScriptPolicyID, _ error) { - return r, ht.ErrNotImplemented -} - -// CreateSubmission implements createSubmission operation. -// -// Create a new submission. -// -// POST /submissions -func (UnimplementedHandler) CreateSubmission(ctx context.Context, req *SubmissionCreate) (r *SubmissionID, _ error) { - return r, ht.ErrNotImplemented -} - -// CreateSubmissionAuditCheckList implements createSubmissionAuditCheckList operation. -// -// Validator posts a checklist to the audit log. -// -// POST /submissions/{SubmissionID}/checklist -func (UnimplementedHandler) CreateSubmissionAuditCheckList(ctx context.Context, req CheckList, params CreateSubmissionAuditCheckListParams) error { - return ht.ErrNotImplemented -} - -// CreateSubmissionAuditError implements createSubmissionAuditError operation. -// -// Validator posts an error to the audit log. -// -// POST /submissions/{SubmissionID}/error -func (UnimplementedHandler) CreateSubmissionAuditError(ctx context.Context, params CreateSubmissionAuditErrorParams) error { - return ht.ErrNotImplemented -} - -// GetScript implements getScript operation. -// -// Get the specified script by ID. -// -// GET /scripts/{ScriptID} -func (UnimplementedHandler) GetScript(ctx context.Context, params GetScriptParams) (r *Script, _ error) { - return r, ht.ErrNotImplemented -} - -// ListScriptPolicy implements listScriptPolicy operation. -// -// Get list of script policies. -// -// GET /script-policy -func (UnimplementedHandler) ListScriptPolicy(ctx context.Context, params ListScriptPolicyParams) (r []ScriptPolicy, _ error) { - return r, ht.ErrNotImplemented -} - -// ListScripts implements listScripts operation. -// -// Get list of scripts. -// -// GET /scripts -func (UnimplementedHandler) ListScripts(ctx context.Context, params ListScriptsParams) (r []Script, _ error) { - return r, ht.ErrNotImplemented -} - -// UpdateMapfixValidatedModel implements updateMapfixValidatedModel operation. -// -// Update validated model. -// -// POST /mapfixes/{MapfixID}/validated-model -func (UnimplementedHandler) UpdateMapfixValidatedModel(ctx context.Context, params UpdateMapfixValidatedModelParams) error { - return ht.ErrNotImplemented -} - -// UpdateSubmissionValidatedModel implements updateSubmissionValidatedModel operation. -// -// Update validated model. -// -// POST /submissions/{SubmissionID}/validated-model -func (UnimplementedHandler) UpdateSubmissionValidatedModel(ctx context.Context, params UpdateSubmissionValidatedModelParams) error { - return ht.ErrNotImplemented -} - -// NewError creates *ErrorStatusCode from error returned by handler. -// -// Used for common default response. -func (UnimplementedHandler) NewError(ctx context.Context, err error) (r *ErrorStatusCode) { - r = new(ErrorStatusCode) - return r -} diff --git a/pkg/internal/oas_validators_gen.go b/pkg/internal/oas_validators_gen.go deleted file mode 100644 index 2e5d084..0000000 --- a/pkg/internal/oas_validators_gen.go +++ /dev/null @@ -1,1017 +0,0 @@ -// Code generated by ogen, DO NOT EDIT. - -package api - -import ( - "fmt" - - "github.com/go-faster/errors" - - "github.com/ogen-go/ogen/validate" -) - -func (s *Check) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Name)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Name", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 4096, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Summary)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Summary", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s CheckList) Validate() error { - alias := ([]Check)(s) - if alias == nil { - return errors.New("nil is invalid value") - } - var failures []validate.FieldError - for i, elem := range alias { - if err := func() error { - if err := elem.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: fmt.Sprintf("[%d]", i), - Error: err, - }) - } - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *Error) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.Code)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "code", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *ErrorStatusCode) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := s.Response.Validate(); err != nil { - return err - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Response", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *MapfixCreate) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.OperationID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "OperationID", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.AssetOwner)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "AssetOwner", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.DisplayName)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "DisplayName", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Creator)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Creator", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.GameID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "GameID", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.AssetID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "AssetID", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.AssetVersion)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "AssetVersion", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.TargetAssetID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "TargetAssetID", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 256, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Description)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Description", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *MapfixID) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.MapfixID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "MapfixID", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *Script) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.ID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ID", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Name)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Name", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 16, - MinLengthSet: true, - MaxLength: 16, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Hash)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Hash", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 1048576, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Source)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Source", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.ResourceType)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ResourceType", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.ResourceID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ResourceID", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *ScriptCreate) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Name)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Name", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 1048576, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Source)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Source", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.ResourceType)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ResourceType", - Error: err, - }) - } - if err := func() error { - if value, ok := s.ResourceID.Get(); ok { - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(value)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - return err - } - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ResourceID", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *ScriptID) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.ScriptID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ScriptID", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *ScriptPolicy) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.ID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ID", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 16, - MinLengthSet: true, - MaxLength: 16, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.FromScriptHash)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "FromScriptHash", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.ToScriptID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ToScriptID", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.Policy)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Policy", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *ScriptPolicyCreate) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.FromScriptID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "FromScriptID", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.ToScriptID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ToScriptID", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.Policy)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Policy", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *ScriptPolicyID) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.ScriptPolicyID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "ScriptPolicyID", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *SubmissionCreate) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.OperationID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "OperationID", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.AssetOwner)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "AssetOwner", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.DisplayName)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "DisplayName", - Error: err, - }) - } - if err := func() error { - if err := (validate.String{ - MinLength: 0, - MinLengthSet: false, - MaxLength: 128, - MaxLengthSet: true, - Email: false, - Hostname: false, - Regex: nil, - }).Validate(string(s.Creator)); err != nil { - return errors.Wrap(err, "string") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Creator", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.GameID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "GameID", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.AssetID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "AssetID", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.AssetVersion)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "AssetVersion", - Error: err, - }) - } - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: true, - Max: 9, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.Status)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "Status", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} - -func (s *SubmissionID) Validate() error { - if s == nil { - return validate.ErrNilPointer - } - - var failures []validate.FieldError - if err := func() error { - if err := (validate.Int{ - MinSet: true, - Min: 0, - MaxSet: false, - Max: 0, - MinExclusive: false, - MaxExclusive: false, - MultipleOfSet: false, - MultipleOf: 0, - }).Validate(int64(s.SubmissionID)); err != nil { - return errors.Wrap(err, "int") - } - return nil - }(); err != nil { - failures = append(failures, validate.FieldError{ - Name: "SubmissionID", - Error: err, - }) - } - if len(failures) > 0 { - return &validate.Error{Fields: failures} - } - return nil -} From 524c56b6b578ad325257ae46c11d6246bc3702fe Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Thu, 17 Jul 2025 21:26:10 -0700 Subject: [PATCH 3/9] submissions: convert validator backend to gRPC --- go.mod | 4 +- go.sum | 4 +- pkg/cmds/serve.go | 26 ++- pkg/model/audit_event.go | 3 + pkg/validator_controller/controller.go | 46 ----- pkg/validator_controller/mapfixes.go | 203 ++++++++++++++-------- pkg/validator_controller/operations.go | 23 ++- pkg/validator_controller/script_policy.go | 65 ++++--- pkg/validator_controller/scripts.go | 92 ++++++---- pkg/validator_controller/submissions.go | 201 +++++++++++++-------- 10 files changed, 390 insertions(+), 277 deletions(-) delete mode 100644 pkg/validator_controller/controller.go diff --git a/go.mod b/go.mod index 46531c0..1b5d891 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22 toolchain go1.23.3 require ( - git.itzana.me/strafesnet/go-grpc v0.0.0-20241129081229-9e166b3d11f7 + git.itzana.me/strafesnet/go-grpc v0.0.0-20250719033306-150dea07cf00 git.itzana.me/strafesnet/utils v0.0.0-20220716194944-d8ca164052f9 github.com/dchest/siphash v1.2.3 github.com/go-faster/errors v0.7.1 @@ -53,7 +53,7 @@ require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/segmentio/asm v1.2.0 // indirect - go.uber.org/multierr v1.11.0 + go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect golang.org/x/net v0.25.0 // indirect diff --git a/go.sum b/go.sum index 18afd3c..003bde8 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -git.itzana.me/strafesnet/go-grpc v0.0.0-20241129081229-9e166b3d11f7 h1:5XzWd3ZZjSw1M60IfHuILty2vRPBYiqM0FZ+E7uHCi8= -git.itzana.me/strafesnet/go-grpc v0.0.0-20241129081229-9e166b3d11f7/go.mod h1:X7XTRUScRkBWq8q8bplbeso105RPDlnY7J6Wy1IwBMs= +git.itzana.me/strafesnet/go-grpc v0.0.0-20250719033306-150dea07cf00 h1:L9HiJzMrXCKZhZz+RyUr5RXdMcGQMU85aap6L+QQDZ0= +git.itzana.me/strafesnet/go-grpc v0.0.0-20250719033306-150dea07cf00/go.mod h1:X7XTRUScRkBWq8q8bplbeso105RPDlnY7J6Wy1IwBMs= git.itzana.me/strafesnet/utils v0.0.0-20220716194944-d8ca164052f9 h1:7lU6jyR7S7Rhh1dnUp7GyIRHUTBXZagw8F4n4hOyxLw= git.itzana.me/strafesnet/utils v0.0.0-20220716194944-d8ca164052f9/go.mod h1:uyYerSieEt4v0MJCdPLppG0LtJ4Yj035vuTetWGsxjY= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= diff --git a/pkg/cmds/serve.go b/pkg/cmds/serve.go index 4a15f50..274e2fc 100644 --- a/pkg/cmds/serve.go +++ b/pkg/cmds/serve.go @@ -2,18 +2,19 @@ package cmds import ( "fmt" + "net" "net/http" "git.itzana.me/strafesnet/go-grpc/auth" "git.itzana.me/strafesnet/go-grpc/maps" "git.itzana.me/strafesnet/go-grpc/users" + "git.itzana.me/strafesnet/go-grpc/validator" "git.itzana.me/strafesnet/maps-service/pkg/api" "git.itzana.me/strafesnet/maps-service/pkg/datastore/gormstore" - internal "git.itzana.me/strafesnet/maps-service/pkg/internal" "git.itzana.me/strafesnet/maps-service/pkg/roblox" - "git.itzana.me/strafesnet/maps-service/pkg/web_api" "git.itzana.me/strafesnet/maps-service/pkg/service" "git.itzana.me/strafesnet/maps-service/pkg/validator_controller" + "git.itzana.me/strafesnet/maps-service/pkg/web_api" "github.com/nats-io/nats.go" log "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" @@ -159,18 +160,31 @@ func serve(ctx *cli.Context) error { log.WithError(err).Fatal("failed to initialize api server") } - svc_internal := validator_controller.NewService(&svc_inner) + grpcServer := grpc.NewServer() - srv_internal, err := internal.NewServer(&svc_internal, internal.WithPathPrefix("/v1")) + mapfix_controller := validator_controller.NewMapfixesController(&svc_inner) + operation_controller := validator_controller.NewOperationsController(&svc_inner) + script_controller := validator_controller.NewScriptsController(&svc_inner) + script_policy_controller := validator_controller.NewScriptPolicyController(&svc_inner) + submission_controller := validator_controller.NewSubmissionsController(&svc_inner) + + validator.RegisterValidatorMapfixServiceServer(grpcServer,&mapfix_controller) + validator.RegisterValidatorOperationServiceServer(grpcServer,&operation_controller) + validator.RegisterValidatorScriptServiceServer(grpcServer,&script_controller) + validator.RegisterValidatorScriptPolicyServiceServer(grpcServer,&script_policy_controller) + validator.RegisterValidatorSubmissionServiceServer(grpcServer,&submission_controller) + + port := ctx.Int("port-internal") + lis, err := net.Listen("tcp", fmt.Sprintf(":%d", port)) if err != nil { - log.WithError(err).Fatal("failed to initialize api server") + log.WithField("error", err).Fatalln("failed to net.Listen") } // Channel to collect errors errChan := make(chan error, 2) // First server go func(errChan chan error) { - errChan <- http.ListenAndServe(fmt.Sprintf(":%d", ctx.Int("port-internal")), srv_internal) + errChan <- grpcServer.Serve(lis) }(errChan) // Second server diff --git a/pkg/model/audit_event.go b/pkg/model/audit_event.go index f9550bc..b325f4a 100644 --- a/pkg/model/audit_event.go +++ b/pkg/model/audit_event.go @@ -2,9 +2,12 @@ package model import ( "encoding/json" + "math" "time" ) +const ValidatorUserID uint64 = uint64(math.MaxInt64) + type AuditEventType int32 // User clicked "Submit", "Accept" etc diff --git a/pkg/validator_controller/controller.go b/pkg/validator_controller/controller.go deleted file mode 100644 index 1852459..0000000 --- a/pkg/validator_controller/controller.go +++ /dev/null @@ -1,46 +0,0 @@ -package validator_controller - -import ( - "context" - "errors" - "math" - - "git.itzana.me/strafesnet/maps-service/pkg/datastore" - internal "git.itzana.me/strafesnet/maps-service/pkg/internal" - "git.itzana.me/strafesnet/maps-service/pkg/service" -) - -const ( - ValidtorUserID uint64 = uint64(math.MaxInt64) -) - -var ( - ErrNegativeID = errors.New("A negative ID was provided") -) - -type Controller struct { - inner *service.Service -} - -func NewService( - inner *service.Service, -) Controller { - return Controller{ - inner: inner, - } -} - -// yay duplicate code -func (svc *Controller) NewError(ctx context.Context, err error) *internal.ErrorStatusCode { - status := 500 - if errors.Is(err, datastore.ErrNotExist) { - status = 404 - } - return &internal.ErrorStatusCode{ - StatusCode: status, - Response: internal.Error{ - Code: int64(status), - Message: err.Error(), - }, - } -} diff --git a/pkg/validator_controller/mapfixes.go b/pkg/validator_controller/mapfixes.go index cc0b3ac..8eb3607 100644 --- a/pkg/validator_controller/mapfixes.go +++ b/pkg/validator_controller/mapfixes.go @@ -5,12 +5,24 @@ import ( "errors" "fmt" + "git.itzana.me/strafesnet/go-grpc/validator" "git.itzana.me/strafesnet/maps-service/pkg/datastore" - internal "git.itzana.me/strafesnet/maps-service/pkg/internal" "git.itzana.me/strafesnet/maps-service/pkg/model" "git.itzana.me/strafesnet/maps-service/pkg/service" ) +type Mapfixes struct { + *validator.UnimplementedValidatorMapfixServiceServer + inner *service.Service +} +func NewMapfixesController( + inner *service.Service, +) Mapfixes { + return Mapfixes{ + inner: inner, + } +} + var( // prevent two mapfixes with same asset id ActiveMapfixStatuses = []model.MapfixStatus{ @@ -34,35 +46,40 @@ var( // Update model following role restrictions. // // POST /mapfixes/{MapfixID}/validated-model -func (svc *Controller) UpdateMapfixValidatedModel(ctx context.Context, params internal.UpdateMapfixValidatedModelParams) error { - ValidatedModelID := uint64(params.ValidatedModelID) - ValidatedModelVersion := uint64(params.ValidatedModelVersion) +func (svc *Mapfixes) SetValidatedModel(ctx context.Context, params *validator.ValidatedModelRequest) (*validator.NullResponse, error) { + MapfixID := int64(params.ID) // check if Status is ChangesRequested|Submitted|UnderConstruction update := service.NewMapfixUpdate() - update.SetValidatedAssetID(ValidatedModelID) - update.SetValidatedAssetVersion(ValidatedModelVersion) + update.SetValidatedAssetID(params.ValidatedModelID) + update.SetValidatedAssetVersion(params.ValidatedModelVersion) // DO NOT reset completed when validated model is updated // update.Add("completed", false) - err := svc.inner.UpdateMapfixIfStatus(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidating}, update) + allow_statuses := []model.MapfixStatus{model.MapfixStatusValidating} + err := svc.inner.UpdateMapfixIfStatus(ctx, MapfixID, allow_statuses, update) if err != nil { - return err + return nil, err } event_data := model.AuditEventDataChangeValidatedModel{ - ValidatedModelID: ValidatedModelID, - ValidatedModelVersion: ValidatedModelVersion, + ValidatedModelID: params.ValidatedModelID, + ValidatedModelVersion: params.ValidatedModelVersion, } - return svc.inner.CreateAuditEventChangeValidatedModel( + err = svc.inner.CreateAuditEventChangeValidatedModel( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.MapfixID, + ID: MapfixID, Type: model.ResourceMapfix, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionMapfixSubmitted invokes actionMapfixSubmitted operation. @@ -70,7 +87,8 @@ func (svc *Controller) UpdateMapfixValidatedModel(ctx context.Context, params in // Role Validator changes status from Submitting -> Submitted. // // POST /mapfixes/{MapfixID}/status/validator-submitted -func (svc *Controller) ActionMapfixSubmitted(ctx context.Context, params internal.ActionMapfixSubmittedParams) error { +func (svc *Mapfixes) SetStatusSubmitted(ctx context.Context, params *validator.SubmittedRequest) (*validator.NullResponse, error) { + MapfixID := int64(params.ID) // transaction target_status := model.MapfixStatusSubmitted update := service.NewMapfixUpdate() @@ -80,24 +98,29 @@ func (svc *Controller) ActionMapfixSubmitted(ctx context.Context, params interna update.SetCreator(params.Creator) update.SetGameID(uint32(params.GameID)) allow_statuses := []model.MapfixStatus{model.MapfixStatusSubmitting} - err := svc.inner.UpdateMapfixIfStatus(ctx, params.MapfixID, allow_statuses, update) + err := svc.inner.UpdateMapfixIfStatus(ctx, MapfixID, allow_statuses, update) if err != nil { - return err + return nil, err } event_data := model.AuditEventDataAction{ TargetStatus: uint32(target_status), } - return svc.inner.CreateAuditEventAction( + err = svc.inner.CreateAuditEventAction( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.MapfixID, + ID: MapfixID, Type: model.ResourceMapfix, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionMapfixRequestChanges implements actionMapfixRequestChanges operation. @@ -105,29 +128,36 @@ func (svc *Controller) ActionMapfixSubmitted(ctx context.Context, params interna // (Internal endpoint) Role Validator changes status from Submitting -> RequestChanges. // // POST /mapfixes/{MapfixID}/status/validator-request-changes -func (svc *Controller) ActionMapfixRequestChanges(ctx context.Context, params internal.ActionMapfixRequestChangesParams) error { +func (svc *Mapfixes) ActionMapfixRequestChanges(ctx context.Context, params *validator.MapfixID) (*validator.NullResponse, error) { + MapfixID := int64(params.ID) // transaction target_status := model.MapfixStatusChangesRequested update := service.NewMapfixUpdate() update.SetStatusID(target_status) - err := svc.inner.UpdateMapfixIfStatus(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusSubmitting}, update) + allow_statuses := []model.MapfixStatus{model.MapfixStatusSubmitting} + err := svc.inner.UpdateMapfixIfStatus(ctx, MapfixID, allow_statuses, update) if err != nil { - return err + return nil, err } event_data := model.AuditEventDataAction{ TargetStatus: uint32(target_status), } - return svc.inner.CreateAuditEventAction( + err = svc.inner.CreateAuditEventAction( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.MapfixID, + ID: MapfixID, Type: model.ResourceMapfix, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionMapfixValidate invokes actionMapfixValidate operation. @@ -135,11 +165,18 @@ func (svc *Controller) ActionMapfixRequestChanges(ctx context.Context, params in // Role Validator changes status from Validating -> Validated. // // POST /mapfixes/{MapfixID}/status/validator-validated -func (svc *Controller) ActionMapfixValidated(ctx context.Context, params internal.ActionMapfixValidatedParams) error { +func (svc *Mapfixes) ActionMapfixValidated(ctx context.Context, params *validator.MapfixID) (*validator.NullResponse, error) { + MapfixID := int64(params.ID) // transaction update := service.NewMapfixUpdate() update.SetStatusID(model.MapfixStatusValidated) - return svc.inner.UpdateMapfixIfStatus(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidating}, update) + allow_statuses := []model.MapfixStatus{model.MapfixStatusValidating} + err := svc.inner.UpdateMapfixIfStatus(ctx, MapfixID, allow_statuses, update) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionMapfixAccepted implements actionMapfixAccepted operation. @@ -147,14 +184,16 @@ func (svc *Controller) ActionMapfixValidated(ctx context.Context, params interna // (Internal endpoint) Role Validator changes status from Validating -> Accepted. // // POST /mapfixes/{MapfixID}/status/validator-failed -func (svc *Controller) ActionMapfixAccepted(ctx context.Context, params internal.ActionMapfixAcceptedParams) error { +func (svc *Mapfixes) ActionMapfixAccepted(ctx context.Context, params *validator.MapfixID) (*validator.NullResponse, error) { + MapfixID := int64(params.ID) // transaction target_status := model.MapfixStatusAcceptedUnvalidated update := service.NewMapfixUpdate() update.SetStatusID(target_status) - err := svc.inner.UpdateMapfixIfStatus(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusValidating}, update) + allow_statuses := []model.MapfixStatus{model.MapfixStatusValidating} + err := svc.inner.UpdateMapfixIfStatus(ctx, MapfixID, allow_statuses, update) if err != nil { - return err + return nil, err } // push an action audit event @@ -162,15 +201,20 @@ func (svc *Controller) ActionMapfixAccepted(ctx context.Context, params internal TargetStatus: uint32(target_status), } - return svc.inner.CreateAuditEventAction( + err = svc.inner.CreateAuditEventAction( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.MapfixID, + ID: MapfixID, Type: model.ResourceMapfix, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionMapfixUploaded implements actionMapfixUploaded operation. @@ -178,29 +222,36 @@ func (svc *Controller) ActionMapfixAccepted(ctx context.Context, params internal // (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. // // POST /mapfixes/{MapfixID}/status/validator-uploaded -func (svc *Controller) ActionMapfixUploaded(ctx context.Context, params internal.ActionMapfixUploadedParams) error { +func (svc *Mapfixes) ActionMapfixUploaded(ctx context.Context, params *validator.MapfixID) (*validator.NullResponse, error) { + MapfixID := int64(params.ID) // transaction target_status := model.MapfixStatusUploaded update := service.NewMapfixUpdate() update.SetStatusID(target_status) - err := svc.inner.UpdateMapfixIfStatus(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusUploading}, update) + allow_statuses := []model.MapfixStatus{model.MapfixStatusUploading} + err := svc.inner.UpdateMapfixIfStatus(ctx, MapfixID, allow_statuses, update) if err != nil { - return err + return nil, err } event_data := model.AuditEventDataAction{ TargetStatus: uint32(target_status), } - return svc.inner.CreateAuditEventAction( + err = svc.inner.CreateAuditEventAction( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.MapfixID, + ID: MapfixID, Type: model.ResourceMapfix, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // CreateMapfixAuditError implements createMapfixAuditError operation. @@ -208,20 +259,26 @@ func (svc *Controller) ActionMapfixUploaded(ctx context.Context, params internal // Post an error to the audit log // // POST /mapfixes/{MapfixID}/error -func (svc *Controller) CreateMapfixAuditError(ctx context.Context, params internal.CreateMapfixAuditErrorParams) (error) { +func (svc *Mapfixes) CreateMapfixAuditError(ctx context.Context, params *validator.AuditErrorRequest) (*validator.NullResponse, error) { + MapfixID := int64(params.ID) event_data := model.AuditEventDataError{ Error: params.ErrorMessage, } - return svc.inner.CreateAuditEventError( + err := svc.inner.CreateAuditEventError( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.MapfixID, + ID: MapfixID, Type: model.ResourceMapfix, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // CreateMapfixAuditCheckList implements createMapfixAuditCheckList operation. @@ -229,10 +286,11 @@ func (svc *Controller) CreateMapfixAuditError(ctx context.Context, params intern // Post a checklist to the audit log // // POST /mapfixes/{MapfixID}/checklist -func (svc *Controller) CreateMapfixAuditCheckList(ctx context.Context, check_list internal.CheckList, params internal.CreateMapfixAuditCheckListParams) (error) { - check_list2 := make([]model.Check, len(check_list)) - for i, check := range check_list { - check_list2[i] = model.Check{ +func (svc *Mapfixes) CreateMapfixAuditCheckList(ctx context.Context, params *validator.AuditChecklistRequest) (*validator.NullResponse, error) { + MapfixID := int64(params.ID) + check_list := make([]model.Check, len(params.CheckList)) + for i, check := range params.CheckList { + check_list[i] = model.Check{ Name: check.Name, Summary: check.Summary, Passed: check.Passed, @@ -240,41 +298,33 @@ func (svc *Controller) CreateMapfixAuditCheckList(ctx context.Context, check_lis } event_data := model.AuditEventDataCheckList{ - CheckList: check_list2, + CheckList: check_list, } - return svc.inner.CreateAuditEventCheckList( + err := svc.inner.CreateAuditEventCheckList( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.MapfixID, + ID: MapfixID, Type: model.ResourceMapfix, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // POST /mapfixes -func (svc *Controller) CreateMapfix(ctx context.Context, request *internal.MapfixCreate) (*internal.MapfixID, error) { - // sanitization - if request.GameID<0|| - request.AssetOwner<0|| - request.AssetID<0|| - request.AssetVersion<0|| - request.TargetAssetID<0{ - return nil, ErrNegativeID - } - var GameID=uint32(request.GameID); - var Submitter=uint64(request.AssetOwner); - var AssetID=uint64(request.AssetID); - var AssetVersion=uint64(request.AssetVersion); - var TargetAssetID=uint64(request.TargetAssetID); - +func (svc *Mapfixes) Create(ctx context.Context, request *validator.MapfixCreate) (*validator.MapfixID, error) { + var Submitter=request.AssetOwner; // Check if an active mapfix with the same asset id exists { filter := service.NewMapfixFilter() - filter.SetAssetID(AssetID) - filter.SetAssetVersion(AssetVersion) + filter.SetAssetID(request.AssetID) + filter.SetAssetVersion(request.AssetVersion) filter.SetStatuses(ActiveMapfixStatuses) active_mapfixes, err := svc.inner.ListMapfixes(ctx, filter, model.Page{ Number: 1, @@ -288,7 +338,8 @@ func (svc *Controller) CreateMapfix(ctx context.Context, request *internal.Mapfi } } - operation, err := svc.inner.GetOperation(ctx, request.OperationID) + OperationID := int32(request.OperationID) + operation, err := svc.inner.GetOperation(ctx, OperationID) if err != nil { return nil, err } @@ -303,12 +354,12 @@ func (svc *Controller) CreateMapfix(ctx context.Context, request *internal.Mapfi ID: 0, DisplayName: request.DisplayName, Creator: request.Creator, - GameID: GameID, + GameID: request.GameID, Submitter: Submitter, - AssetID: AssetID, - AssetVersion: AssetVersion, + AssetID: request.AssetID, + AssetVersion: request.AssetVersion, Completed: false, - TargetAssetID: TargetAssetID, + TargetAssetID: request.TargetAssetID, StatusID: model.MapfixStatusUnderConstruction, Description: request.Description, }) @@ -318,12 +369,12 @@ func (svc *Controller) CreateMapfix(ctx context.Context, request *internal.Mapfi // mark the operation as completed and provide the path params := service.NewOperationCompleteParams(fmt.Sprintf("/mapfixes/%d", mapfix.ID)) - err = svc.inner.CompleteOperation(ctx, request.OperationID, params) + err = svc.inner.CompleteOperation(ctx, OperationID, params) if err != nil { return nil, err } - return &internal.MapfixID{ - MapfixID: mapfix.ID, + return &validator.MapfixID{ + ID: uint64(mapfix.ID), }, nil } diff --git a/pkg/validator_controller/operations.go b/pkg/validator_controller/operations.go index 60d97e1..e95f10b 100644 --- a/pkg/validator_controller/operations.go +++ b/pkg/validator_controller/operations.go @@ -3,18 +3,35 @@ package validator_controller import ( "context" - internal "git.itzana.me/strafesnet/maps-service/pkg/internal" + "git.itzana.me/strafesnet/go-grpc/validator" "git.itzana.me/strafesnet/maps-service/pkg/service" ) +type Operations struct { + *validator.UnimplementedValidatorOperationServiceServer + inner *service.Service +} +func NewOperationsController( + inner *service.Service, +) Operations { + return Operations{ + inner: inner, + } +} + // ActionOperationFailed implements actionOperationFailed operation. // // Fail the specified OperationID with a StatusMessage. // // POST /operations/{OperationID}/status/operation-failed -func (svc *Controller) ActionOperationFailed(ctx context.Context, params internal.ActionOperationFailedParams) (error) { +func (svc *Operations) Fail(ctx context.Context, params *validator.OperationFailRequest) (*validator.NullResponse, error) { fail_params := service.NewOperationFailParams( params.StatusMessage, ) - return svc.inner.FailOperation(ctx, params.OperationID, fail_params) + err := svc.inner.FailOperation(ctx, int32(params.OperationID), fail_params) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } diff --git a/pkg/validator_controller/script_policy.go b/pkg/validator_controller/script_policy.go index 633fdcb..77dd8ca 100644 --- a/pkg/validator_controller/script_policy.go +++ b/pkg/validator_controller/script_policy.go @@ -3,18 +3,30 @@ package validator_controller import ( "context" - api "git.itzana.me/strafesnet/maps-service/pkg/internal" + "git.itzana.me/strafesnet/go-grpc/validator" "git.itzana.me/strafesnet/maps-service/pkg/model" "git.itzana.me/strafesnet/maps-service/pkg/service" ) +type ScriptPolicy struct { + *validator.UnimplementedValidatorScriptPolicyServiceServer + inner *service.Service +} +func NewScriptPolicyController( + inner *service.Service, +) ScriptPolicy { + return ScriptPolicy{ + inner: inner, + } +} + // CreateScriptPolicy implements createScriptPolicy operation. // // Create a new script policy. // // POST /script-policy -func (svc *Controller) CreateScriptPolicy(ctx context.Context, req *api.ScriptPolicyCreate) (*api.ScriptPolicyID, error) { - from_script, err := svc.inner.GetScript(ctx, req.FromScriptID) +func (svc *ScriptPolicy) Create(ctx context.Context, req *validator.ScriptPolicyCreate) (*validator.ScriptPolicyID, error) { + from_script, err := svc.inner.GetScript(ctx, int64(req.FromScriptID)) if err != nil { return nil, err } @@ -24,15 +36,15 @@ func (svc *Controller) CreateScriptPolicy(ctx context.Context, req *api.ScriptPo script, err := svc.inner.CreateScriptPolicy(ctx, model.ScriptPolicy{ ID: 0, FromScriptHash: from_script.Hash, - ToScriptID: req.ToScriptID, + ToScriptID: int64(req.ToScriptID), Policy: model.Policy(req.Policy), }) if err != nil { return nil, err } - return &api.ScriptPolicyID{ - ScriptPolicyID: script.ID, + return &validator.ScriptPolicyID{ + ID: uint64(script.ID), }, nil } @@ -41,40 +53,37 @@ func (svc *Controller) CreateScriptPolicy(ctx context.Context, req *api.ScriptPo // Get list of script policies. // // GET /script-policy -func (svc *Controller) ListScriptPolicy(ctx context.Context, params api.ListScriptPolicyParams) ([]api.ScriptPolicy, error) { +func (svc *ScriptPolicy) List(ctx context.Context, params *validator.ScriptPolicyListRequest) (*validator.ScriptPolicyListResponse, error) { filter := service.NewScriptPolicyFilter() - if hash_hex, ok := params.FromScriptHash.Get(); ok{ - hash_parsed, err := model.HashParse(hash_hex) - if err != nil { - return nil, err - } - filter.SetFromScriptHash(int64(hash_parsed)) + if params.Filter.FromScriptHash != nil { + filter.SetFromScriptHash(int64(*params.Filter.FromScriptHash)) } - if to_script_id, to_script_id_ok := params.ToScriptID.Get(); to_script_id_ok{ - filter.SetToScriptID(to_script_id) + if params.Filter.ToScriptID != nil { + filter.SetToScriptID(int64(*params.Filter.ToScriptID)) } - if policy, policy_ok := params.Policy.Get(); policy_ok{ - filter.SetPolicy(policy) + if params.Filter.Policy != nil { + filter.SetPolicy(int32(*params.Filter.Policy)) } items, err := svc.inner.ListScriptPolicies(ctx, filter, model.Page{ - Number: params.Page, - Size: params.Limit, + Number: int32(params.Page.Number), + Size: int32(params.Page.Size), }) if err != nil { return nil, err } - var resp []api.ScriptPolicy - for _, item := range items { - resp = append(resp, api.ScriptPolicy{ - ID: item.ID, - FromScriptHash: model.HashFormat(uint64(item.FromScriptHash)), - ToScriptID: item.ToScriptID, - Policy: int32(item.Policy), - }) + resp := validator.ScriptPolicyListResponse{} + resp.ScriptPolicies = make([]*validator.ScriptPolicy, len(items)) + for i, item := range items { + resp.ScriptPolicies[i] = &validator.ScriptPolicy{ + ID: uint64(item.ID), + FromScriptHash: uint64(item.FromScriptHash), + ToScriptID: uint64(item.ToScriptID), + Policy: validator.Policy(int32(item.Policy)), + } } - return resp, nil + return &resp, nil } diff --git a/pkg/validator_controller/scripts.go b/pkg/validator_controller/scripts.go index ba40758..e75dba4 100644 --- a/pkg/validator_controller/scripts.go +++ b/pkg/validator_controller/scripts.go @@ -3,31 +3,47 @@ package validator_controller import ( "context" - api "git.itzana.me/strafesnet/maps-service/pkg/internal" + "git.itzana.me/strafesnet/go-grpc/validator" "git.itzana.me/strafesnet/maps-service/pkg/model" "git.itzana.me/strafesnet/maps-service/pkg/service" ) +type Scripts struct { + *validator.UnimplementedValidatorScriptServiceServer + inner *service.Service +} +func NewScriptsController( + inner *service.Service, +) Scripts { + return Scripts{ + inner: inner, + } +} + // CreateScript implements createScript operation. // // Create a new script. // // POST /scripts -func (svc *Controller) CreateScript(ctx context.Context, req *api.ScriptCreate) (*api.ScriptID, error) { +func (svc *Scripts) Create(ctx context.Context, req *validator.ScriptCreate) (*validator.ScriptID, error) { + ResourceID := int64(0) + if req.ResourceID != nil { + ResourceID = int64(*req.ResourceID) + } script, err := svc.inner.CreateScript(ctx, model.Script{ ID: 0, Name: req.Name, Hash: int64(model.HashSource(req.Source)), Source: req.Source, ResourceType: model.ResourceType(req.ResourceType), - ResourceID: req.ResourceID.Or(0), + ResourceID: ResourceID, }) if err != nil { return nil, err } - return &api.ScriptID{ - ScriptID: script.ID, + return &validator.ScriptID{ + ID: uint64(script.ID), }, nil } @@ -36,49 +52,47 @@ func (svc *Controller) CreateScript(ctx context.Context, req *api.ScriptCreate) // Get list of scripts. // // GET /scripts -func (svc *Controller) ListScripts(ctx context.Context, params api.ListScriptsParams) ([]api.Script, error) { +func (svc *Scripts) List(ctx context.Context, params *validator.ScriptListRequest) (*validator.ScriptListResponse, error) { filter := service.NewScriptFilter() - if hash_hex, ok := params.Hash.Get(); ok{ - hash_parsed, err := model.HashParse(hash_hex) - if err != nil { - return nil, err - } - filter.SetHash(int64(hash_parsed)) + if params.Filter.Hash != nil { + filter.SetHash(int64(*params.Filter.Hash)) } - if name, name_ok := params.Name.Get(); name_ok{ - filter.SetName(name) + if params.Filter.Name != nil { + filter.SetName(*params.Filter.Name) } - if source, source_ok := params.Source.Get(); source_ok{ - filter.SetSource(source) + if params.Filter.Source != nil { + filter.SetSource(*params.Filter.Source) } - if resource_type, resource_type_ok := params.ResourceType.Get(); resource_type_ok{ - filter.SetResourceType(resource_type) + if params.Filter.ResourceType != nil { + filter.SetResourceType(int32(*params.Filter.ResourceType)) } - if resource_id, resource_id_ok := params.ResourceID.Get(); resource_id_ok{ - filter.SetResourceID(resource_id) + if params.Filter.ResourceID != nil { + filter.SetResourceID(int64(*params.Filter.ResourceID)) } items, err := svc.inner.ListScripts(ctx, filter, model.Page{ - Number: params.Page, - Size: params.Limit, + Number: int32(params.Page.Number), + Size: int32(params.Page.Size), }) if err != nil { return nil, err } - var resp []api.Script - for _, item := range items { - resp = append(resp, api.Script{ - ID: item.ID, + resp := validator.ScriptListResponse{} + resp.Scripts = make([]*validator.Script, len(items)) + for i, item := range items { + resource_id := uint64(item.ResourceID) + resp.Scripts[i] = &validator.Script{ + ID: uint64(item.ID), Name: item.Name, - Hash: model.HashFormat(uint64(item.Hash)), + Hash: uint64(item.Hash), Source: item.Source, - ResourceType: int32(item.ResourceType), - ResourceID: item.ResourceID, - }) + ResourceType: validator.ResourceType(item.ResourceType), + ResourceID: &resource_id, + } } - return resp, nil + return &resp, nil } // GetScript implements getScript operation. @@ -86,18 +100,20 @@ func (svc *Controller) ListScripts(ctx context.Context, params api.ListScriptsPa // Get the specified script by ID. // // GET /scripts/{ScriptID} -func (svc *Controller) GetScript(ctx context.Context, params api.GetScriptParams) (*api.Script, error) { - script, err := svc.inner.GetScript(ctx, params.ScriptID) +func (svc *Scripts) Get(ctx context.Context, params *validator.ScriptID) (*validator.Script, error) { + ScriptID := int64(params.ID) + script, err := svc.inner.GetScript(ctx, ScriptID) if err != nil { return nil, err } - return &api.Script{ - ID: script.ID, + ResourceID := uint64(script.ResourceID) + return &validator.Script{ + ID: uint64(script.ID), Name: script.Name, - Hash: model.HashFormat(uint64(script.Hash)), + Hash: uint64(script.Hash), Source: script.Source, - ResourceType: int32(script.ResourceType), - ResourceID: script.ResourceID, + ResourceType: validator.ResourceType(script.ResourceType), + ResourceID: &ResourceID, }, nil } diff --git a/pkg/validator_controller/submissions.go b/pkg/validator_controller/submissions.go index c82626b..1a373b3 100644 --- a/pkg/validator_controller/submissions.go +++ b/pkg/validator_controller/submissions.go @@ -5,12 +5,24 @@ import ( "errors" "fmt" + "git.itzana.me/strafesnet/go-grpc/validator" "git.itzana.me/strafesnet/maps-service/pkg/datastore" - internal "git.itzana.me/strafesnet/maps-service/pkg/internal" "git.itzana.me/strafesnet/maps-service/pkg/model" "git.itzana.me/strafesnet/maps-service/pkg/service" ) +type Submissions struct { + *validator.UnimplementedValidatorSubmissionServiceServer + inner *service.Service +} +func NewSubmissionsController( + inner *service.Service, +) Submissions { + return Submissions{ + inner: inner, + } +} + var( // prevent two mapfixes with same asset id ActiveSubmissionStatuses = []model.SubmissionStatus{ @@ -33,36 +45,40 @@ var( // Update model following role restrictions. // // POST /submissions/{SubmissionID}/validated-model -func (svc *Controller) UpdateSubmissionValidatedModel(ctx context.Context, params internal.UpdateSubmissionValidatedModelParams) error { - ValidatedModelID := uint64(params.ValidatedModelID) - ValidatedModelVersion := uint64(params.ValidatedModelVersion) +func (svc *Submissions) SetValidatedModel(ctx context.Context, params *validator.ValidatedModelRequest) (*validator.NullResponse, error) { + SubmissionID := int64(params.ID) // check if Status is ChangesRequested|Submitted|UnderConstruction update := service.NewSubmissionUpdate() - update.SetValidatedAssetID(ValidatedModelID) - update.SetValidatedAssetVersion(ValidatedModelVersion) + update.SetValidatedAssetID(params.ValidatedModelID) + update.SetValidatedAssetVersion(params.ValidatedModelVersion) // DO NOT reset completed when validated model is updated // update.Add("completed", false) allowed_statuses := []model.SubmissionStatus{model.SubmissionStatusValidating} - err := svc.inner.UpdateSubmissionIfStatus(ctx, params.SubmissionID, allowed_statuses, update) + err := svc.inner.UpdateSubmissionIfStatus(ctx, SubmissionID, allowed_statuses, update) if err != nil { - return err + return nil, err } event_data := model.AuditEventDataChangeValidatedModel{ - ValidatedModelID: ValidatedModelID, - ValidatedModelVersion: ValidatedModelVersion, + ValidatedModelID: params.ValidatedModelID, + ValidatedModelVersion: params.ValidatedModelVersion, } - return svc.inner.CreateAuditEventChangeValidatedModel( + err = svc.inner.CreateAuditEventChangeValidatedModel( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.SubmissionID, + ID: SubmissionID, Type: model.ResourceSubmission, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionSubmissionSubmitted invokes actionSubmissionSubmitted operation. @@ -70,7 +86,8 @@ func (svc *Controller) UpdateSubmissionValidatedModel(ctx context.Context, param // Role Validator changes status from Submitting -> Submitted. // // POST /submissions/{SubmissionID}/status/validator-submitted -func (svc *Controller) ActionSubmissionSubmitted(ctx context.Context, params internal.ActionSubmissionSubmittedParams) error { +func (svc *Submissions) SetStatusSubmitted(ctx context.Context, params *validator.SubmittedRequest) (*validator.NullResponse, error) { + SubmissionID := int64(params.ID) // transaction target_status := model.SubmissionStatusSubmitted update := service.NewSubmissionUpdate() @@ -80,24 +97,29 @@ func (svc *Controller) ActionSubmissionSubmitted(ctx context.Context, params int update.SetCreator(params.Creator) update.SetGameID(uint32(params.GameID)) allowed_statuses := []model.SubmissionStatus{model.SubmissionStatusSubmitting} - err := svc.inner.UpdateSubmissionIfStatus(ctx, params.SubmissionID, allowed_statuses, update) + err := svc.inner.UpdateSubmissionIfStatus(ctx, SubmissionID, allowed_statuses, update) if err != nil { - return err + return nil, err } event_data := model.AuditEventDataAction{ TargetStatus: uint32(target_status), } - return svc.inner.CreateAuditEventAction( + err = svc.inner.CreateAuditEventAction( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.SubmissionID, + ID: SubmissionID, Type: model.ResourceSubmission, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionSubmissionRequestChanges implements actionSubmissionRequestChanges operation. @@ -105,15 +127,16 @@ func (svc *Controller) ActionSubmissionSubmitted(ctx context.Context, params int // (Internal endpoint) Role Validator changes status from Submitting -> RequestChanges. // // POST /submissions/{SubmissionID}/status/validator-request-changes -func (svc *Controller) ActionSubmissionRequestChanges(ctx context.Context, params internal.ActionSubmissionRequestChangesParams) error { +func (svc *Submissions) SetStatusRequestChanges(ctx context.Context, params *validator.SubmissionID) (*validator.NullResponse, error) { + SubmissionID := int64(params.ID) // transaction target_status := model.SubmissionStatusChangesRequested update := service.NewSubmissionUpdate() update.SetStatusID(target_status) allowed_statuses :=[]model.SubmissionStatus{model.SubmissionStatusSubmitting} - err := svc.inner.UpdateSubmissionIfStatus(ctx, params.SubmissionID, allowed_statuses, update) + err := svc.inner.UpdateSubmissionIfStatus(ctx, SubmissionID, allowed_statuses, update) if err != nil { - return err + return nil, err } // push an action audit event @@ -121,15 +144,20 @@ func (svc *Controller) ActionSubmissionRequestChanges(ctx context.Context, param TargetStatus: uint32(target_status), } - return svc.inner.CreateAuditEventAction( + err = svc.inner.CreateAuditEventAction( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.SubmissionID, + ID: SubmissionID, Type: model.ResourceSubmission, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionSubmissionValidate invokes actionSubmissionValidate operation. @@ -137,30 +165,36 @@ func (svc *Controller) ActionSubmissionRequestChanges(ctx context.Context, param // Role Validator changes status from Validating -> Validated. // // POST /submissions/{SubmissionID}/status/validator-validated -func (svc *Controller) ActionSubmissionValidated(ctx context.Context, params internal.ActionSubmissionValidatedParams) error { +func (svc *Submissions) SetStatusValidated(ctx context.Context, params *validator.SubmissionID) (*validator.NullResponse, error) { + SubmissionID := int64(params.ID) // transaction target_status := model.SubmissionStatusValidated update := service.NewSubmissionUpdate() update.SetStatusID(target_status) allowed_statuses :=[]model.SubmissionStatus{model.SubmissionStatusValidating} - err := svc.inner.UpdateSubmissionIfStatus(ctx, params.SubmissionID, allowed_statuses, update) + err := svc.inner.UpdateSubmissionIfStatus(ctx, SubmissionID, allowed_statuses, update) if err != nil { - return err + return nil, err } event_data := model.AuditEventDataAction{ TargetStatus: uint32(target_status), } - return svc.inner.CreateAuditEventAction( + err = svc.inner.CreateAuditEventAction( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.SubmissionID, + ID: SubmissionID, Type: model.ResourceSubmission, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionSubmissionAccepted implements actionSubmissionAccepted operation. @@ -168,15 +202,16 @@ func (svc *Controller) ActionSubmissionValidated(ctx context.Context, params int // (Internal endpoint) Role Validator changes status from Validating -> Accepted. // // POST /submissions/{SubmissionID}/status/validator-failed -func (svc *Controller) ActionSubmissionAccepted(ctx context.Context, params internal.ActionSubmissionAcceptedParams) error { +func (svc *Submissions) SetStatusFailed(ctx context.Context, params *validator.SubmissionID) (*validator.NullResponse, error) { + SubmissionID := int64(params.ID) // transaction target_status := model.SubmissionStatusAcceptedUnvalidated update := service.NewSubmissionUpdate() update.SetStatusID(target_status) allowed_statuses :=[]model.SubmissionStatus{model.SubmissionStatusValidating} - err := svc.inner.UpdateSubmissionIfStatus(ctx, params.SubmissionID, allowed_statuses, update) + err := svc.inner.UpdateSubmissionIfStatus(ctx, SubmissionID, allowed_statuses, update) if err != nil { - return err + return nil, err } // push an action audit event @@ -184,15 +219,20 @@ func (svc *Controller) ActionSubmissionAccepted(ctx context.Context, params inte TargetStatus: uint32(target_status), } - return svc.inner.CreateAuditEventAction( + err = svc.inner.CreateAuditEventAction( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.SubmissionID, + ID: SubmissionID, Type: model.ResourceSubmission, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // ActionSubmissionUploaded implements actionSubmissionUploaded operation. @@ -200,31 +240,37 @@ func (svc *Controller) ActionSubmissionAccepted(ctx context.Context, params inte // (Internal endpoint) Role Validator changes status from Uploading -> Uploaded. // // POST /submissions/{SubmissionID}/status/validator-uploaded -func (svc *Controller) ActionSubmissionUploaded(ctx context.Context, params internal.ActionSubmissionUploadedParams) error { +func (svc *Submissions) SetStatusUploaded(ctx context.Context, params *validator.StatusUploadedRequest) (*validator.NullResponse, error) { + SubmissionID := int64(params.ID) // transaction target_status := model.SubmissionStatusUploaded update := service.NewSubmissionUpdate() update.SetStatusID(target_status) - update.SetUploadedAssetID(uint64(params.UploadedAssetID)) + update.SetUploadedAssetID(params.UploadedAssetID) allowed_statuses :=[]model.SubmissionStatus{model.SubmissionStatusUploading} - err := svc.inner.UpdateSubmissionIfStatus(ctx, params.SubmissionID, allowed_statuses, update) + err := svc.inner.UpdateSubmissionIfStatus(ctx, SubmissionID, allowed_statuses, update) if err != nil { - return err + return nil, err } event_data := model.AuditEventDataAction{ TargetStatus: uint32(target_status), } - return svc.inner.CreateAuditEventAction( + err = svc.inner.CreateAuditEventAction( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.SubmissionID, + ID: SubmissionID, Type: model.ResourceSubmission, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // CreateSubmissionAuditError implements createSubmissionAuditError operation. @@ -232,20 +278,26 @@ func (svc *Controller) ActionSubmissionUploaded(ctx context.Context, params inte // Post an error to the audit log // // POST /submissions/{SubmissionID}/error -func (svc *Controller) CreateSubmissionAuditError(ctx context.Context, params internal.CreateSubmissionAuditErrorParams) (error) { +func (svc *Submissions) CreateAuditError(ctx context.Context, params *validator.AuditErrorRequest) (*validator.NullResponse, error) { + SubmissionID := int64(params.ID) event_data := model.AuditEventDataError{ Error: params.ErrorMessage, } - return svc.inner.CreateAuditEventError( + err := svc.inner.CreateAuditEventError( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.SubmissionID, + ID: SubmissionID, Type: model.ResourceSubmission, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // CreateSubmissionAuditCheckList implements createSubmissionAuditCheckList operation. @@ -253,10 +305,11 @@ func (svc *Controller) CreateSubmissionAuditError(ctx context.Context, params in // Post a checklist to the audit log // // POST /submissions/{SubmissionID}/checklist -func (svc *Controller) CreateSubmissionAuditCheckList(ctx context.Context, check_list internal.CheckList, params internal.CreateSubmissionAuditCheckListParams) (error) { - check_list2 := make([]model.Check, len(check_list)) - for i, check := range check_list { - check_list2[i] = model.Check{ +func (svc *Submissions) CreateAuditChecklist(ctx context.Context, params *validator.AuditChecklistRequest) (*validator.NullResponse, error) { + SubmissionID := int64(params.ID) + check_list := make([]model.Check, len(params.CheckList)) + for i, check := range params.CheckList { + check_list[i] = model.Check{ Name: check.Name, Summary: check.Summary, Passed: check.Passed, @@ -264,41 +317,36 @@ func (svc *Controller) CreateSubmissionAuditCheckList(ctx context.Context, check } event_data := model.AuditEventDataCheckList{ - CheckList: check_list2, + CheckList: check_list, } - return svc.inner.CreateAuditEventCheckList( + err := svc.inner.CreateAuditEventCheckList( ctx, - ValidtorUserID, + model.ValidatorUserID, model.Resource{ - ID: params.SubmissionID, + ID: SubmissionID, Type: model.ResourceSubmission, }, event_data, ) + if err != nil { + return nil, err + } + + return &validator.NullResponse{}, nil } // POST /submissions -func (svc *Controller) CreateSubmission(ctx context.Context, request *internal.SubmissionCreate) (*internal.SubmissionID, error) { - // sanitization - if request.GameID<0|| - request.AssetOwner<0|| - request.AssetID<0|| - request.AssetVersion<0{ - return nil, ErrNegativeID - } - var GameID=uint32(request.GameID); +func (svc *Submissions) Create(ctx context.Context, request *validator.SubmissionCreate) (*validator.SubmissionID, error) { var Submitter=uint64(request.AssetOwner); - var AssetID=uint64(request.AssetID); - var AssetVersion=uint64(request.AssetVersion); var Status=model.SubmissionStatus(request.Status); var roles=model.Roles(request.Roles); // Check if an active submission with the same asset id exists { filter := service.NewSubmissionFilter() - filter.SetAssetID(AssetID) - filter.SetAssetVersion(AssetVersion) + filter.SetAssetID(request.AssetID) + filter.SetAssetVersion(request.AssetVersion) filter.SetStatuses(ActiveSubmissionStatuses) active_submissions, err := svc.inner.ListSubmissions(ctx, filter, model.Page{ Number: 1, @@ -312,7 +360,8 @@ func (svc *Controller) CreateSubmission(ctx context.Context, request *internal.S } } - operation, err := svc.inner.GetOperation(ctx, request.OperationID) + operation_id := int32(request.OperationID) + operation, err := svc.inner.GetOperation(ctx, operation_id) if err != nil { return nil, err } @@ -330,10 +379,10 @@ func (svc *Controller) CreateSubmission(ctx context.Context, request *internal.S ID: 0, DisplayName: request.DisplayName, Creator: request.Creator, - GameID: GameID, + GameID: request.GameID, Submitter: Submitter, - AssetID: AssetID, - AssetVersion: AssetVersion, + AssetID: request.AssetID, + AssetVersion: request.AssetVersion, Completed: false, StatusID: Status, }) @@ -343,12 +392,12 @@ func (svc *Controller) CreateSubmission(ctx context.Context, request *internal.S // mark the operation as completed and provide the path params := service.NewOperationCompleteParams(fmt.Sprintf("/submissions/%d", submission.ID)) - err = svc.inner.CompleteOperation(ctx, request.OperationID, params) + err = svc.inner.CompleteOperation(ctx, operation_id, params) if err != nil { return nil, err } - return &internal.SubmissionID{ - SubmissionID: submission.ID, + return &validator.SubmissionID{ + ID: uint64(submission.ID), }, nil } From f95d8b166521d22f3c0fd0d7bb462c941433086f Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Fri, 18 Jul 2025 19:57:25 -0700 Subject: [PATCH 4/9] validator: bump edition --- validation/Cargo.toml | 2 +- validation/api/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/validation/Cargo.toml b/validation/Cargo.toml index c1df8f4..d8cbbf0 100644 --- a/validation/Cargo.toml +++ b/validation/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "maps-validation" version = "0.1.1" -edition = "2021" +edition = "2024" [dependencies] submissions-api = { path = "api", features = ["internal"], default-features = false, registry = "strafesnet" } diff --git a/validation/api/Cargo.toml b/validation/api/Cargo.toml index e8ce9f7..7612d47 100644 --- a/validation/api/Cargo.toml +++ b/validation/api/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "submissions-api" version = "0.8.2" -edition = "2021" +edition = "2024" publish = ["strafesnet"] repository = "https://git.itzana.me/StrafesNET/maps-service" license = "MIT OR Apache-2.0" From d50ae0e6641ea20770f193cc6ec2c792056cfc67 Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Thu, 17 Jul 2025 22:57:11 -0700 Subject: [PATCH 5/9] submissions-api: remove internal api --- Cargo.lock | 1 - validation/Cargo.toml | 1 - validation/api/Cargo.toml | 5 - validation/api/src/context.rs | 5 - validation/api/src/internal.rs | 241 --------------------------------- validation/api/src/lib.rs | 5 - 6 files changed, 258 deletions(-) delete mode 100644 validation/api/src/internal.rs diff --git a/Cargo.lock b/Cargo.lock index 005dc99..13708f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1021,7 +1021,6 @@ dependencies = [ "serde", "serde_json", "siphasher", - "submissions-api", "tokio", ] diff --git a/validation/Cargo.toml b/validation/Cargo.toml index d8cbbf0..937b775 100644 --- a/validation/Cargo.toml +++ b/validation/Cargo.toml @@ -4,7 +4,6 @@ version = "0.1.1" edition = "2024" [dependencies] -submissions-api = { path = "api", features = ["internal"], default-features = false, registry = "strafesnet" } async-nats = "0.42.0" futures = "0.3.31" rbx_asset = { version = "0.4.7", registry = "strafesnet" } diff --git a/validation/api/Cargo.toml b/validation/api/Cargo.toml index 7612d47..a52749e 100644 --- a/validation/api/Cargo.toml +++ b/validation/api/Cargo.toml @@ -17,8 +17,3 @@ serde = { version = "1", features = ["derive"] } serde_json = "1" serde_repr = "0.1.19" url = "2" - -[features] -default = ["external"] -internal = [] -external = [] diff --git a/validation/api/src/context.rs b/validation/api/src/context.rs index 36476b3..84be7ac 100644 --- a/validation/api/src/context.rs +++ b/validation/api/src/context.rs @@ -33,11 +33,6 @@ impl Context{ self.client.get(url) .send().await } - #[cfg(feature="internal")] - pub async fn post_empty_body(&self,url:impl reqwest::IntoUrl)->Result{ - self.client.post(url) - .send().await - } pub async fn post(&self,url:impl reqwest::IntoUrl,body:impl Into)->Result{ self.client.post(url) .header("Content-Type","application/json") diff --git a/validation/api/src/internal.rs b/validation/api/src/internal.rs deleted file mode 100644 index 3041387..0000000 --- a/validation/api/src/internal.rs +++ /dev/null @@ -1,241 +0,0 @@ -use crate::types::*; - -#[derive(Clone)] -pub struct Context(crate::context::Context); - -// conditionally include specified query pairs -macro_rules! query_pairs{ - ($url:expr,)=>{ - $url - }; - ($url:expr,$(($param:expr,$value:expr))+)=>{ - { - let mut url=$url; - url.query_pairs_mut() - $(.append_pair($param,$value))*; - url - } - }; -} - -// there are lots of action endpoints and they all follow the same pattern -macro_rules! action{ - ($system:expr,$fname:ident,$config:ident,$config_type:ident,$action:expr,$config_submission_id:expr,$(($param:expr,$value:expr))*)=>{ - pub async fn $fname(&self,$config:$config_type)->Result<(),Error>{ - let url_raw=format!(concat!("{}/",$system,"/{}/",$action),self.0.base_url,$config_submission_id); - let url=query_pairs!(reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?,$(($param,$value))*); - - response_ok( - self.0.post_empty_body(url).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)?; - - Ok(()) - } - }; -} -impl Context{ - pub fn new(base_url:String)->reqwest::Result{ - Ok(Self(crate::context::Context::new(base_url,None)?)) - } - pub async fn get_script(&self,config:GetScriptRequest)->Result{ - let url_raw=format!("{}/scripts/{}",self.0.base_url,config.ScriptID.0); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - - response_ok( - self.0.get(url).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)? - .json().await.map_err(Error::ReqwestJson) - } - pub async fn get_scripts(&self,config:GetScriptsRequest<'_>)->Result,Error>{ - let url_raw=format!("{}/scripts",self.0.base_url); - let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - - { - let mut query_pairs=url.query_pairs_mut(); - query_pairs.append_pair("Page",config.Page.to_string().as_str()); - query_pairs.append_pair("Limit",config.Limit.to_string().as_str()); - if let Some(name)=config.Name{ - query_pairs.append_pair("Name",name); - } - if let Some(hash)=config.Hash{ - query_pairs.append_pair("Hash",hash); - } - if let Some(source)=config.Source{ - query_pairs.append_pair("Source",source); - } - if let Some(resource_type)=config.ResourceType{ - query_pairs.append_pair("ResourceType",(resource_type as i32).to_string().as_str()); - } - if let Some(ResourceID(resource_id))=config.ResourceID{ - query_pairs.append_pair("ResourceID",resource_id.to_string().as_str()); - } - } - - response_ok( - self.0.get(url).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)? - .json().await.map_err(Error::ReqwestJson) - } - pub async fn get_script_from_hash(&self,config:HashRequest<'_>)->Result,ScriptSingleItemError>{ - let scripts=self.get_scripts(GetScriptsRequest{ - Page:1, - Limit:2, - Hash:Some(config.hash), - Name:None, - Source:None, - ResourceType:None, - ResourceID:None, - }).await.map_err(SingleItemError::Other)?; - if 1)->Result{ - let url_raw=format!("{}/scripts",self.0.base_url); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - - let body=serde_json::to_string(&config).map_err(Error::JSON)?; - - response_ok( - self.0.post(url,body).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)? - .json().await.map_err(Error::ReqwestJson) - } - pub async fn get_script_policies(&self,config:GetScriptPoliciesRequest<'_>)->Result,Error>{ - let url_raw=format!("{}/script-policy",self.0.base_url); - let mut url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - - { - let mut query_pairs=url.query_pairs_mut(); - query_pairs.append_pair("Page",config.Page.to_string().as_str()); - query_pairs.append_pair("Limit",config.Limit.to_string().as_str()); - if let Some(hash)=config.FromScriptHash{ - query_pairs.append_pair("FromScriptHash",hash); - } - if let Some(script_id)=config.ToScriptID{ - query_pairs.append_pair("ToScriptID",script_id.0.to_string().as_str()); - } - if let Some(policy)=config.Policy{ - query_pairs.append_pair("Policy",(policy as i32).to_string().as_str()); - } - } - - response_ok( - self.0.get(url).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)? - .json().await.map_err(Error::ReqwestJson) - } - pub async fn get_script_policy_from_hash(&self,config:HashRequest<'_>)->Result,ScriptPolicySingleItemError>{ - let policies=self.get_script_policies(GetScriptPoliciesRequest{ - Page:1, - Limit:2, - FromScriptHash:Some(config.hash), - ToScriptID:None, - Policy:None, - }).await.map_err(SingleItemError::Other)?; - if 1Result{ - let url_raw=format!("{}/script-policy",self.0.base_url); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - - let body=serde_json::to_string(&config).map_err(Error::JSON)?; - - response_ok( - self.0.post(url,body).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)? - .json().await.map_err(Error::ReqwestJson) - } - pub async fn create_submission(&self,config:CreateSubmissionRequest<'_>)->Result{ - let url_raw=format!("{}/submissions",self.0.base_url); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - - let body=serde_json::to_string(&config).map_err(Error::JSON)?; - - response_ok( - self.0.post(url,body).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)? - .json().await.map_err(Error::ReqwestJson) - } - pub async fn create_submission_audit_check_list(&self,config:CreateSubmissionAuditCheckListRequest<'_>)->Result<(),Error>{ - let url_raw=format!("{}/submissions/{}/checklist",self.0.base_url,config.SubmissionID.0); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - - let body=serde_json::to_string(&config.CheckList).map_err(Error::JSON)?; - - response_ok( - self.0.post(url,body).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)?; - - Ok(()) - } - // simple submission endpoints - action!("submissions",action_submission_request_changes,config,ActionSubmissionRequestChangesRequest,"status/validator-request-changes",config.SubmissionID.0,); - action!("submissions",action_submission_submitted,config,ActionSubmissionSubmittedRequest,"status/validator-submitted",config.SubmissionID.0, - ("ModelVersion",config.ModelVersion.to_string().as_str()) - ("DisplayName",config.DisplayName.as_str()) - ("Creator",config.Creator.as_str()) - ("GameID",(config.GameID as u8).to_string().as_str()) - ); - action!("submissions",action_submission_validated,config,SubmissionID,"status/validator-validated",config.0,); - action!("submissions",update_submission_validated_model,config,UpdateSubmissionModelRequest,"validated-model",config.SubmissionID.0, - ("ValidatedModelID",config.ModelID.to_string().as_str()) - ("ValidatedModelVersion",config.ModelVersion.to_string().as_str()) - ); - action!("submissions",action_submission_uploaded,config,ActionSubmissionUploadedRequest,"status/validator-uploaded",config.SubmissionID.0, - ("UploadedAssetID",config.UploadedAssetID.to_string().as_str()) - ); - action!("submissions",action_submission_accepted,config,ActionSubmissionAcceptedRequest,"status/validator-failed",config.SubmissionID.0,); - action!("submissions",create_submission_audit_error,config,CreateSubmissionAuditErrorRequest,"error",config.SubmissionID.0, - ("ErrorMessage",config.ErrorMessage.as_str()) - ); - pub async fn create_mapfix(&self,config:CreateMapfixRequest<'_>)->Result{ - let url_raw=format!("{}/mapfixes",self.0.base_url); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - - let body=serde_json::to_string(&config).map_err(Error::JSON)?; - - response_ok( - self.0.post(url,body).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)? - .json().await.map_err(Error::ReqwestJson) - } - pub async fn create_mapfix_audit_check_list(&self,config:CreateMapfixAuditCheckListRequest<'_>)->Result<(),Error>{ - let url_raw=format!("{}/mapfixes/{}/checklist",self.0.base_url,config.MapfixID.0); - let url=reqwest::Url::parse(url_raw.as_str()).map_err(Error::Parse)?; - - let body=serde_json::to_string(&config.CheckList).map_err(Error::JSON)?; - - response_ok( - self.0.post(url,body).await.map_err(Error::Reqwest)? - ).await.map_err(Error::Response)?; - - Ok(()) - } - // simple mapfixes endpoints - action!("mapfixes",action_mapfix_request_changes,config,ActionMapfixRequestChangesRequest,"status/validator-request-changes",config.MapfixID.0,); - action!("mapfixes",action_mapfix_submitted,config,ActionMapfixSubmittedRequest,"status/validator-submitted",config.MapfixID.0, - ("ModelVersion",config.ModelVersion.to_string().as_str()) - ("DisplayName",config.DisplayName.as_str()) - ("Creator",config.Creator.as_str()) - ("GameID",(config.GameID as u8).to_string().as_str()) - ); - action!("mapfixes",action_mapfix_validated,config,MapfixID,"status/validator-validated",config.0,); - action!("mapfixes",update_mapfix_validated_model,config,UpdateMapfixModelRequest,"validated-model",config.MapfixID.0, - ("ValidatedModelID",config.ModelID.to_string().as_str()) - ("ValidatedModelVersion",config.ModelVersion.to_string().as_str()) - ); - action!("mapfixes",action_mapfix_uploaded,config,ActionMapfixUploadedRequest,"status/validator-uploaded",config.MapfixID.0,); - action!("mapfixes",action_mapfix_accepted,config,ActionMapfixAcceptedRequest,"status/validator-failed",config.MapfixID.0,); - // simple operation endpoint - action!("operations",action_operation_failed,config,ActionOperationFailedRequest,"status/operation-failed",config.OperationID.0, - ("StatusMessage",config.StatusMessage.as_str()) - ); - action!("mapfixes",create_mapfix_audit_error,config,CreateMapfixAuditErrorRequest,"error",config.MapfixID.0, - ("ErrorMessage",config.ErrorMessage.as_str()) - ); -} diff --git a/validation/api/src/lib.rs b/validation/api/src/lib.rs index fdd1d22..11b351b 100644 --- a/validation/api/src/lib.rs +++ b/validation/api/src/lib.rs @@ -2,11 +2,6 @@ mod context; pub use context::Cookie; pub mod types; - -#[cfg(feature="internal")] -pub mod internal; - -#[cfg(feature="external")] pub mod external; //lazy reexports From eaa8f704eaf3d859931f02857d1ffaff99d743b1 Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Thu, 17 Jul 2025 23:02:11 -0700 Subject: [PATCH 6/9] validator: add rust-grpc dep --- Cargo.lock | 194 ++++++++++++++++++++++++++++++++++++++++++ validation/Cargo.toml | 2 + 2 files changed, 196 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 13708f9..ad8822b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -54,6 +54,12 @@ dependencies = [ "libc", ] +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + [[package]] name = "arrayref" version = "0.3.9" @@ -102,6 +108,17 @@ dependencies = [ "url", ] +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "atomic-waker" version = "1.1.2" @@ -114,6 +131,51 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +[[package]] +name = "axum" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +dependencies = [ + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", +] + [[package]] name = "backtrace" version = "0.3.75" @@ -386,6 +448,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + [[package]] name = "encoding_rs" version = "0.8.35" @@ -662,6 +730,12 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + [[package]] name = "hyper" version = "1.6.0" @@ -675,6 +749,7 @@ dependencies = [ "http", "http-body", "httparse", + "httpdate", "itoa", "pin-project-lite", "smallvec", @@ -698,6 +773,19 @@ dependencies = [ "tower-service", ] +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.6.0" @@ -897,6 +985,15 @@ dependencies = [ "serde", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.15" @@ -1018,12 +1115,20 @@ dependencies = [ "rbx_dom_weak", "rbx_reflection_database", "rbx_xml", + "rust-grpc", "serde", "serde_json", "siphasher", "tokio", + "tonic", ] +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + [[package]] name = "memchr" version = "2.7.5" @@ -1331,6 +1436,39 @@ dependencies = [ "syn", ] +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "prost-types" +version = "0.13.5-serde3" +source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/" +checksum = "e42128b6e3a6655aa5f72ac65a33848a512eb9b23e98986adc4bbe6559ea88ce" +dependencies = [ + "prost", + "serde", +] + [[package]] name = "quote" version = "1.0.40" @@ -1589,6 +1727,18 @@ dependencies = [ "serde", ] +[[package]] +name = "rust-grpc" +version = "1.3.0" +source = "sparse+https://git.itzana.me/api/packages/strafesnet/cargo/" +checksum = "23dc6efbef932befc29c64b9484be3686c97217f6197a91c2028c2eeee022f46" +dependencies = [ + "prost", + "prost-types", + "serde", + "tonic", +] + [[package]] name = "rustc-demangle" version = "0.1.25" @@ -2087,6 +2237,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + [[package]] name = "tokio-util" version = "0.7.15" @@ -2121,6 +2282,35 @@ dependencies = [ "webpki-roots 0.26.11", ] +[[package]] +name = "tonic" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" +dependencies = [ + "async-trait", + "axum", + "base64 0.22.1", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "socket2", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower" version = "0.5.2" @@ -2129,11 +2319,15 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", + "indexmap", "pin-project-lite", + "slab", "sync_wrapper", "tokio", + "tokio-util", "tower-layer", "tower-service", + "tracing", ] [[package]] diff --git a/validation/Cargo.toml b/validation/Cargo.toml index 937b775..9067bb7 100644 --- a/validation/Cargo.toml +++ b/validation/Cargo.toml @@ -17,3 +17,5 @@ siphasher = "1.0.1" tokio = { version = "1.41.1", features = ["macros", "rt-multi-thread", "signal"] } heck = "0.5.0" lazy-regex = "3.4.1" +rust-grpc = { version = "1.2.1", registry = "strafesnet" } +tonic = "0.13.1" From 3c21d8948aab621a1f9e6ec078f08b3da00ca747 Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Fri, 18 Jul 2025 20:10:13 -0700 Subject: [PATCH 7/9] validator: grpc --- validation/src/grpc/mapfixes.rs | 23 +++++++++++++++++++++++ validation/src/grpc/mod.rs | 15 +++++++++++++++ validation/src/grpc/operations.rs | 15 +++++++++++++++ validation/src/grpc/script_policy.rs | 16 ++++++++++++++++ validation/src/grpc/scripts.rs | 17 +++++++++++++++++ validation/src/grpc/submissions.rs | 23 +++++++++++++++++++++++ validation/src/main.rs | 1 + 7 files changed, 110 insertions(+) create mode 100644 validation/src/grpc/mapfixes.rs create mode 100644 validation/src/grpc/mod.rs create mode 100644 validation/src/grpc/operations.rs create mode 100644 validation/src/grpc/script_policy.rs create mode 100644 validation/src/grpc/scripts.rs create mode 100644 validation/src/grpc/submissions.rs diff --git a/validation/src/grpc/mapfixes.rs b/validation/src/grpc/mapfixes.rs new file mode 100644 index 0000000..aeee26e --- /dev/null +++ b/validation/src/grpc/mapfixes.rs @@ -0,0 +1,23 @@ +use crate::endpoint; +use rust_grpc::validator::*; +pub type ValidatorMapfixesServiceClient=rust_grpc::validator::validator_mapfix_service_client::ValidatorMapfixServiceClient; +#[derive(Clone)] +pub struct Service{ + client:ValidatorMapfixesServiceClient, +} +impl Service{ + pub fn new( + client:ValidatorMapfixesServiceClient, + )->Self{ + Self{client} + } + endpoint!(create,MapfixCreate,MapfixId); + endpoint!(create_audit_error,AuditErrorRequest,NullResponse); + endpoint!(create_audit_checklist,AuditChecklistRequest,NullResponse); + endpoint!(set_validated_model,ValidatedModelRequest,NullResponse); + endpoint!(set_status_submitted,SubmittedRequest,NullResponse); + endpoint!(set_status_request_changes,MapfixId,NullResponse); + endpoint!(set_status_validated,MapfixId,NullResponse); + endpoint!(set_status_failed,MapfixId,NullResponse); + endpoint!(set_status_uploaded,MapfixId,NullResponse); +} diff --git a/validation/src/grpc/mod.rs b/validation/src/grpc/mod.rs new file mode 100644 index 0000000..abb6925 --- /dev/null +++ b/validation/src/grpc/mod.rs @@ -0,0 +1,15 @@ + +pub mod mapfixes; +pub mod operations; +pub mod scripts; +pub mod script_policy; +pub mod submissions; + +#[macro_export] +macro_rules! endpoint{ + ($fn:ident,$in:ident,$out:ident)=>{ + pub async fn $fn(&self,request:$in)->Result<$out,tonic::Status>{ + Ok(self.client.clone().$fn(request).await?.into_inner()) + } + }; +} diff --git a/validation/src/grpc/operations.rs b/validation/src/grpc/operations.rs new file mode 100644 index 0000000..7c21522 --- /dev/null +++ b/validation/src/grpc/operations.rs @@ -0,0 +1,15 @@ +use crate::endpoint; +use rust_grpc::validator::*; +pub type ValidatorOperationsServiceClient=rust_grpc::validator::validator_operation_service_client::ValidatorOperationServiceClient; +#[derive(Clone)] +pub struct Service{ + client:ValidatorOperationsServiceClient, +} +impl Service{ + pub fn new( + client:ValidatorOperationsServiceClient, + )->Self{ + Self{client} + } + endpoint!(fail,OperationFailRequest,NullResponse); +} diff --git a/validation/src/grpc/script_policy.rs b/validation/src/grpc/script_policy.rs new file mode 100644 index 0000000..91b2537 --- /dev/null +++ b/validation/src/grpc/script_policy.rs @@ -0,0 +1,16 @@ +use crate::endpoint; +use rust_grpc::validator::*; +pub type ValidatorScriptPolicyServiceClient=rust_grpc::validator::validator_script_policy_service_client::ValidatorScriptPolicyServiceClient; +#[derive(Clone)] +pub struct Service{ + client:ValidatorScriptPolicyServiceClient, +} +impl Service{ + pub fn new( + client:ValidatorScriptPolicyServiceClient, + )->Self{ + Self{client} + } + endpoint!(create,ScriptPolicyCreate,ScriptPolicyId); + endpoint!(list,ScriptPolicyListRequest,ScriptPolicyListResponse); +} diff --git a/validation/src/grpc/scripts.rs b/validation/src/grpc/scripts.rs new file mode 100644 index 0000000..cbd52ee --- /dev/null +++ b/validation/src/grpc/scripts.rs @@ -0,0 +1,17 @@ +use crate::endpoint; +use rust_grpc::validator::*; +pub type ValidatorScriptsServiceClient=rust_grpc::validator::validator_script_service_client::ValidatorScriptServiceClient; +#[derive(Clone)] +pub struct Service{ + client:ValidatorScriptsServiceClient, +} +impl Service{ + pub fn new( + client:ValidatorScriptsServiceClient, + )->Self{ + Self{client} + } + endpoint!(create,ScriptCreate,ScriptId); + endpoint!(get,ScriptId,Script); + endpoint!(list,ScriptListRequest,ScriptListResponse); +} diff --git a/validation/src/grpc/submissions.rs b/validation/src/grpc/submissions.rs new file mode 100644 index 0000000..9dd7c75 --- /dev/null +++ b/validation/src/grpc/submissions.rs @@ -0,0 +1,23 @@ +use crate::endpoint; +use rust_grpc::validator::*; +pub type ValidatorSubmissionsServiceClient=rust_grpc::validator::validator_submission_service_client::ValidatorSubmissionServiceClient; +#[derive(Clone)] +pub struct Service{ + client:ValidatorSubmissionsServiceClient, +} +impl Service{ + pub fn new( + client:ValidatorSubmissionsServiceClient, + )->Self{ + Self{client} + } + endpoint!(create,SubmissionCreate,SubmissionId); + endpoint!(create_audit_error,AuditErrorRequest,NullResponse); + endpoint!(create_audit_checklist,AuditChecklistRequest,NullResponse); + endpoint!(set_validated_model,ValidatedModelRequest,NullResponse); + endpoint!(set_status_submitted,SubmittedRequest,NullResponse); + endpoint!(set_status_request_changes,SubmissionId,NullResponse); + endpoint!(set_status_validated,SubmissionId,NullResponse); + endpoint!(set_status_failed,SubmissionId,NullResponse); + endpoint!(set_status_uploaded,StatusUploadedRequest,NullResponse); +} diff --git a/validation/src/main.rs b/validation/src/main.rs index 02d1d3a..84453be 100644 --- a/validation/src/main.rs +++ b/validation/src/main.rs @@ -1,5 +1,6 @@ use futures::StreamExt; +mod grpc; mod rbx_util; mod message_handler; mod nats_types; From bdfe16ed3934aadd5ac5ae9c6408eb1191ec94f7 Mon Sep 17 00:00:00 2001 From: Rhys Lloyd Date: Fri, 18 Jul 2025 21:14:17 -0700 Subject: [PATCH 8/9] validator: extend grpc --- validation/src/grpc/error.rs | 19 +++++++++++++++++++ validation/src/grpc/mod.rs | 2 ++ validation/src/grpc/script_policy.rs | 18 ++++++++++++++++++ validation/src/grpc/scripts.rs | 20 ++++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 validation/src/grpc/error.rs diff --git a/validation/src/grpc/error.rs b/validation/src/grpc/error.rs new file mode 100644 index 0000000..a9ae15f --- /dev/null +++ b/validation/src/grpc/error.rs @@ -0,0 +1,19 @@ +use rust_grpc::validator::{ScriptId,ScriptPolicyId}; + +#[derive(Debug)] +#[expect(dead_code)] +pub enum SingleItemError{ + DuplicateItems(Items), + Other(tonic::Status), +} +impl std::fmt::Display for SingleItemError +where + Items:std::fmt::Debug +{ + fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ + write!(f,"{self:?}") + } +} +impl std::error::Error for SingleItemError where Items:std::fmt::Debug{} +pub type ScriptSingleItemError=SingleItemError>; +pub type ScriptPolicySingleItemError=SingleItemError>; diff --git a/validation/src/grpc/mod.rs b/validation/src/grpc/mod.rs index abb6925..2fff8c9 100644 --- a/validation/src/grpc/mod.rs +++ b/validation/src/grpc/mod.rs @@ -1,4 +1,6 @@ +pub mod error; + pub mod mapfixes; pub mod operations; pub mod scripts; diff --git a/validation/src/grpc/script_policy.rs b/validation/src/grpc/script_policy.rs index 91b2537..fe55d03 100644 --- a/validation/src/grpc/script_policy.rs +++ b/validation/src/grpc/script_policy.rs @@ -1,4 +1,5 @@ use crate::endpoint; +use crate::grpc::error::ScriptPolicySingleItemError; use rust_grpc::validator::*; pub type ValidatorScriptPolicyServiceClient=rust_grpc::validator::validator_script_policy_service_client::ValidatorScriptPolicyServiceClient; #[derive(Clone)] @@ -13,4 +14,21 @@ impl Service{ } endpoint!(create,ScriptPolicyCreate,ScriptPolicyId); endpoint!(list,ScriptPolicyListRequest,ScriptPolicyListResponse); + pub async fn get_from_hash(&self,hash:u64)->Result,ScriptPolicySingleItemError>{ + let policies=self.list(ScriptPolicyListRequest{ + filter:Some(ScriptPolicyFilter{ + from_script_hash:Some(hash), + to_script_id:None, + policy:None, + }), + page:Some(Pagination{ + number:1, + size:2, + }), + }).await.map_err(ScriptPolicySingleItemError::Other)?; + if 1; #[derive(Clone)] @@ -14,4 +15,23 @@ impl Service{ endpoint!(create,ScriptCreate,ScriptId); endpoint!(get,ScriptId,Script); endpoint!(list,ScriptListRequest,ScriptListResponse); + pub async fn get_from_hash(&self,hash:u64)->Result,ScriptSingleItemError>{ + let policies=self.list(ScriptListRequest{ + filter:Some(ScriptFilter{ + hash:Some(hash), + name:None, + source:None, + resource_type:None, + resource_id:None, + }), + page:Some(Pagination{ + number:1, + size:2, + }), + }).await.map_err(ScriptSingleItemError::Other)?; + if 1 Date: Sat, 19 Jul 2025 03:39:09 -0700 Subject: [PATCH 9/9] validator: convert to gRPC --- validation/src/check.rs | 26 ++--- validation/src/check_mapfix.rs | 44 ++++---- validation/src/check_submission.rs | 42 +++---- validation/src/create_mapfix.rs | 30 ++--- validation/src/create_submission.rs | 38 +++---- validation/src/main.rs | 21 ++-- validation/src/message_handler.rs | 22 +++- validation/src/nats_types.rs | 18 ++- validation/src/rbx_util.rs | 10 +- validation/src/types.rs | 43 ++++++++ validation/src/upload_mapfix.rs | 6 +- validation/src/upload_submission.rs | 8 +- validation/src/validate_mapfix.rs | 20 ++-- validation/src/validate_submission.rs | 20 ++-- validation/src/validator.rs | 152 +++++++++++++------------- 15 files changed, 280 insertions(+), 220 deletions(-) create mode 100644 validation/src/types.rs diff --git a/validation/src/check.rs b/validation/src/check.rs index b4015c4..bf37214 100644 --- a/validation/src/check.rs +++ b/validation/src/check.rs @@ -4,7 +4,7 @@ use crate::rbx_util::{get_mapinfo,get_root_instance,read_dom,ReadDomError,GameID use heck::{ToSnakeCase,ToTitleCase}; use rbx_dom_weak::Instance; -use submissions_api::types::Check; +use rust_grpc::validator::Check; #[allow(dead_code)] #[derive(Debug)] @@ -640,27 +640,27 @@ impl std::fmt::Display for Duplicates{ macro_rules! passed{ ($name:literal)=>{ Check{ - Name:$name, - Summary:String::new(), - Passed:true, + name:$name.to_owned(), + summary:String::new(), + passed:true, } } } macro_rules! summary{ ($name:literal,$summary:expr)=>{ Check{ - Name:$name, - Summary:$summary, - Passed:false, + name:$name.to_owned(), + summary:$summary, + passed:false, } }; } macro_rules! summary_format{ ($name:literal,$fmt:literal)=>{ Check{ - Name:$name, - Summary:format!($fmt), - Passed:false, + name:$name.to_owned(), + summary:format!($fmt), + passed:false, } }; } @@ -813,7 +813,7 @@ impl MapCheck<'_>{ summary_format!("UnanchoredParts","{count} unanchored {plural}: {context}") } }; - Ok(MapCheckList{checks:Box::new([ + Ok(MapCheckList{checks:vec![ model_class, model_name, display_name, @@ -831,13 +831,13 @@ impl MapCheck<'_>{ missing_wormhole_in, duplicate_wormhole_out, unanchored_parts, - ])}) + ]}) } } #[derive(serde::Serialize)] pub struct MapCheckList{ - pub checks:Box<[Check;17]>, + pub checks:Vec, } pub struct CheckListAndVersion{ diff --git a/validation/src/check_mapfix.rs b/validation/src/check_mapfix.rs index ce0e840..eb2e4e4 100644 --- a/validation/src/check_mapfix.rs +++ b/validation/src/check_mapfix.rs @@ -5,7 +5,7 @@ use crate::nats_types::CheckMapfixRequest; #[derive(Debug)] pub enum Error{ Check(crate::check::Error), - ApiActionMapfixCheck(submissions_api::Error), + ApiActionMapfixCheck(tonic::Status), } impl std::fmt::Display for Error{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -22,13 +22,13 @@ impl crate::message_handler::MessageHandler{ // update the mapfix depending on the result match check_result{ Ok(CheckListAndVersion{status:Ok(map_info),version})=>{ - self.api.action_mapfix_submitted( - submissions_api::types::ActionMapfixSubmittedRequest{ - MapfixID:mapfix_id, - ModelVersion:version, - DisplayName:map_info.display_name, - Creator:map_info.creator, - GameID:map_info.game_id.into(), + self.mapfixes.set_status_submitted( + rust_grpc::validator::SubmittedRequest{ + id:mapfix_id, + model_version:version, + display_name:map_info.display_name, + creator:map_info.creator, + game_id:map_info.game_id as u32, } ).await.map_err(Error::ApiActionMapfixCheck)?; @@ -36,29 +36,31 @@ impl crate::message_handler::MessageHandler{ return Ok(()); }, // update the mapfix model status to request changes - Ok(CheckListAndVersion{status:Err(check_list),..})=>self.api.create_mapfix_audit_check_list( - submissions_api::types::CreateMapfixAuditCheckListRequest{ - MapfixID:mapfix_id, - CheckList:check_list.checks.as_slice(), - } - ).await.map_err(Error::ApiActionMapfixCheck)?, + Ok(CheckListAndVersion{status:Err(check_list),..})=>{ + self.mapfixes.create_audit_checklist( + rust_grpc::validator::AuditChecklistRequest{ + id:mapfix_id, + check_list:check_list.checks, + } + ).await.map_err(Error::ApiActionMapfixCheck)?; + }, // update the mapfix model status to request changes Err(e)=>{ // log error println!("[check_mapfix] Error: {e}"); - self.api.create_mapfix_audit_error( - submissions_api::types::CreateMapfixAuditErrorRequest{ - MapfixID:mapfix_id, - ErrorMessage:e.to_string(), + self.mapfixes.create_audit_error( + rust_grpc::validator::AuditErrorRequest{ + id:mapfix_id, + error_message:e.to_string(), } ).await.map_err(Error::ApiActionMapfixCheck)?; }, } - self.api.action_mapfix_request_changes( - submissions_api::types::ActionMapfixRequestChangesRequest{ - MapfixID:mapfix_id, + self.mapfixes.set_status_request_changes( + rust_grpc::validator::MapfixId{ + id:mapfix_id, } ).await.map_err(Error::ApiActionMapfixCheck)?; diff --git a/validation/src/check_submission.rs b/validation/src/check_submission.rs index 7f838b2..3ba70f9 100644 --- a/validation/src/check_submission.rs +++ b/validation/src/check_submission.rs @@ -5,7 +5,7 @@ use crate::nats_types::CheckSubmissionRequest; #[derive(Debug)] pub enum Error{ Check(crate::check::Error), - ApiActionSubmissionCheck(submissions_api::Error), + ApiActionSubmissionCheck(tonic::Status), } impl std::fmt::Display for Error{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -23,13 +23,13 @@ impl crate::message_handler::MessageHandler{ match check_result{ // update the submission model status to submitted Ok(CheckListAndVersion{status:Ok(map_info),version})=>{ - self.api.action_submission_submitted( - submissions_api::types::ActionSubmissionSubmittedRequest{ - SubmissionID:submission_id, - ModelVersion:version, - DisplayName:map_info.display_name, - Creator:map_info.creator, - GameID:map_info.game_id.into(), + self.submissions.set_status_submitted( + rust_grpc::validator::SubmittedRequest{ + id:submission_id, + model_version:version, + display_name:map_info.display_name, + creator:map_info.creator, + game_id:map_info.game_id as u32, } ).await.map_err(Error::ApiActionSubmissionCheck)?; @@ -37,29 +37,31 @@ impl crate::message_handler::MessageHandler{ return Ok(()); }, // update the submission model status to request changes - Ok(CheckListAndVersion{status:Err(check_list),..})=>self.api.create_submission_audit_check_list( - submissions_api::types::CreateSubmissionAuditCheckListRequest{ - SubmissionID:submission_id, - CheckList:check_list.checks.as_slice(), + Ok(CheckListAndVersion{status:Err(check_list),..})=>{ + self.submissions.create_audit_checklist( + rust_grpc::validator::AuditChecklistRequest{ + id:submission_id, + check_list:check_list.checks, } - ).await.map_err(Error::ApiActionSubmissionCheck)?, + ).await.map_err(Error::ApiActionSubmissionCheck)?; + }, // update the submission model status to request changes Err(e)=>{ // log error println!("[check_submission] Error: {e}"); - self.api.create_submission_audit_error( - submissions_api::types::CreateSubmissionAuditErrorRequest{ - SubmissionID:submission_id, - ErrorMessage:e.to_string(), + self.submissions.create_audit_error( + rust_grpc::validator::AuditErrorRequest{ + id:submission_id, + error_message:e.to_string(), } ).await.map_err(Error::ApiActionSubmissionCheck)?; }, } - self.api.action_submission_request_changes( - submissions_api::types::ActionSubmissionRequestChangesRequest{ - SubmissionID:submission_id, + self.submissions.set_status_request_changes( + rust_grpc::validator::SubmissionId{ + id:submission_id, } ).await.map_err(Error::ApiActionSubmissionCheck)?; diff --git a/validation/src/create_mapfix.rs b/validation/src/create_mapfix.rs index d697675..443f694 100644 --- a/validation/src/create_mapfix.rs +++ b/validation/src/create_mapfix.rs @@ -5,7 +5,7 @@ use crate::create::CreateRequest; #[derive(Debug)] pub enum Error{ Create(crate::create::Error), - ApiActionMapfixCreate(submissions_api::Error), + ApiActionMapfixCreate(tonic::Status), } impl std::fmt::Display for Error{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -22,22 +22,22 @@ impl crate::message_handler::MessageHandler{ }).await.map_err(Error::Create)?; // call create on api - self.api.create_mapfix(submissions_api::types::CreateMapfixRequest{ - OperationID:create_info.OperationID, - AssetOwner:create_request.AssetOwner as i64, - DisplayName:create_request.DisplayName.as_deref().unwrap_or_default(), - Creator:create_request.Creator.as_deref().unwrap_or_default(), + self.mapfixes.create(rust_grpc::validator::MapfixCreate{ + operation_id:create_info.OperationID, + asset_owner:create_request.AssetOwner, + display_name:create_request.DisplayName.unwrap_or_default(), + creator:create_request.Creator.unwrap_or_default(), // not great TODO: make this great - GameID:create_request.GameID.unwrap_or(crate::rbx_util::GameID::Bhop).into(), - AssetID:create_info.ModelID, - AssetVersion:create_request.AssetVersion, - TargetAssetID:create_info.TargetAssetID, - Description:create_info.Description.as_str(), + game_id:create_request.GameID.unwrap_or(crate::rbx_util::GameID::Bhop) as u32, + asset_id:create_info.ModelID, + asset_version:create_request.AssetVersion, + target_asset_id:create_info.TargetAssetID, + description:create_info.Description, }).await.map_err(Error::ApiActionMapfixCreate)?; Ok(()) } - pub async fn create_mapfix(&self,create_info:CreateMapfixRequest)->Result<(),submissions_api::Error>{ + pub async fn create_mapfix(&self,create_info:CreateMapfixRequest)->Result<(),tonic::Status>{ let operation_id=create_info.OperationID; let create_result=self.create_mapfix_inner(create_info).await; @@ -46,9 +46,9 @@ impl crate::message_handler::MessageHandler{ // log error println!("[create_mapfix] Error: {e}"); - self.api.action_operation_failed(submissions_api::types::ActionOperationFailedRequest{ - OperationID:operation_id, - StatusMessage:e.to_string(), + self.operations.fail(rust_grpc::validator::OperationFailRequest{ + operation_id, + status_message:e.to_string(), }).await?; } diff --git a/validation/src/create_submission.rs b/validation/src/create_submission.rs index 807044f..e30ec26 100644 --- a/validation/src/create_submission.rs +++ b/validation/src/create_submission.rs @@ -6,7 +6,7 @@ use crate::rbx_util::GameID; #[derive(Debug)] pub enum Error{ Create(crate::create::Error), - ApiActionSubmissionCreate(submissions_api::Error), + ApiActionSubmissionCreate(tonic::Status), } impl std::fmt::Display for Error{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -23,35 +23,35 @@ impl crate::message_handler::MessageHandler{ // grab values from submission form, otherwise try to fill blanks from map data let display_name=if create_info.DisplayName.is_empty(){ - create_request.DisplayName.as_deref().unwrap_or_default() + create_request.DisplayName.unwrap_or_default() }else{ - create_info.DisplayName.as_str() + create_info.DisplayName }; let creator=if create_info.Creator.is_empty(){ - create_request.Creator.as_deref().unwrap_or_default() + create_request.Creator.unwrap_or_default() }else{ - create_info.Creator.as_str() + create_info.Creator }; let game_id=create_info.GameID.try_into().ok().or(create_request.GameID).unwrap_or(GameID::Bhop); // call create on api - self.api.create_submission(submissions_api::types::CreateSubmissionRequest{ - OperationID:create_info.OperationID, - AssetOwner:create_request.AssetOwner as i64, - DisplayName:display_name, - Creator:creator, - GameID:game_id.into(), - AssetID:create_info.ModelID, - AssetVersion:create_request.AssetVersion, - Status:create_info.Status, - Roles:create_info.Roles, + self.submissions.create(rust_grpc::validator::SubmissionCreate{ + operation_id:create_info.OperationID, + asset_owner:create_request.AssetOwner, + display_name:display_name, + creator:creator, + game_id:game_id as u32, + asset_id:create_info.ModelID, + asset_version:create_request.AssetVersion, + status:create_info.Status, + roles:create_info.Roles, }).await.map_err(Error::ApiActionSubmissionCreate)?; Ok(()) } - pub async fn create_submission(&self,create_info:CreateSubmissionRequest)->Result<(),submissions_api::Error>{ + pub async fn create_submission(&self,create_info:CreateSubmissionRequest)->Result<(),tonic::Status>{ let operation_id=create_info.OperationID; let create_result=self.create_submission_inner(create_info).await; @@ -60,9 +60,9 @@ impl crate::message_handler::MessageHandler{ // log error println!("[create_submission] Error: {e}"); - self.api.action_operation_failed(submissions_api::types::ActionOperationFailedRequest{ - OperationID:operation_id, - StatusMessage:e.to_string(), + self.operations.fail(rust_grpc::validator::OperationFailRequest{ + operation_id:operation_id, + status_message:e.to_string(), }).await?; } diff --git a/validation/src/main.rs b/validation/src/main.rs index 84453be..bf3f26f 100644 --- a/validation/src/main.rs +++ b/validation/src/main.rs @@ -1,10 +1,12 @@ use futures::StreamExt; +mod download; mod grpc; mod rbx_util; mod message_handler; mod nats_types; -mod download; +mod types; + mod check; mod check_mapfix; mod check_submission; @@ -20,7 +22,7 @@ mod validate_submission; #[allow(dead_code)] #[derive(Debug)] pub enum StartupError{ - API(submissions_api::ReqwestError), + API(tonic::transport::Error), NatsConnect(async_nats::ConnectError), NatsGetStream(async_nats::jetstream::context::GetStreamError), NatsConsumer(async_nats::jetstream::stream::ConsumerError), @@ -55,7 +57,14 @@ async fn main()->Result<(),StartupError>{ // maps-service api let api_host_internal=std::env::var("API_HOST_INTERNAL").expect("API_HOST_INTERNAL env required"); - let api=submissions_api::internal::Context::new(api_host_internal).map_err(StartupError::API)?; + let (mapfixes,operations,scripts,script_policy,submissions)=tokio::try_join!( + crate::grpc::mapfixes::ValidatorMapfixesServiceClient::connect(api_host_internal.clone()), + crate::grpc::operations::ValidatorOperationsServiceClient::connect(api_host_internal.clone()), + crate::grpc::scripts::ValidatorScriptsServiceClient::connect(api_host_internal.clone()), + crate::grpc::script_policy::ValidatorScriptPolicyServiceClient::connect(api_host_internal.clone()), + crate::grpc::submissions::ValidatorSubmissionsServiceClient::connect(api_host_internal.clone()), + ).map_err(StartupError::API)?; + let message_handler=message_handler::MessageHandler::new(cloud_context,cookie_context,group_id,mapfixes,operations,scripts,script_policy,submissions); // nats let nats_host=std::env::var("NATS_HOST").expect("NATS_HOST env required"); @@ -88,14 +97,12 @@ async fn main()->Result<(),StartupError>{ consumer.messages().await.map_err(StartupError::NatsStream) }; - let message_handler=message_handler::MessageHandler::new(cloud_context,cookie_context,group_id,api); + // run futures + let mut messages=nats_fut.await?; // Create a signal listener for SIGTERM let mut sig_term=tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate()).expect("Failed to create SIGTERM signal listener"); - // run futures - let mut messages=nats_fut.await?; - // process up to PARALLEL_REQUESTS in parallel let main_loop=async move{ static SEM:tokio::sync::Semaphore=tokio::sync::Semaphore::const_new(PARALLEL_REQUESTS); diff --git a/validation/src/message_handler.rs b/validation/src/message_handler.rs index fc30782..4508369 100644 --- a/validation/src/message_handler.rs +++ b/validation/src/message_handler.rs @@ -5,8 +5,8 @@ pub enum HandleMessageError{ DoubleAck(async_nats::Error), Json(serde_json::Error), UnknownSubject(String), - CreateMapfix(submissions_api::Error), - CreateSubmission(submissions_api::Error), + CreateMapfix(tonic::Status), + CreateSubmission(tonic::Status), CheckMapfix(crate::check_mapfix::Error), CheckSubmission(crate::check_submission::Error), UploadMapfix(crate::upload_mapfix::Error), @@ -31,7 +31,11 @@ pub struct MessageHandler{ pub(crate) cloud_context:rbx_asset::cloud::Context, pub(crate) cookie_context:rbx_asset::cookie::Context, pub(crate) group_id:Option, - pub(crate) api:submissions_api::internal::Context, + pub(crate) mapfixes:crate::grpc::mapfixes::Service, + pub(crate) operations:crate::grpc::operations::Service, + pub(crate) scripts:crate::grpc::scripts::Service, + pub(crate) script_policy:crate::grpc::script_policy::Service, + pub(crate) submissions:crate::grpc::submissions::Service, } impl MessageHandler{ @@ -39,13 +43,21 @@ impl MessageHandler{ cloud_context:rbx_asset::cloud::Context, cookie_context:rbx_asset::cookie::Context, group_id:Option, - api:submissions_api::internal::Context, + mapfixes:crate::grpc::mapfixes::ValidatorMapfixesServiceClient, + operations:crate::grpc::operations::ValidatorOperationsServiceClient, + scripts:crate::grpc::scripts::ValidatorScriptsServiceClient, + script_policy:crate::grpc::script_policy::ValidatorScriptPolicyServiceClient, + submissions:crate::grpc::submissions::ValidatorSubmissionsServiceClient, )->Self{ Self{ cloud_context, cookie_context, group_id, - api, + mapfixes:crate::grpc::mapfixes::Service::new(mapfixes), + operations:crate::grpc::operations::Service::new(operations), + scripts:crate::grpc::scripts::Service::new(scripts), + script_policy:crate::grpc::script_policy::Service::new(script_policy), + submissions:crate::grpc::submissions::Service::new(submissions), } } pub async fn handle_message_result(&self,message_result:MessageResult)->Result<(),HandleMessageError>{ diff --git a/validation/src/nats_types.rs b/validation/src/nats_types.rs index 203bef4..2c29cd3 100644 --- a/validation/src/nats_types.rs +++ b/validation/src/nats_types.rs @@ -1,5 +1,3 @@ -use submissions_api::types::{SubmissionID,MapfixID,OperationID}; - // These represent the information needed in the nats message // to perform the operation, not necessarily the over-the-wire format @@ -10,7 +8,7 @@ use submissions_api::types::{SubmissionID,MapfixID,OperationID}; #[derive(serde::Deserialize)] pub struct CreateSubmissionRequest{ // operation_id is passed back in the response message - pub OperationID:OperationID, + pub OperationID:u32, pub ModelID:u64, pub DisplayName:String, pub Creator:String, @@ -23,7 +21,7 @@ pub struct CreateSubmissionRequest{ #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct CreateMapfixRequest{ - pub OperationID:OperationID, + pub OperationID:u32, pub ModelID:u64, pub TargetAssetID:u64, pub Description:String, @@ -32,7 +30,7 @@ pub struct CreateMapfixRequest{ #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct CheckSubmissionRequest{ - pub SubmissionID:SubmissionID, + pub SubmissionID:u64, pub ModelID:u64, pub SkipChecks:bool, } @@ -40,7 +38,7 @@ pub struct CheckSubmissionRequest{ #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct CheckMapfixRequest{ - pub MapfixID:MapfixID, + pub MapfixID:u64, pub ModelID:u64, pub SkipChecks:bool, } @@ -49,7 +47,7 @@ pub struct CheckMapfixRequest{ #[derive(serde::Deserialize)] pub struct ValidateSubmissionRequest{ // submission_id is passed back in the response message - pub SubmissionID:SubmissionID, + pub SubmissionID:u64, pub ModelID:u64, pub ModelVersion:u64, pub ValidatedModelID:Option, @@ -59,7 +57,7 @@ pub struct ValidateSubmissionRequest{ #[derive(serde::Deserialize)] pub struct ValidateMapfixRequest{ // submission_id is passed back in the response message - pub MapfixID:MapfixID, + pub MapfixID:u64, pub ModelID:u64, pub ModelVersion:u64, pub ValidatedModelID:Option, @@ -69,7 +67,7 @@ pub struct ValidateMapfixRequest{ #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct UploadSubmissionRequest{ - pub SubmissionID:SubmissionID, + pub SubmissionID:u64, pub ModelID:u64, pub ModelVersion:u64, pub ModelName:String, @@ -78,7 +76,7 @@ pub struct UploadSubmissionRequest{ #[allow(nonstandard_style)] #[derive(serde::Deserialize)] pub struct UploadMapfixRequest{ - pub MapfixID:MapfixID, + pub MapfixID:u64, pub ModelID:u64, pub ModelVersion:u64, pub TargetAssetID:u64, diff --git a/validation/src/rbx_util.rs b/validation/src/rbx_util.rs index 4f4451c..14297ed 100644 --- a/validation/src/rbx_util.rs +++ b/validation/src/rbx_util.rs @@ -37,15 +37,7 @@ pub enum GameID{ Surf=2, FlyTrials=5, } -impl From for submissions_api::types::GameID{ - fn from(value:GameID)->Self{ - match value{ - GameID::Bhop=>submissions_api::types::GameID::Bhop, - GameID::Surf=>submissions_api::types::GameID::Surf, - GameID::FlyTrials=>submissions_api::types::GameID::FlyTrials, - } - } -} + #[derive(Debug)] pub struct ParseGameIDError; impl std::str::FromStr for GameID{ diff --git a/validation/src/types.rs b/validation/src/types.rs new file mode 100644 index 0000000..afea9c3 --- /dev/null +++ b/validation/src/types.rs @@ -0,0 +1,43 @@ +use rust_grpc::validator::ResourceType; + +#[derive(Clone,Copy,Debug,Hash,Eq,PartialEq,serde::Serialize,serde::Deserialize)] +pub struct MapfixID(pub(crate)u64); +#[derive(Clone,Copy,Debug,Hash,Eq,PartialEq,serde::Serialize,serde::Deserialize)] +pub struct SubmissionID(pub(crate)u64); +#[derive(Clone,Copy,Debug,Hash,Eq,PartialEq,serde::Serialize,serde::Deserialize)] +pub struct OperationID(pub(crate)u64); +#[derive(Clone,Copy,Debug,Hash,Eq,PartialEq,serde::Serialize,serde::Deserialize)] +pub struct ResourceID(pub(crate)u64); +#[derive(Clone,Copy,Debug,Hash,Eq,PartialEq,serde::Serialize,serde::Deserialize)] +pub struct ScriptID(pub(crate)u64); + +pub struct StupidPolicy(pub(crate)rust_grpc::validator::Policy); +#[derive(Debug)] +pub struct StupidPolicyError; +impl TryFrom for StupidPolicy{ + type Error=StupidPolicyError; + fn try_from(value:i32)->Result{ + Ok(Self(match value{ + 0=>rust_grpc::validator::Policy::None, + 1=>rust_grpc::validator::Policy::Allowed, + 2=>rust_grpc::validator::Policy::Blocked, + 3=>rust_grpc::validator::Policy::Delete, + 4=>rust_grpc::validator::Policy::Replace, + _=>return Err(StupidPolicyError), + })) + } +} + +#[derive(Clone,Copy,Debug)] +pub enum Resource{ + Submission(SubmissionID), + Mapfix(MapfixID), +} +impl Resource{ + pub fn split(self)->(ResourceType,ResourceID){ + match self{ + Resource::Mapfix(MapfixID(mapfix_id))=>(ResourceType::Mapfix,ResourceID(mapfix_id)), + Resource::Submission(SubmissionID(submission_id))=>(ResourceType::Submission,ResourceID(submission_id)), + } + } +} diff --git a/validation/src/upload_mapfix.rs b/validation/src/upload_mapfix.rs index 3e3e8d8..8e567cd 100644 --- a/validation/src/upload_mapfix.rs +++ b/validation/src/upload_mapfix.rs @@ -8,7 +8,7 @@ pub enum Error{ IO(std::io::Error), Json(serde_json::Error), Upload(rbx_asset::cookie::UploadError), - ApiActionMapfixUploaded(submissions_api::Error), + ApiActionMapfixUploaded(tonic::Status), } impl std::fmt::Display for Error{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -41,8 +41,8 @@ impl crate::message_handler::MessageHandler{ // that's it, the database entry does not need to be changed. // mark mapfix as uploaded, TargetAssetID is unchanged - self.api.action_mapfix_uploaded(submissions_api::types::ActionMapfixUploadedRequest{ - MapfixID:upload_info.MapfixID, + self.mapfixes.set_status_uploaded(rust_grpc::validator::MapfixId{ + id:upload_info.MapfixID, }).await.map_err(Error::ApiActionMapfixUploaded)?; Ok(()) diff --git a/validation/src/upload_submission.rs b/validation/src/upload_submission.rs index bc07b75..3b6319d 100644 --- a/validation/src/upload_submission.rs +++ b/validation/src/upload_submission.rs @@ -9,7 +9,7 @@ pub enum Error{ Json(serde_json::Error), Create(rbx_asset::cookie::CreateError), SystemTime(std::time::SystemTimeError), - ApiActionSubmissionUploaded(submissions_api::Error), + ApiActionSubmissionUploaded(tonic::Status), } impl std::fmt::Display for Error{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -39,9 +39,9 @@ impl crate::message_handler::MessageHandler{ },model_data).await.map_err(Error::Create)?; // note the asset id of the created model for later release, and mark the submission as uploaded - self.api.action_submission_uploaded(submissions_api::types::ActionSubmissionUploadedRequest{ - SubmissionID:upload_info.SubmissionID, - UploadedAssetID:upload_response.AssetId, + self.submissions.set_status_uploaded(rust_grpc::validator::StatusUploadedRequest{ + id:upload_info.SubmissionID, + uploaded_asset_id:upload_response.AssetId, }).await.map_err(Error::ApiActionSubmissionUploaded)?; Ok(()) diff --git a/validation/src/validate_mapfix.rs b/validation/src/validate_mapfix.rs index bce1639..10cb0ef 100644 --- a/validation/src/validate_mapfix.rs +++ b/validation/src/validate_mapfix.rs @@ -3,7 +3,7 @@ use crate::nats_types::ValidateMapfixRequest; #[allow(dead_code)] #[derive(Debug)] pub enum Error{ - ApiActionMapfixValidate(submissions_api::Error), + ApiActionMapfixValidate(tonic::Status), } impl std::fmt::Display for Error{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -21,24 +21,24 @@ impl crate::message_handler::MessageHandler{ match &validate_result{ Ok(())=>{ // update the mapfix model status to validated - self.api.action_mapfix_validated( - mapfix_id - ).await.map_err(Error::ApiActionMapfixValidate)?; + self.mapfixes.set_status_validated(rust_grpc::validator::MapfixId{ + id:mapfix_id, + }).await.map_err(Error::ApiActionMapfixValidate)?; }, Err(e)=>{ // log error println!("[validate_mapfix] Error: {e}"); - self.api.create_mapfix_audit_error( - submissions_api::types::CreateMapfixAuditErrorRequest{ - MapfixID:mapfix_id, - ErrorMessage:e.to_string(), + self.mapfixes.create_audit_error( + rust_grpc::validator::AuditErrorRequest{ + id:mapfix_id, + error_message:e.to_string(), } ).await.map_err(Error::ApiActionMapfixValidate)?; // update the mapfix model status to accepted - self.api.action_mapfix_accepted(submissions_api::types::ActionMapfixAcceptedRequest{ - MapfixID:mapfix_id, + self.mapfixes.set_status_failed(rust_grpc::validator::MapfixId{ + id:mapfix_id, }).await.map_err(Error::ApiActionMapfixValidate)?; }, } diff --git a/validation/src/validate_submission.rs b/validation/src/validate_submission.rs index 000ce41..690e71d 100644 --- a/validation/src/validate_submission.rs +++ b/validation/src/validate_submission.rs @@ -3,7 +3,7 @@ use crate::nats_types::ValidateSubmissionRequest; #[allow(dead_code)] #[derive(Debug)] pub enum Error{ - ApiActionSubmissionValidate(submissions_api::Error), + ApiActionSubmissionValidate(tonic::Status), } impl std::fmt::Display for Error{ fn fmt(&self,f:&mut std::fmt::Formatter<'_>)->std::fmt::Result{ @@ -21,24 +21,24 @@ impl crate::message_handler::MessageHandler{ match &validate_result{ Ok(())=>{ // update the submission model status to validated - self.api.action_submission_validated( - submission_id - ).await.map_err(Error::ApiActionSubmissionValidate)?; + self.submissions.set_status_validated(rust_grpc::validator::SubmissionId{ + id:submission_id, + }).await.map_err(Error::ApiActionSubmissionValidate)?; }, Err(e)=>{ // log error println!("[validate_submission] Error: {e}"); - self.api.create_submission_audit_error( - submissions_api::types::CreateSubmissionAuditErrorRequest{ - SubmissionID:submission_id, - ErrorMessage:e.to_string(), + self.submissions.create_audit_error( + rust_grpc::validator::AuditErrorRequest{ + id:submission_id, + error_message:e.to_string(), } ).await.map_err(Error::ApiActionSubmissionValidate)?; // update the submission model status to accepted - self.api.action_submission_accepted(submissions_api::types::ActionSubmissionAcceptedRequest{ - SubmissionID:submission_id, + self.submissions.set_status_failed(rust_grpc::validator::SubmissionId{ + id:submission_id, }).await.map_err(Error::ApiActionSubmissionValidate)?; }, } diff --git a/validation/src/validator.rs b/validation/src/validator.rs index 39ffa0c..4302fe4 100644 --- a/validation/src/validator.rs +++ b/validation/src/validator.rs @@ -1,33 +1,20 @@ use futures::TryStreamExt; -use submissions_api::types::Resource; +use rust_grpc::validator::Policy; use crate::download::download_asset_version; use crate::rbx_util::{read_dom,static_ustr,ReadDomError}; +use crate::types::{MapfixID,ScriptID,StupidPolicy,StupidPolicyError,SubmissionID,Resource,ResourceID}; const SCRIPT_CONCURRENCY:usize=16; -enum Policy{ - None, - Allowed, - Blocked, - Delete, - Replace(String), -} - -struct NamePolicy{ - name:String, - policy:Policy, -} - fn source_has_illegal_keywords(source:&str)->bool{ source.contains("getfenv")||source.contains("require") } -fn hash_source(source:&str)->String{ +fn hash_source(source:&str)->u64{ let mut hasher=siphasher::sip::SipHasher::new(); std::hash::Hasher::write(&mut hasher,source.as_bytes()); - let hash=std::hash::Hasher::finish(&hasher); - format!("{:016x}",hash) + std::hash::Hasher::finish(&hasher) } #[allow(dead_code)] @@ -40,17 +27,18 @@ pub enum Error{ submitted:u64, }, ScriptFlaggedIllegalKeyword(String), - ScriptBlocked(Option), - ScriptNotYetReviewed(Option), + ScriptBlocked(Option), + ScriptNotYetReviewed(Option), Download(crate::download::Error), ModelFileDecode(ReadDomError), - ApiGetScriptPolicyFromHash(submissions_api::types::ScriptPolicySingleItemError), - ApiGetScript(submissions_api::Error), - ApiCreateScript(submissions_api::Error), - ApiCreateScriptPolicy(submissions_api::Error), - ApiGetScriptFromHash(submissions_api::types::ScriptSingleItemError), - ApiUpdateMapfixModel(submissions_api::Error), - ApiUpdateSubmissionModel(submissions_api::Error), + ApiGetScriptPolicyFromHash(crate::grpc::error::ScriptPolicySingleItemError), + ApiGetScript(tonic::Status), + StupidPolicy(StupidPolicyError), + ApiCreateScript(tonic::Status), + ApiCreateScriptPolicy(tonic::Status), + ApiGetScriptFromHash(crate::grpc::error::ScriptSingleItemError), + ApiUpdateMapfixModel(tonic::Status), + ApiUpdateSubmissionModel(tonic::Status), ModelFileRootMustHaveOneChild, ModelFileChildRefIsNil, ModelFileEncode(rbx_binary::EncodeError), @@ -78,7 +66,7 @@ impl From for ValidateRequest{ ModelID:value.ModelID, ModelVersion:value.ModelVersion, ValidatedModelID:value.ValidatedModelID, - Resource:Resource::Mapfix(value.MapfixID), + Resource:Resource::Mapfix(MapfixID(value.MapfixID)), } } } @@ -88,13 +76,27 @@ impl From for ValidateRequest{ ModelID:value.ModelID, ModelVersion:value.ModelVersion, ValidatedModelID:value.ValidatedModelID, - Resource:Resource::Submission(value.SubmissionID), + Resource:Resource::Submission(SubmissionID(value.SubmissionID)), } } } impl crate::message_handler::MessageHandler{ pub async fn validate_inner(&self,validate_info:ValidateRequest)->Result<(),Error>{ + + enum OwnedPolicy{ + None, + Allowed, + Blocked, + Delete, + Replace(String), + } + + struct NamePolicy{ + name:String, + policy:OwnedPolicy, + } + // discover asset creator and latest version let info=self.cloud_context.get_asset_info( rbx_asset::cloud::GetAssetLatestRequest{asset_id:validate_info.ModelID} @@ -144,7 +146,7 @@ impl crate::message_handler::MessageHandler{ // policy will be fetched from the database to replace the default policy script_map.insert(source.clone(),NamePolicy{ name:get_partial_path(&dom,script), - policy:Policy::None, + policy:OwnedPolicy::None, }); } } @@ -157,40 +159,42 @@ impl crate::message_handler::MessageHandler{ let hash=hash_source(source.as_str()); // fetch the script policy - let script_policy=self.api.get_script_policy_from_hash(submissions_api::types::HashRequest{ - hash:hash.as_str(), - }).await.map_err(Error::ApiGetScriptPolicyFromHash)?; + let script_policy=self.script_policy.get_from_hash( + hash, + ).await.map_err(Error::ApiGetScriptPolicyFromHash)?; // write the policy to the script_map, fetching the replacement code if necessary if let Some(script_policy)=script_policy{ - *policy=match script_policy.Policy{ - submissions_api::types::Policy::None=>Policy::None, - submissions_api::types::Policy::Allowed=>Policy::Allowed, - submissions_api::types::Policy::Blocked=>Policy::Blocked, - submissions_api::types::Policy::Delete=>Policy::Delete, - submissions_api::types::Policy::Replace=>{ - let script=self.api.get_script(submissions_api::types::GetScriptRequest{ - ScriptID:script_policy.ToScriptID, + *policy=match script_policy.policy.try_into(){ + Ok(StupidPolicy(Policy::None))=>OwnedPolicy::None, + Ok(StupidPolicy(Policy::Allowed))=>OwnedPolicy::Allowed, + Ok(StupidPolicy(Policy::Blocked))=>OwnedPolicy::Blocked, + Ok(StupidPolicy(Policy::Delete))=>OwnedPolicy::Delete, + Ok(StupidPolicy(Policy::Replace))=>{ + let script=self.scripts.get(rust_grpc::validator::ScriptId{ + id:script_policy.to_script_id, }).await.map_err(Error::ApiGetScript)?; - Policy::Replace(script.Source) + OwnedPolicy::Replace(script.source) }, + // WHY DOES PROTOBUF NOT HAVE EMBEDDED ENUMS + Err(e)=>return Err(Error::StupidPolicy(e)), }; }else{ - let (resource_type,resource_id)=validate_info.Resource.split(); + let (resource_type,ResourceID(resource_id))=validate_info.Resource.split(); // upload the script - let script=self.api.create_script(submissions_api::types::CreateScriptRequest{ - Name:name.as_str(), - Source:source.as_str(), - ResourceType:resource_type, - ResourceID:Some(resource_id), + let script=self.scripts.create(rust_grpc::validator::ScriptCreate{ + name:name.clone(), + source:source.clone(), + resource_type:resource_type as i32, + resource_id:Some(resource_id), }).await.map_err(Error::ApiCreateScript)?; // create a None policy (pending review by yours truly) - self.api.create_script_policy(submissions_api::types::CreateScriptPolicyRequest{ - ToScriptID:script.ScriptID, - FromScriptID:script.ScriptID, - Policy:submissions_api::types::Policy::None, + self.script_policy.create(rust_grpc::validator::ScriptPolicyCreate{ + to_script_id:script.id, + from_script_id:script.id, + policy:rust_grpc::validator::Policy::None as i32, }).await.map_err(Error::ApiCreateScriptPolicy)?; } @@ -204,29 +208,29 @@ impl crate::message_handler::MessageHandler{ if let Some(script)=dom.get_by_ref_mut(script_ref){ if let Some(rbx_dom_weak::types::Variant::String(source))=script.properties.get_mut(&source_property){ match script_map.get(source.as_str()).map(|p|&p.policy){ - Some(Policy::Blocked)=>{ + Some(OwnedPolicy::Blocked)=>{ let hash=hash_source(source.as_str()); - let script=self.api.get_script_from_hash(submissions_api::types::HashRequest{ - hash:hash.as_str(), - }).await.map_err(Error::ApiGetScriptFromHash)?; - return Err(Error::ScriptBlocked(script.map(|s|s.ID))); + let script=self.scripts.get_from_hash( + hash, + ).await.map_err(Error::ApiGetScriptFromHash)?; + return Err(Error::ScriptBlocked(script.map(|s|ScriptID(s.id)))); }, None - |Some(Policy::None) + |Some(OwnedPolicy::None) =>{ let hash=hash_source(source.as_str()); - let script=self.api.get_script_from_hash(submissions_api::types::HashRequest{ - hash:hash.as_str(), - }).await.map_err(Error::ApiGetScriptFromHash)?; - return Err(Error::ScriptNotYetReviewed(script.map(|s|s.ID))); + let script=self.scripts.get_from_hash( + hash, + ).await.map_err(Error::ApiGetScriptFromHash)?; + return Err(Error::ScriptNotYetReviewed(script.map(|s|ScriptID(s.id)))); }, - Some(Policy::Allowed)=>(), - Some(Policy::Delete)=>{ + Some(OwnedPolicy::Allowed)=>(), + Some(OwnedPolicy::Delete)=>{ modified=true; // delete script dom.destroy(script_ref); }, - Some(Policy::Replace(replacement))=>{ + Some(OwnedPolicy::Replace(replacement))=>{ modified=true; *source=replacement.clone(); }, @@ -278,20 +282,20 @@ impl crate::message_handler::MessageHandler{ }; match validate_info.Resource{ - Resource::Mapfix(mapfix_id)=>{ + Resource::Mapfix(MapfixID(mapfix_id))=>{ // update the mapfix to use the validated model - self.api.update_mapfix_validated_model(submissions_api::types::UpdateMapfixModelRequest{ - MapfixID:mapfix_id, - ModelID:validated_model_id, - ModelVersion:validated_model_version, + self.mapfixes.set_validated_model(rust_grpc::validator::ValidatedModelRequest{ + id:mapfix_id, + validated_model_id, + validated_model_version, }).await.map_err(Error::ApiUpdateMapfixModel)?; }, - Resource::Submission(submission_id)=>{ + Resource::Submission(SubmissionID(submission_id))=>{ // update the submission to use the validated model - self.api.update_submission_validated_model(submissions_api::types::UpdateSubmissionModelRequest{ - SubmissionID:submission_id, - ModelID:validated_model_id, - ModelVersion:validated_model_version, + self.submissions.set_validated_model(rust_grpc::validator::ValidatedModelRequest{ + id:submission_id, + validated_model_id, + validated_model_version, }).await.map_err(Error::ApiUpdateSubmissionModel)?; }, }