diff --git a/openapi.yaml b/openapi.yaml index fa1736e..f3008a5 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -421,10 +421,10 @@ paths: application/json: schema: $ref: "#/components/schemas/Error" - /mapfixes/{MapfixID}/status/bypass-submit: + /mapfixes/{MapfixID}/status/trigger-submit-unchecked: post: - summary: Role Reviewer changes status from ChangesRequested -> Submitted - operationId: actionMapfixBypassSubmit + summary: Role Reviewer changes status from ChangesRequested -> Submitting + operationId: actionMapfixTriggerSubmitUnchecked tags: - Mapfixes parameters: @@ -901,10 +901,10 @@ paths: application/json: schema: $ref: "#/components/schemas/Error" - /submissions/{SubmissionID}/status/bypass-submit: + /submissions/{SubmissionID}/status/trigger-submit-unchecked: post: - summary: Role Reviewer changes status from ChangesRequested -> Submitted - operationId: actionSubmissionBypassSubmit + summary: Role Reviewer changes status from ChangesRequested -> Submitting + operationId: actionSubmissionTriggerSubmitUnchecked tags: - Submissions parameters: diff --git a/pkg/api/oas_client_gen.go b/pkg/api/oas_client_gen.go index b5fa438..98464be 100644 --- a/pkg/api/oas_client_gen.go +++ b/pkg/api/oas_client_gen.go @@ -35,12 +35,6 @@ type Invoker interface { // // POST /mapfixes/{MapfixID}/status/reset-validating ActionMapfixAccepted(ctx context.Context, params ActionMapfixAcceptedParams) error - // ActionMapfixBypassSubmit invokes actionMapfixBypassSubmit operation. - // - // Role Reviewer changes status from ChangesRequested -> Submitted. - // - // POST /mapfixes/{MapfixID}/status/bypass-submit - ActionMapfixBypassSubmit(ctx context.Context, params ActionMapfixBypassSubmitParams) error // ActionMapfixReject invokes actionMapfixReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -78,6 +72,12 @@ type Invoker interface { // // POST /mapfixes/{MapfixID}/status/trigger-submit ActionMapfixTriggerSubmit(ctx context.Context, params ActionMapfixTriggerSubmitParams) error + // ActionMapfixTriggerSubmitUnchecked invokes actionMapfixTriggerSubmitUnchecked operation. + // + // Role Reviewer changes status from ChangesRequested -> Submitting. + // + // POST /mapfixes/{MapfixID}/status/trigger-submit-unchecked + ActionMapfixTriggerSubmitUnchecked(ctx context.Context, params ActionMapfixTriggerSubmitUncheckedParams) error // ActionMapfixTriggerUpload invokes actionMapfixTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. @@ -102,12 +102,6 @@ type Invoker interface { // // POST /submissions/{SubmissionID}/status/reset-validating ActionSubmissionAccepted(ctx context.Context, params ActionSubmissionAcceptedParams) error - // ActionSubmissionBypassSubmit invokes actionSubmissionBypassSubmit operation. - // - // Role Reviewer changes status from ChangesRequested -> Submitted. - // - // POST /submissions/{SubmissionID}/status/bypass-submit - ActionSubmissionBypassSubmit(ctx context.Context, params ActionSubmissionBypassSubmitParams) error // ActionSubmissionReject invokes actionSubmissionReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -145,6 +139,12 @@ type Invoker interface { // // POST /submissions/{SubmissionID}/status/trigger-submit ActionSubmissionTriggerSubmit(ctx context.Context, params ActionSubmissionTriggerSubmitParams) error + // ActionSubmissionTriggerSubmitUnchecked invokes actionSubmissionTriggerSubmitUnchecked operation. + // + // Role Reviewer changes status from ChangesRequested -> Submitting. + // + // POST /submissions/{SubmissionID}/status/trigger-submit-unchecked + ActionSubmissionTriggerSubmitUnchecked(ctx context.Context, params ActionSubmissionTriggerSubmitUncheckedParams) error // ActionSubmissionTriggerUpload invokes actionSubmissionTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. @@ -530,130 +530,6 @@ func (c *Client) sendActionMapfixAccepted(ctx context.Context, params ActionMapf return result, nil } -// ActionMapfixBypassSubmit invokes actionMapfixBypassSubmit operation. -// -// Role Reviewer changes status from ChangesRequested -> Submitted. -// -// POST /mapfixes/{MapfixID}/status/bypass-submit -func (c *Client) ActionMapfixBypassSubmit(ctx context.Context, params ActionMapfixBypassSubmitParams) error { - _, err := c.sendActionMapfixBypassSubmit(ctx, params) - return err -} - -func (c *Client) sendActionMapfixBypassSubmit(ctx context.Context, params ActionMapfixBypassSubmitParams) (res *ActionMapfixBypassSubmitNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixBypassSubmit"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/bypass-submit"), - } - - // 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, ActionMapfixBypassSubmitOperation, - 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/bypass-submit" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - { - type bitset = [1]uint8 - var satisfied bitset - { - stage = "Security:CookieAuth" - switch err := c.securityCookieAuth(ctx, ActionMapfixBypassSubmitOperation, r); { - case err == nil: // if NO error - satisfied[0] |= 1 << 0 - case errors.Is(err, ogenerrors.ErrSkipClientSecurity): - // Skip this security. - default: - return res, errors.Wrap(err, "security \"CookieAuth\"") - } - } - - if ok := func() bool { - nextRequirement: - for _, requirement := range []bitset{ - {0b00000001}, - } { - for i, mask := range requirement { - if satisfied[i]&mask != mask { - continue nextRequirement - } - } - return true - } - return false - }(); !ok { - return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied - } - } - - 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 := decodeActionMapfixBypassSubmitResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - // ActionMapfixReject invokes actionMapfixReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -1399,6 +1275,130 @@ func (c *Client) sendActionMapfixTriggerSubmit(ctx context.Context, params Actio return result, nil } +// ActionMapfixTriggerSubmitUnchecked invokes actionMapfixTriggerSubmitUnchecked operation. +// +// Role Reviewer changes status from ChangesRequested -> Submitting. +// +// POST /mapfixes/{MapfixID}/status/trigger-submit-unchecked +func (c *Client) ActionMapfixTriggerSubmitUnchecked(ctx context.Context, params ActionMapfixTriggerSubmitUncheckedParams) error { + _, err := c.sendActionMapfixTriggerSubmitUnchecked(ctx, params) + return err +} + +func (c *Client) sendActionMapfixTriggerSubmitUnchecked(ctx context.Context, params ActionMapfixTriggerSubmitUncheckedParams) (res *ActionMapfixTriggerSubmitUncheckedNoContent, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("actionMapfixTriggerSubmitUnchecked"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/trigger-submit-unchecked"), + } + + // 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, ActionMapfixTriggerSubmitUncheckedOperation, + 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/trigger-submit-unchecked" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:CookieAuth" + switch err := c.securityCookieAuth(ctx, ActionMapfixTriggerSubmitUncheckedOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"CookieAuth\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + 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 := decodeActionMapfixTriggerSubmitUncheckedResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + // ActionMapfixTriggerUpload invokes actionMapfixTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. @@ -1895,130 +1895,6 @@ func (c *Client) sendActionSubmissionAccepted(ctx context.Context, params Action return result, nil } -// ActionSubmissionBypassSubmit invokes actionSubmissionBypassSubmit operation. -// -// Role Reviewer changes status from ChangesRequested -> Submitted. -// -// POST /submissions/{SubmissionID}/status/bypass-submit -func (c *Client) ActionSubmissionBypassSubmit(ctx context.Context, params ActionSubmissionBypassSubmitParams) error { - _, err := c.sendActionSubmissionBypassSubmit(ctx, params) - return err -} - -func (c *Client) sendActionSubmissionBypassSubmit(ctx context.Context, params ActionSubmissionBypassSubmitParams) (res *ActionSubmissionBypassSubmitNoContent, err error) { - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionBypassSubmit"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/bypass-submit"), - } - - // 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, ActionSubmissionBypassSubmitOperation, - 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/bypass-submit" - uri.AddPathParts(u, pathParts[:]...) - - stage = "EncodeRequest" - r, err := ht.NewRequest(ctx, "POST", u) - if err != nil { - return res, errors.Wrap(err, "create request") - } - - { - type bitset = [1]uint8 - var satisfied bitset - { - stage = "Security:CookieAuth" - switch err := c.securityCookieAuth(ctx, ActionSubmissionBypassSubmitOperation, r); { - case err == nil: // if NO error - satisfied[0] |= 1 << 0 - case errors.Is(err, ogenerrors.ErrSkipClientSecurity): - // Skip this security. - default: - return res, errors.Wrap(err, "security \"CookieAuth\"") - } - } - - if ok := func() bool { - nextRequirement: - for _, requirement := range []bitset{ - {0b00000001}, - } { - for i, mask := range requirement { - if satisfied[i]&mask != mask { - continue nextRequirement - } - } - return true - } - return false - }(); !ok { - return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied - } - } - - 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 := decodeActionSubmissionBypassSubmitResponse(resp) - if err != nil { - return res, errors.Wrap(err, "decode response") - } - - return result, nil -} - // ActionSubmissionReject invokes actionSubmissionReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -2764,6 +2640,130 @@ func (c *Client) sendActionSubmissionTriggerSubmit(ctx context.Context, params A return result, nil } +// ActionSubmissionTriggerSubmitUnchecked invokes actionSubmissionTriggerSubmitUnchecked operation. +// +// Role Reviewer changes status from ChangesRequested -> Submitting. +// +// POST /submissions/{SubmissionID}/status/trigger-submit-unchecked +func (c *Client) ActionSubmissionTriggerSubmitUnchecked(ctx context.Context, params ActionSubmissionTriggerSubmitUncheckedParams) error { + _, err := c.sendActionSubmissionTriggerSubmitUnchecked(ctx, params) + return err +} + +func (c *Client) sendActionSubmissionTriggerSubmitUnchecked(ctx context.Context, params ActionSubmissionTriggerSubmitUncheckedParams) (res *ActionSubmissionTriggerSubmitUncheckedNoContent, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("actionSubmissionTriggerSubmitUnchecked"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/trigger-submit-unchecked"), + } + + // 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, ActionSubmissionTriggerSubmitUncheckedOperation, + 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/trigger-submit-unchecked" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "POST", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + { + type bitset = [1]uint8 + var satisfied bitset + { + stage = "Security:CookieAuth" + switch err := c.securityCookieAuth(ctx, ActionSubmissionTriggerSubmitUncheckedOperation, r); { + case err == nil: // if NO error + satisfied[0] |= 1 << 0 + case errors.Is(err, ogenerrors.ErrSkipClientSecurity): + // Skip this security. + default: + return res, errors.Wrap(err, "security \"CookieAuth\"") + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + return res, ogenerrors.ErrSecurityRequirementIsNotSatisfied + } + } + + 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 := decodeActionSubmissionTriggerSubmitUncheckedResponse(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + // ActionSubmissionTriggerUpload invokes actionSubmissionTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. diff --git a/pkg/api/oas_handlers_gen.go b/pkg/api/oas_handlers_gen.go index a2677d0..aad4887 100644 --- a/pkg/api/oas_handlers_gen.go +++ b/pkg/api/oas_handlers_gen.go @@ -225,201 +225,6 @@ func (s *Server) handleActionMapfixAcceptedRequest(args [1]string, argsEscaped b } } -// handleActionMapfixBypassSubmitRequest handles actionMapfixBypassSubmit operation. -// -// Role Reviewer changes status from ChangesRequested -> Submitted. -// -// POST /mapfixes/{MapfixID}/status/bypass-submit -func (s *Server) handleActionMapfixBypassSubmitRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionMapfixBypassSubmit"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/bypass-submit"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionMapfixBypassSubmitOperation, - 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: ActionMapfixBypassSubmitOperation, - ID: "actionMapfixBypassSubmit", - } - ) - { - type bitset = [1]uint8 - var satisfied bitset - { - sctx, ok, err := s.securityCookieAuth(ctx, ActionMapfixBypassSubmitOperation, r) - if err != nil { - err = &ogenerrors.SecurityError{ - OperationContext: opErrContext, - Security: "CookieAuth", - Err: err, - } - if encodeErr := encodeErrorResponse(s.h.NewError(ctx, err), w, span); encodeErr != nil { - defer recordError("Security:CookieAuth", err) - } - return - } - if ok { - satisfied[0] |= 1 << 0 - ctx = sctx - } - } - - if ok := func() bool { - nextRequirement: - for _, requirement := range []bitset{ - {0b00000001}, - } { - for i, mask := range requirement { - if satisfied[i]&mask != mask { - continue nextRequirement - } - } - return true - } - return false - }(); !ok { - err = &ogenerrors.SecurityError{ - OperationContext: opErrContext, - Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, - } - if encodeErr := encodeErrorResponse(s.h.NewError(ctx, err), w, span); encodeErr != nil { - defer recordError("Security", err) - } - return - } - } - params, err := decodeActionMapfixBypassSubmitParams(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 *ActionMapfixBypassSubmitNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionMapfixBypassSubmitOperation, - OperationSummary: "Role Reviewer changes status from ChangesRequested -> Submitted", - OperationID: "actionMapfixBypassSubmit", - Body: nil, - Params: middleware.Parameters{ - { - Name: "MapfixID", - In: "path", - }: params.MapfixID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionMapfixBypassSubmitParams - Response = *ActionMapfixBypassSubmitNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionMapfixBypassSubmitParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionMapfixBypassSubmit(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionMapfixBypassSubmit(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 := encodeActionMapfixBypassSubmitResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - // handleActionMapfixRejectRequest handles actionMapfixReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -1591,6 +1396,201 @@ func (s *Server) handleActionMapfixTriggerSubmitRequest(args [1]string, argsEsca } } +// handleActionMapfixTriggerSubmitUncheckedRequest handles actionMapfixTriggerSubmitUnchecked operation. +// +// Role Reviewer changes status from ChangesRequested -> Submitting. +// +// POST /mapfixes/{MapfixID}/status/trigger-submit-unchecked +func (s *Server) handleActionMapfixTriggerSubmitUncheckedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("actionMapfixTriggerSubmitUnchecked"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/mapfixes/{MapfixID}/status/trigger-submit-unchecked"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ActionMapfixTriggerSubmitUncheckedOperation, + 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: ActionMapfixTriggerSubmitUncheckedOperation, + ID: "actionMapfixTriggerSubmitUnchecked", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityCookieAuth(ctx, ActionMapfixTriggerSubmitUncheckedOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "CookieAuth", + Err: err, + } + if encodeErr := encodeErrorResponse(s.h.NewError(ctx, err), w, span); encodeErr != nil { + defer recordError("Security:CookieAuth", err) + } + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + if encodeErr := encodeErrorResponse(s.h.NewError(ctx, err), w, span); encodeErr != nil { + defer recordError("Security", err) + } + return + } + } + params, err := decodeActionMapfixTriggerSubmitUncheckedParams(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 *ActionMapfixTriggerSubmitUncheckedNoContent + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ActionMapfixTriggerSubmitUncheckedOperation, + OperationSummary: "Role Reviewer changes status from ChangesRequested -> Submitting", + OperationID: "actionMapfixTriggerSubmitUnchecked", + Body: nil, + Params: middleware.Parameters{ + { + Name: "MapfixID", + In: "path", + }: params.MapfixID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ActionMapfixTriggerSubmitUncheckedParams + Response = *ActionMapfixTriggerSubmitUncheckedNoContent + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackActionMapfixTriggerSubmitUncheckedParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + err = s.h.ActionMapfixTriggerSubmitUnchecked(ctx, params) + return response, err + }, + ) + } else { + err = s.h.ActionMapfixTriggerSubmitUnchecked(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 := encodeActionMapfixTriggerSubmitUncheckedResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + // handleActionMapfixTriggerUploadRequest handles actionMapfixTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. @@ -2371,201 +2371,6 @@ func (s *Server) handleActionSubmissionAcceptedRequest(args [1]string, argsEscap } } -// handleActionSubmissionBypassSubmitRequest handles actionSubmissionBypassSubmit operation. -// -// Role Reviewer changes status from ChangesRequested -> Submitted. -// -// POST /submissions/{SubmissionID}/status/bypass-submit -func (s *Server) handleActionSubmissionBypassSubmitRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { - statusWriter := &codeRecorder{ResponseWriter: w} - w = statusWriter - otelAttrs := []attribute.KeyValue{ - otelogen.OperationID("actionSubmissionBypassSubmit"), - semconv.HTTPRequestMethodKey.String("POST"), - semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/bypass-submit"), - } - - // Start a span for this request. - ctx, span := s.cfg.Tracer.Start(r.Context(), ActionSubmissionBypassSubmitOperation, - 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: ActionSubmissionBypassSubmitOperation, - ID: "actionSubmissionBypassSubmit", - } - ) - { - type bitset = [1]uint8 - var satisfied bitset - { - sctx, ok, err := s.securityCookieAuth(ctx, ActionSubmissionBypassSubmitOperation, r) - if err != nil { - err = &ogenerrors.SecurityError{ - OperationContext: opErrContext, - Security: "CookieAuth", - Err: err, - } - if encodeErr := encodeErrorResponse(s.h.NewError(ctx, err), w, span); encodeErr != nil { - defer recordError("Security:CookieAuth", err) - } - return - } - if ok { - satisfied[0] |= 1 << 0 - ctx = sctx - } - } - - if ok := func() bool { - nextRequirement: - for _, requirement := range []bitset{ - {0b00000001}, - } { - for i, mask := range requirement { - if satisfied[i]&mask != mask { - continue nextRequirement - } - } - return true - } - return false - }(); !ok { - err = &ogenerrors.SecurityError{ - OperationContext: opErrContext, - Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, - } - if encodeErr := encodeErrorResponse(s.h.NewError(ctx, err), w, span); encodeErr != nil { - defer recordError("Security", err) - } - return - } - } - params, err := decodeActionSubmissionBypassSubmitParams(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 *ActionSubmissionBypassSubmitNoContent - if m := s.cfg.Middleware; m != nil { - mreq := middleware.Request{ - Context: ctx, - OperationName: ActionSubmissionBypassSubmitOperation, - OperationSummary: "Role Reviewer changes status from ChangesRequested -> Submitted", - OperationID: "actionSubmissionBypassSubmit", - Body: nil, - Params: middleware.Parameters{ - { - Name: "SubmissionID", - In: "path", - }: params.SubmissionID, - }, - Raw: r, - } - - type ( - Request = struct{} - Params = ActionSubmissionBypassSubmitParams - Response = *ActionSubmissionBypassSubmitNoContent - ) - response, err = middleware.HookMiddleware[ - Request, - Params, - Response, - ]( - m, - mreq, - unpackActionSubmissionBypassSubmitParams, - func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.ActionSubmissionBypassSubmit(ctx, params) - return response, err - }, - ) - } else { - err = s.h.ActionSubmissionBypassSubmit(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 := encodeActionSubmissionBypassSubmitResponse(response, w, span); err != nil { - defer recordError("EncodeResponse", err) - if !errors.Is(err, ht.ErrInternalServerErrorResponse) { - s.cfg.ErrorHandler(ctx, w, r, err) - } - return - } -} - // handleActionSubmissionRejectRequest handles actionSubmissionReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -3737,6 +3542,201 @@ func (s *Server) handleActionSubmissionTriggerSubmitRequest(args [1]string, args } } +// handleActionSubmissionTriggerSubmitUncheckedRequest handles actionSubmissionTriggerSubmitUnchecked operation. +// +// Role Reviewer changes status from ChangesRequested -> Submitting. +// +// POST /submissions/{SubmissionID}/status/trigger-submit-unchecked +func (s *Server) handleActionSubmissionTriggerSubmitUncheckedRequest(args [1]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + statusWriter := &codeRecorder{ResponseWriter: w} + w = statusWriter + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("actionSubmissionTriggerSubmitUnchecked"), + semconv.HTTPRequestMethodKey.String("POST"), + semconv.HTTPRouteKey.String("/submissions/{SubmissionID}/status/trigger-submit-unchecked"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), ActionSubmissionTriggerSubmitUncheckedOperation, + 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: ActionSubmissionTriggerSubmitUncheckedOperation, + ID: "actionSubmissionTriggerSubmitUnchecked", + } + ) + { + type bitset = [1]uint8 + var satisfied bitset + { + sctx, ok, err := s.securityCookieAuth(ctx, ActionSubmissionTriggerSubmitUncheckedOperation, r) + if err != nil { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Security: "CookieAuth", + Err: err, + } + if encodeErr := encodeErrorResponse(s.h.NewError(ctx, err), w, span); encodeErr != nil { + defer recordError("Security:CookieAuth", err) + } + return + } + if ok { + satisfied[0] |= 1 << 0 + ctx = sctx + } + } + + if ok := func() bool { + nextRequirement: + for _, requirement := range []bitset{ + {0b00000001}, + } { + for i, mask := range requirement { + if satisfied[i]&mask != mask { + continue nextRequirement + } + } + return true + } + return false + }(); !ok { + err = &ogenerrors.SecurityError{ + OperationContext: opErrContext, + Err: ogenerrors.ErrSecurityRequirementIsNotSatisfied, + } + if encodeErr := encodeErrorResponse(s.h.NewError(ctx, err), w, span); encodeErr != nil { + defer recordError("Security", err) + } + return + } + } + params, err := decodeActionSubmissionTriggerSubmitUncheckedParams(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 *ActionSubmissionTriggerSubmitUncheckedNoContent + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: ActionSubmissionTriggerSubmitUncheckedOperation, + OperationSummary: "Role Reviewer changes status from ChangesRequested -> Submitting", + OperationID: "actionSubmissionTriggerSubmitUnchecked", + Body: nil, + Params: middleware.Parameters{ + { + Name: "SubmissionID", + In: "path", + }: params.SubmissionID, + }, + Raw: r, + } + + type ( + Request = struct{} + Params = ActionSubmissionTriggerSubmitUncheckedParams + Response = *ActionSubmissionTriggerSubmitUncheckedNoContent + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + unpackActionSubmissionTriggerSubmitUncheckedParams, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + err = s.h.ActionSubmissionTriggerSubmitUnchecked(ctx, params) + return response, err + }, + ) + } else { + err = s.h.ActionSubmissionTriggerSubmitUnchecked(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 := encodeActionSubmissionTriggerSubmitUncheckedResponse(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + // handleActionSubmissionTriggerUploadRequest handles actionSubmissionTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. diff --git a/pkg/api/oas_operations_gen.go b/pkg/api/oas_operations_gen.go index 0ed67d8..80ed8f5 100644 --- a/pkg/api/oas_operations_gen.go +++ b/pkg/api/oas_operations_gen.go @@ -6,58 +6,58 @@ package api type OperationName = string const ( - ActionMapfixAcceptedOperation OperationName = "ActionMapfixAccepted" - ActionMapfixBypassSubmitOperation OperationName = "ActionMapfixBypassSubmit" - ActionMapfixRejectOperation OperationName = "ActionMapfixReject" - ActionMapfixRequestChangesOperation OperationName = "ActionMapfixRequestChanges" - ActionMapfixResetSubmittingOperation OperationName = "ActionMapfixResetSubmitting" - ActionMapfixRetryValidateOperation OperationName = "ActionMapfixRetryValidate" - ActionMapfixRevokeOperation OperationName = "ActionMapfixRevoke" - ActionMapfixTriggerSubmitOperation OperationName = "ActionMapfixTriggerSubmit" - ActionMapfixTriggerUploadOperation OperationName = "ActionMapfixTriggerUpload" - ActionMapfixTriggerValidateOperation OperationName = "ActionMapfixTriggerValidate" - ActionMapfixValidatedOperation OperationName = "ActionMapfixValidated" - ActionSubmissionAcceptedOperation OperationName = "ActionSubmissionAccepted" - ActionSubmissionBypassSubmitOperation OperationName = "ActionSubmissionBypassSubmit" - ActionSubmissionRejectOperation OperationName = "ActionSubmissionReject" - ActionSubmissionRequestChangesOperation OperationName = "ActionSubmissionRequestChanges" - ActionSubmissionResetSubmittingOperation OperationName = "ActionSubmissionResetSubmitting" - ActionSubmissionRetryValidateOperation OperationName = "ActionSubmissionRetryValidate" - ActionSubmissionRevokeOperation OperationName = "ActionSubmissionRevoke" - ActionSubmissionTriggerSubmitOperation OperationName = "ActionSubmissionTriggerSubmit" - ActionSubmissionTriggerUploadOperation OperationName = "ActionSubmissionTriggerUpload" - ActionSubmissionTriggerValidateOperation OperationName = "ActionSubmissionTriggerValidate" - ActionSubmissionValidatedOperation OperationName = "ActionSubmissionValidated" - CreateMapfixOperation OperationName = "CreateMapfix" - CreateMapfixAuditCommentOperation OperationName = "CreateMapfixAuditComment" - CreateScriptOperation OperationName = "CreateScript" - CreateScriptPolicyOperation OperationName = "CreateScriptPolicy" - CreateSubmissionOperation OperationName = "CreateSubmission" - CreateSubmissionAdminOperation OperationName = "CreateSubmissionAdmin" - CreateSubmissionAuditCommentOperation OperationName = "CreateSubmissionAuditComment" - DeleteScriptOperation OperationName = "DeleteScript" - DeleteScriptPolicyOperation OperationName = "DeleteScriptPolicy" - GetMapOperation OperationName = "GetMap" - GetMapfixOperation OperationName = "GetMapfix" - GetOperationOperation OperationName = "GetOperation" - GetScriptOperation OperationName = "GetScript" - GetScriptPolicyOperation OperationName = "GetScriptPolicy" - GetSubmissionOperation OperationName = "GetSubmission" - ListMapfixAuditEventsOperation OperationName = "ListMapfixAuditEvents" - ListMapfixesOperation OperationName = "ListMapfixes" - ListMapsOperation OperationName = "ListMaps" - ListScriptPolicyOperation OperationName = "ListScriptPolicy" - ListScriptsOperation OperationName = "ListScripts" - ListSubmissionAuditEventsOperation OperationName = "ListSubmissionAuditEvents" - ListSubmissionsOperation OperationName = "ListSubmissions" - ReleaseSubmissionsOperation OperationName = "ReleaseSubmissions" - SessionRolesOperation OperationName = "SessionRoles" - SessionUserOperation OperationName = "SessionUser" - SessionValidateOperation OperationName = "SessionValidate" - SetMapfixCompletedOperation OperationName = "SetMapfixCompleted" - SetSubmissionCompletedOperation OperationName = "SetSubmissionCompleted" - UpdateMapfixModelOperation OperationName = "UpdateMapfixModel" - UpdateScriptOperation OperationName = "UpdateScript" - UpdateScriptPolicyOperation OperationName = "UpdateScriptPolicy" - UpdateSubmissionModelOperation OperationName = "UpdateSubmissionModel" + ActionMapfixAcceptedOperation OperationName = "ActionMapfixAccepted" + ActionMapfixRejectOperation OperationName = "ActionMapfixReject" + ActionMapfixRequestChangesOperation OperationName = "ActionMapfixRequestChanges" + ActionMapfixResetSubmittingOperation OperationName = "ActionMapfixResetSubmitting" + ActionMapfixRetryValidateOperation OperationName = "ActionMapfixRetryValidate" + ActionMapfixRevokeOperation OperationName = "ActionMapfixRevoke" + ActionMapfixTriggerSubmitOperation OperationName = "ActionMapfixTriggerSubmit" + ActionMapfixTriggerSubmitUncheckedOperation OperationName = "ActionMapfixTriggerSubmitUnchecked" + ActionMapfixTriggerUploadOperation OperationName = "ActionMapfixTriggerUpload" + ActionMapfixTriggerValidateOperation OperationName = "ActionMapfixTriggerValidate" + ActionMapfixValidatedOperation OperationName = "ActionMapfixValidated" + ActionSubmissionAcceptedOperation OperationName = "ActionSubmissionAccepted" + ActionSubmissionRejectOperation OperationName = "ActionSubmissionReject" + ActionSubmissionRequestChangesOperation OperationName = "ActionSubmissionRequestChanges" + ActionSubmissionResetSubmittingOperation OperationName = "ActionSubmissionResetSubmitting" + ActionSubmissionRetryValidateOperation OperationName = "ActionSubmissionRetryValidate" + ActionSubmissionRevokeOperation OperationName = "ActionSubmissionRevoke" + ActionSubmissionTriggerSubmitOperation OperationName = "ActionSubmissionTriggerSubmit" + ActionSubmissionTriggerSubmitUncheckedOperation OperationName = "ActionSubmissionTriggerSubmitUnchecked" + ActionSubmissionTriggerUploadOperation OperationName = "ActionSubmissionTriggerUpload" + ActionSubmissionTriggerValidateOperation OperationName = "ActionSubmissionTriggerValidate" + ActionSubmissionValidatedOperation OperationName = "ActionSubmissionValidated" + CreateMapfixOperation OperationName = "CreateMapfix" + CreateMapfixAuditCommentOperation OperationName = "CreateMapfixAuditComment" + CreateScriptOperation OperationName = "CreateScript" + CreateScriptPolicyOperation OperationName = "CreateScriptPolicy" + CreateSubmissionOperation OperationName = "CreateSubmission" + CreateSubmissionAdminOperation OperationName = "CreateSubmissionAdmin" + CreateSubmissionAuditCommentOperation OperationName = "CreateSubmissionAuditComment" + DeleteScriptOperation OperationName = "DeleteScript" + DeleteScriptPolicyOperation OperationName = "DeleteScriptPolicy" + GetMapOperation OperationName = "GetMap" + GetMapfixOperation OperationName = "GetMapfix" + GetOperationOperation OperationName = "GetOperation" + GetScriptOperation OperationName = "GetScript" + GetScriptPolicyOperation OperationName = "GetScriptPolicy" + GetSubmissionOperation OperationName = "GetSubmission" + ListMapfixAuditEventsOperation OperationName = "ListMapfixAuditEvents" + ListMapfixesOperation OperationName = "ListMapfixes" + ListMapsOperation OperationName = "ListMaps" + ListScriptPolicyOperation OperationName = "ListScriptPolicy" + ListScriptsOperation OperationName = "ListScripts" + ListSubmissionAuditEventsOperation OperationName = "ListSubmissionAuditEvents" + ListSubmissionsOperation OperationName = "ListSubmissions" + ReleaseSubmissionsOperation OperationName = "ReleaseSubmissions" + SessionRolesOperation OperationName = "SessionRoles" + SessionUserOperation OperationName = "SessionUser" + SessionValidateOperation OperationName = "SessionValidate" + SetMapfixCompletedOperation OperationName = "SetMapfixCompleted" + SetSubmissionCompletedOperation OperationName = "SetSubmissionCompleted" + UpdateMapfixModelOperation OperationName = "UpdateMapfixModel" + UpdateScriptOperation OperationName = "UpdateScript" + UpdateScriptPolicyOperation OperationName = "UpdateScriptPolicy" + UpdateSubmissionModelOperation OperationName = "UpdateSubmissionModel" ) diff --git a/pkg/api/oas_parameters_gen.go b/pkg/api/oas_parameters_gen.go index 262f791..df865e0 100644 --- a/pkg/api/oas_parameters_gen.go +++ b/pkg/api/oas_parameters_gen.go @@ -98,89 +98,6 @@ func decodeActionMapfixAcceptedParams(args [1]string, argsEscaped bool, r *http. return params, nil } -// ActionMapfixBypassSubmitParams is parameters of actionMapfixBypassSubmit operation. -type ActionMapfixBypassSubmitParams struct { - // The unique identifier for a mapfix. - MapfixID int64 -} - -func unpackActionMapfixBypassSubmitParams(packed middleware.Parameters) (params ActionMapfixBypassSubmitParams) { - { - key := middleware.ParameterKey{ - Name: "MapfixID", - In: "path", - } - params.MapfixID = packed[key].(int64) - } - return params -} - -func decodeActionMapfixBypassSubmitParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionMapfixBypassSubmitParams, _ 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 -} - // ActionMapfixRejectParams is parameters of actionMapfixReject operation. type ActionMapfixRejectParams struct { // The unique identifier for a mapfix. @@ -679,6 +596,89 @@ func decodeActionMapfixTriggerSubmitParams(args [1]string, argsEscaped bool, r * return params, nil } +// ActionMapfixTriggerSubmitUncheckedParams is parameters of actionMapfixTriggerSubmitUnchecked operation. +type ActionMapfixTriggerSubmitUncheckedParams struct { + // The unique identifier for a mapfix. + MapfixID int64 +} + +func unpackActionMapfixTriggerSubmitUncheckedParams(packed middleware.Parameters) (params ActionMapfixTriggerSubmitUncheckedParams) { + { + key := middleware.ParameterKey{ + Name: "MapfixID", + In: "path", + } + params.MapfixID = packed[key].(int64) + } + return params +} + +func decodeActionMapfixTriggerSubmitUncheckedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionMapfixTriggerSubmitUncheckedParams, _ 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 +} + // ActionMapfixTriggerUploadParams is parameters of actionMapfixTriggerUpload operation. type ActionMapfixTriggerUploadParams struct { // The unique identifier for a mapfix. @@ -1011,89 +1011,6 @@ func decodeActionSubmissionAcceptedParams(args [1]string, argsEscaped bool, r *h return params, nil } -// ActionSubmissionBypassSubmitParams is parameters of actionSubmissionBypassSubmit operation. -type ActionSubmissionBypassSubmitParams struct { - // The unique identifier for a submission. - SubmissionID int64 -} - -func unpackActionSubmissionBypassSubmitParams(packed middleware.Parameters) (params ActionSubmissionBypassSubmitParams) { - { - key := middleware.ParameterKey{ - Name: "SubmissionID", - In: "path", - } - params.SubmissionID = packed[key].(int64) - } - return params -} - -func decodeActionSubmissionBypassSubmitParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionSubmissionBypassSubmitParams, _ 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 -} - // ActionSubmissionRejectParams is parameters of actionSubmissionReject operation. type ActionSubmissionRejectParams struct { // The unique identifier for a submission. @@ -1592,6 +1509,89 @@ func decodeActionSubmissionTriggerSubmitParams(args [1]string, argsEscaped bool, return params, nil } +// ActionSubmissionTriggerSubmitUncheckedParams is parameters of actionSubmissionTriggerSubmitUnchecked operation. +type ActionSubmissionTriggerSubmitUncheckedParams struct { + // The unique identifier for a submission. + SubmissionID int64 +} + +func unpackActionSubmissionTriggerSubmitUncheckedParams(packed middleware.Parameters) (params ActionSubmissionTriggerSubmitUncheckedParams) { + { + key := middleware.ParameterKey{ + Name: "SubmissionID", + In: "path", + } + params.SubmissionID = packed[key].(int64) + } + return params +} + +func decodeActionSubmissionTriggerSubmitUncheckedParams(args [1]string, argsEscaped bool, r *http.Request) (params ActionSubmissionTriggerSubmitUncheckedParams, _ 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 +} + // ActionSubmissionTriggerUploadParams is parameters of actionSubmissionTriggerUpload operation. type ActionSubmissionTriggerUploadParams struct { // The unique identifier for a submission. diff --git a/pkg/api/oas_response_decoders_gen.go b/pkg/api/oas_response_decoders_gen.go index f1227af..4270eb1 100644 --- a/pkg/api/oas_response_decoders_gen.go +++ b/pkg/api/oas_response_decoders_gen.go @@ -75,66 +75,6 @@ func decodeActionMapfixAcceptedResponse(resp *http.Response) (res *ActionMapfixA return res, errors.Wrap(defRes, "error") } -func decodeActionMapfixBypassSubmitResponse(resp *http.Response) (res *ActionMapfixBypassSubmitNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionMapfixBypassSubmitNoContent{}, 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 decodeActionMapfixRejectResponse(resp *http.Response) (res *ActionMapfixRejectNoContent, _ error) { switch resp.StatusCode { case 204: @@ -495,6 +435,66 @@ func decodeActionMapfixTriggerSubmitResponse(resp *http.Response) (res *ActionMa return res, errors.Wrap(defRes, "error") } +func decodeActionMapfixTriggerSubmitUncheckedResponse(resp *http.Response) (res *ActionMapfixTriggerSubmitUncheckedNoContent, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &ActionMapfixTriggerSubmitUncheckedNoContent{}, 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 decodeActionMapfixTriggerUploadResponse(resp *http.Response) (res *ActionMapfixTriggerUploadNoContent, _ error) { switch resp.StatusCode { case 204: @@ -735,66 +735,6 @@ func decodeActionSubmissionAcceptedResponse(resp *http.Response) (res *ActionSub return res, errors.Wrap(defRes, "error") } -func decodeActionSubmissionBypassSubmitResponse(resp *http.Response) (res *ActionSubmissionBypassSubmitNoContent, _ error) { - switch resp.StatusCode { - case 204: - // Code 204. - return &ActionSubmissionBypassSubmitNoContent{}, 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 decodeActionSubmissionRejectResponse(resp *http.Response) (res *ActionSubmissionRejectNoContent, _ error) { switch resp.StatusCode { case 204: @@ -1155,6 +1095,66 @@ func decodeActionSubmissionTriggerSubmitResponse(resp *http.Response) (res *Acti return res, errors.Wrap(defRes, "error") } +func decodeActionSubmissionTriggerSubmitUncheckedResponse(resp *http.Response) (res *ActionSubmissionTriggerSubmitUncheckedNoContent, _ error) { + switch resp.StatusCode { + case 204: + // Code 204. + return &ActionSubmissionTriggerSubmitUncheckedNoContent{}, 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 decodeActionSubmissionTriggerUploadResponse(resp *http.Response) (res *ActionSubmissionTriggerUploadNoContent, _ error) { switch resp.StatusCode { case 204: diff --git a/pkg/api/oas_response_encoders_gen.go b/pkg/api/oas_response_encoders_gen.go index 6279a81..6d277e7 100644 --- a/pkg/api/oas_response_encoders_gen.go +++ b/pkg/api/oas_response_encoders_gen.go @@ -20,13 +20,6 @@ func encodeActionMapfixAcceptedResponse(response *ActionMapfixAcceptedNoContent, return nil } -func encodeActionMapfixBypassSubmitResponse(response *ActionMapfixBypassSubmitNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - func encodeActionMapfixRejectResponse(response *ActionMapfixRejectNoContent, w http.ResponseWriter, span trace.Span) error { w.WriteHeader(204) span.SetStatus(codes.Ok, http.StatusText(204)) @@ -69,6 +62,13 @@ func encodeActionMapfixTriggerSubmitResponse(response *ActionMapfixTriggerSubmit return nil } +func encodeActionMapfixTriggerSubmitUncheckedResponse(response *ActionMapfixTriggerSubmitUncheckedNoContent, w http.ResponseWriter, span trace.Span) error { + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil +} + func encodeActionMapfixTriggerUploadResponse(response *ActionMapfixTriggerUploadNoContent, w http.ResponseWriter, span trace.Span) error { w.WriteHeader(204) span.SetStatus(codes.Ok, http.StatusText(204)) @@ -97,13 +97,6 @@ func encodeActionSubmissionAcceptedResponse(response *ActionSubmissionAcceptedNo return nil } -func encodeActionSubmissionBypassSubmitResponse(response *ActionSubmissionBypassSubmitNoContent, w http.ResponseWriter, span trace.Span) error { - w.WriteHeader(204) - span.SetStatus(codes.Ok, http.StatusText(204)) - - return nil -} - func encodeActionSubmissionRejectResponse(response *ActionSubmissionRejectNoContent, w http.ResponseWriter, span trace.Span) error { w.WriteHeader(204) span.SetStatus(codes.Ok, http.StatusText(204)) @@ -146,6 +139,13 @@ func encodeActionSubmissionTriggerSubmitResponse(response *ActionSubmissionTrigg return nil } +func encodeActionSubmissionTriggerSubmitUncheckedResponse(response *ActionSubmissionTriggerSubmitUncheckedNoContent, w http.ResponseWriter, span trace.Span) error { + w.WriteHeader(204) + span.SetStatus(codes.Ok, http.StatusText(204)) + + return nil +} + func encodeActionSubmissionTriggerUploadResponse(response *ActionSubmissionTriggerUploadNoContent, w http.ResponseWriter, span trace.Span) error { w.WriteHeader(204) span.SetStatus(codes.Ok, http.StatusText(204)) diff --git a/pkg/api/oas_router_gen.go b/pkg/api/oas_router_gen.go index d74b7b5..f92ea12 100644 --- a/pkg/api/oas_router_gen.go +++ b/pkg/api/oas_router_gen.go @@ -250,28 +250,6 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { break } switch elem[0] { - case 'b': // Prefix: "bypass-submit" - - if l := len("bypass-submit"); len(elem) >= l && elem[0:l] == "bypass-submit" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionMapfixBypassSubmitRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - case 'r': // Prefix: "re" if l := len("re"); len(elem) >= l && elem[0:l] == "re" { @@ -475,7 +453,6 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } if len(elem) == 0 { - // Leaf node. switch r.Method { case "POST": s.handleActionMapfixTriggerSubmitRequest([1]string{ @@ -487,6 +464,30 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } + switch elem[0] { + case '-': // Prefix: "-unchecked" + + if l := len("-unchecked"); len(elem) >= l && elem[0:l] == "-unchecked" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleActionMapfixTriggerSubmitUncheckedRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + } case 'u': // Prefix: "upload" @@ -1068,28 +1069,6 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { break } switch elem[0] { - case 'b': // Prefix: "bypass-submit" - - if l := len("bypass-submit"); len(elem) >= l && elem[0:l] == "bypass-submit" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch r.Method { - case "POST": - s.handleActionSubmissionBypassSubmitRequest([1]string{ - args[0], - }, elemIsEscaped, w, r) - default: - s.notAllowed(w, r, "POST") - } - - return - } - case 'r': // Prefix: "re" if l := len("re"); len(elem) >= l && elem[0:l] == "re" { @@ -1293,7 +1272,6 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } if len(elem) == 0 { - // Leaf node. switch r.Method { case "POST": s.handleActionSubmissionTriggerSubmitRequest([1]string{ @@ -1305,6 +1283,30 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } + switch elem[0] { + case '-': // Prefix: "-unchecked" + + if l := len("-unchecked"); len(elem) >= l && elem[0:l] == "-unchecked" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "POST": + s.handleActionSubmissionTriggerSubmitUncheckedRequest([1]string{ + args[0], + }, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "POST") + } + + return + } + + } case 'u': // Prefix: "upload" @@ -1665,30 +1667,6 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { break } switch elem[0] { - case 'b': // Prefix: "bypass-submit" - - if l := len("bypass-submit"); len(elem) >= l && elem[0:l] == "bypass-submit" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionMapfixBypassSubmitOperation - r.summary = "Role Reviewer changes status from ChangesRequested -> Submitted" - r.operationID = "actionMapfixBypassSubmit" - r.pathPattern = "/mapfixes/{MapfixID}/status/bypass-submit" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - case 'r': // Prefix: "re" if l := len("re"); len(elem) >= l && elem[0:l] == "re" { @@ -1906,7 +1884,6 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } if len(elem) == 0 { - // Leaf node. switch method { case "POST": r.name = ActionMapfixTriggerSubmitOperation @@ -1920,6 +1897,32 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { return } } + switch elem[0] { + case '-': // Prefix: "-unchecked" + + if l := len("-unchecked"); len(elem) >= l && elem[0:l] == "-unchecked" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ActionMapfixTriggerSubmitUncheckedOperation + r.summary = "Role Reviewer changes status from ChangesRequested -> Submitting" + r.operationID = "actionMapfixTriggerSubmitUnchecked" + r.pathPattern = "/mapfixes/{MapfixID}/status/trigger-submit-unchecked" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + } case 'u': // Prefix: "upload" @@ -2593,30 +2596,6 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { break } switch elem[0] { - case 'b': // Prefix: "bypass-submit" - - if l := len("bypass-submit"); len(elem) >= l && elem[0:l] == "bypass-submit" { - elem = elem[l:] - } else { - break - } - - if len(elem) == 0 { - // Leaf node. - switch method { - case "POST": - r.name = ActionSubmissionBypassSubmitOperation - r.summary = "Role Reviewer changes status from ChangesRequested -> Submitted" - r.operationID = "actionSubmissionBypassSubmit" - r.pathPattern = "/submissions/{SubmissionID}/status/bypass-submit" - r.args = args - r.count = 1 - return r, true - default: - return - } - } - case 'r': // Prefix: "re" if l := len("re"); len(elem) >= l && elem[0:l] == "re" { @@ -2834,7 +2813,6 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } if len(elem) == 0 { - // Leaf node. switch method { case "POST": r.name = ActionSubmissionTriggerSubmitOperation @@ -2848,6 +2826,32 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { return } } + switch elem[0] { + case '-': // Prefix: "-unchecked" + + if l := len("-unchecked"); len(elem) >= l && elem[0:l] == "-unchecked" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch method { + case "POST": + r.name = ActionSubmissionTriggerSubmitUncheckedOperation + r.summary = "Role Reviewer changes status from ChangesRequested -> Submitting" + r.operationID = "actionSubmissionTriggerSubmitUnchecked" + r.pathPattern = "/submissions/{SubmissionID}/status/trigger-submit-unchecked" + r.args = args + r.count = 1 + return r, true + default: + return + } + } + + } case 'u': // Prefix: "upload" diff --git a/pkg/api/oas_schemas_gen.go b/pkg/api/oas_schemas_gen.go index 6d355f5..3d1a5a7 100644 --- a/pkg/api/oas_schemas_gen.go +++ b/pkg/api/oas_schemas_gen.go @@ -17,9 +17,6 @@ func (s *ErrorStatusCode) Error() string { // ActionMapfixAcceptedNoContent is response for ActionMapfixAccepted operation. type ActionMapfixAcceptedNoContent struct{} -// ActionMapfixBypassSubmitNoContent is response for ActionMapfixBypassSubmit operation. -type ActionMapfixBypassSubmitNoContent struct{} - // ActionMapfixRejectNoContent is response for ActionMapfixReject operation. type ActionMapfixRejectNoContent struct{} @@ -38,6 +35,9 @@ type ActionMapfixRevokeNoContent struct{} // ActionMapfixTriggerSubmitNoContent is response for ActionMapfixTriggerSubmit operation. type ActionMapfixTriggerSubmitNoContent struct{} +// ActionMapfixTriggerSubmitUncheckedNoContent is response for ActionMapfixTriggerSubmitUnchecked operation. +type ActionMapfixTriggerSubmitUncheckedNoContent struct{} + // ActionMapfixTriggerUploadNoContent is response for ActionMapfixTriggerUpload operation. type ActionMapfixTriggerUploadNoContent struct{} @@ -50,9 +50,6 @@ type ActionMapfixValidatedNoContent struct{} // ActionSubmissionAcceptedNoContent is response for ActionSubmissionAccepted operation. type ActionSubmissionAcceptedNoContent struct{} -// ActionSubmissionBypassSubmitNoContent is response for ActionSubmissionBypassSubmit operation. -type ActionSubmissionBypassSubmitNoContent struct{} - // ActionSubmissionRejectNoContent is response for ActionSubmissionReject operation. type ActionSubmissionRejectNoContent struct{} @@ -71,6 +68,9 @@ type ActionSubmissionRevokeNoContent struct{} // ActionSubmissionTriggerSubmitNoContent is response for ActionSubmissionTriggerSubmit operation. type ActionSubmissionTriggerSubmitNoContent struct{} +// ActionSubmissionTriggerSubmitUncheckedNoContent is response for ActionSubmissionTriggerSubmitUnchecked operation. +type ActionSubmissionTriggerSubmitUncheckedNoContent struct{} + // ActionSubmissionTriggerUploadNoContent is response for ActionSubmissionTriggerUpload operation. type ActionSubmissionTriggerUploadNoContent struct{} diff --git a/pkg/api/oas_security_gen.go b/pkg/api/oas_security_gen.go index cb72d81..a9b56b8 100644 --- a/pkg/api/oas_security_gen.go +++ b/pkg/api/oas_security_gen.go @@ -34,48 +34,48 @@ func findAuthorization(h http.Header, prefix string) (string, bool) { } var operationRolesCookieAuth = map[string][]string{ - ActionMapfixAcceptedOperation: []string{}, - ActionMapfixBypassSubmitOperation: []string{}, - ActionMapfixRejectOperation: []string{}, - ActionMapfixRequestChangesOperation: []string{}, - ActionMapfixResetSubmittingOperation: []string{}, - ActionMapfixRetryValidateOperation: []string{}, - ActionMapfixRevokeOperation: []string{}, - ActionMapfixTriggerSubmitOperation: []string{}, - ActionMapfixTriggerUploadOperation: []string{}, - ActionMapfixTriggerValidateOperation: []string{}, - ActionMapfixValidatedOperation: []string{}, - ActionSubmissionAcceptedOperation: []string{}, - ActionSubmissionBypassSubmitOperation: []string{}, - ActionSubmissionRejectOperation: []string{}, - ActionSubmissionRequestChangesOperation: []string{}, - ActionSubmissionResetSubmittingOperation: []string{}, - ActionSubmissionRetryValidateOperation: []string{}, - ActionSubmissionRevokeOperation: []string{}, - ActionSubmissionTriggerSubmitOperation: []string{}, - ActionSubmissionTriggerUploadOperation: []string{}, - ActionSubmissionTriggerValidateOperation: []string{}, - ActionSubmissionValidatedOperation: []string{}, - CreateMapfixOperation: []string{}, - CreateMapfixAuditCommentOperation: []string{}, - CreateScriptOperation: []string{}, - CreateScriptPolicyOperation: []string{}, - CreateSubmissionOperation: []string{}, - CreateSubmissionAdminOperation: []string{}, - CreateSubmissionAuditCommentOperation: []string{}, - DeleteScriptOperation: []string{}, - DeleteScriptPolicyOperation: []string{}, - GetOperationOperation: []string{}, - ReleaseSubmissionsOperation: []string{}, - SessionRolesOperation: []string{}, - SessionUserOperation: []string{}, - SessionValidateOperation: []string{}, - SetMapfixCompletedOperation: []string{}, - SetSubmissionCompletedOperation: []string{}, - UpdateMapfixModelOperation: []string{}, - UpdateScriptOperation: []string{}, - UpdateScriptPolicyOperation: []string{}, - UpdateSubmissionModelOperation: []string{}, + ActionMapfixAcceptedOperation: []string{}, + ActionMapfixRejectOperation: []string{}, + ActionMapfixRequestChangesOperation: []string{}, + ActionMapfixResetSubmittingOperation: []string{}, + ActionMapfixRetryValidateOperation: []string{}, + ActionMapfixRevokeOperation: []string{}, + ActionMapfixTriggerSubmitOperation: []string{}, + ActionMapfixTriggerSubmitUncheckedOperation: []string{}, + ActionMapfixTriggerUploadOperation: []string{}, + ActionMapfixTriggerValidateOperation: []string{}, + ActionMapfixValidatedOperation: []string{}, + ActionSubmissionAcceptedOperation: []string{}, + ActionSubmissionRejectOperation: []string{}, + ActionSubmissionRequestChangesOperation: []string{}, + ActionSubmissionResetSubmittingOperation: []string{}, + ActionSubmissionRetryValidateOperation: []string{}, + ActionSubmissionRevokeOperation: []string{}, + ActionSubmissionTriggerSubmitOperation: []string{}, + ActionSubmissionTriggerSubmitUncheckedOperation: []string{}, + ActionSubmissionTriggerUploadOperation: []string{}, + ActionSubmissionTriggerValidateOperation: []string{}, + ActionSubmissionValidatedOperation: []string{}, + CreateMapfixOperation: []string{}, + CreateMapfixAuditCommentOperation: []string{}, + CreateScriptOperation: []string{}, + CreateScriptPolicyOperation: []string{}, + CreateSubmissionOperation: []string{}, + CreateSubmissionAdminOperation: []string{}, + CreateSubmissionAuditCommentOperation: []string{}, + DeleteScriptOperation: []string{}, + DeleteScriptPolicyOperation: []string{}, + GetOperationOperation: []string{}, + ReleaseSubmissionsOperation: []string{}, + SessionRolesOperation: []string{}, + SessionUserOperation: []string{}, + SessionValidateOperation: []string{}, + SetMapfixCompletedOperation: []string{}, + SetSubmissionCompletedOperation: []string{}, + UpdateMapfixModelOperation: []string{}, + UpdateScriptOperation: []string{}, + UpdateScriptPolicyOperation: []string{}, + UpdateSubmissionModelOperation: []string{}, } func (s *Server) securityCookieAuth(ctx context.Context, operationName OperationName, req *http.Request) (context.Context, bool, error) { diff --git a/pkg/api/oas_server_gen.go b/pkg/api/oas_server_gen.go index f2f961b..1e6d4a9 100644 --- a/pkg/api/oas_server_gen.go +++ b/pkg/api/oas_server_gen.go @@ -14,12 +14,6 @@ type Handler interface { // // POST /mapfixes/{MapfixID}/status/reset-validating ActionMapfixAccepted(ctx context.Context, params ActionMapfixAcceptedParams) error - // ActionMapfixBypassSubmit implements actionMapfixBypassSubmit operation. - // - // Role Reviewer changes status from ChangesRequested -> Submitted. - // - // POST /mapfixes/{MapfixID}/status/bypass-submit - ActionMapfixBypassSubmit(ctx context.Context, params ActionMapfixBypassSubmitParams) error // ActionMapfixReject implements actionMapfixReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -57,6 +51,12 @@ type Handler interface { // // POST /mapfixes/{MapfixID}/status/trigger-submit ActionMapfixTriggerSubmit(ctx context.Context, params ActionMapfixTriggerSubmitParams) error + // ActionMapfixTriggerSubmitUnchecked implements actionMapfixTriggerSubmitUnchecked operation. + // + // Role Reviewer changes status from ChangesRequested -> Submitting. + // + // POST /mapfixes/{MapfixID}/status/trigger-submit-unchecked + ActionMapfixTriggerSubmitUnchecked(ctx context.Context, params ActionMapfixTriggerSubmitUncheckedParams) error // ActionMapfixTriggerUpload implements actionMapfixTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. @@ -81,12 +81,6 @@ type Handler interface { // // POST /submissions/{SubmissionID}/status/reset-validating ActionSubmissionAccepted(ctx context.Context, params ActionSubmissionAcceptedParams) error - // ActionSubmissionBypassSubmit implements actionSubmissionBypassSubmit operation. - // - // Role Reviewer changes status from ChangesRequested -> Submitted. - // - // POST /submissions/{SubmissionID}/status/bypass-submit - ActionSubmissionBypassSubmit(ctx context.Context, params ActionSubmissionBypassSubmitParams) error // ActionSubmissionReject implements actionSubmissionReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -124,6 +118,12 @@ type Handler interface { // // POST /submissions/{SubmissionID}/status/trigger-submit ActionSubmissionTriggerSubmit(ctx context.Context, params ActionSubmissionTriggerSubmitParams) error + // ActionSubmissionTriggerSubmitUnchecked implements actionSubmissionTriggerSubmitUnchecked operation. + // + // Role Reviewer changes status from ChangesRequested -> Submitting. + // + // POST /submissions/{SubmissionID}/status/trigger-submit-unchecked + ActionSubmissionTriggerSubmitUnchecked(ctx context.Context, params ActionSubmissionTriggerSubmitUncheckedParams) error // ActionSubmissionTriggerUpload implements actionSubmissionTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. diff --git a/pkg/api/oas_unimplemented_gen.go b/pkg/api/oas_unimplemented_gen.go index 5f935de..c1b8fdb 100644 --- a/pkg/api/oas_unimplemented_gen.go +++ b/pkg/api/oas_unimplemented_gen.go @@ -22,15 +22,6 @@ func (UnimplementedHandler) ActionMapfixAccepted(ctx context.Context, params Act return ht.ErrNotImplemented } -// ActionMapfixBypassSubmit implements actionMapfixBypassSubmit operation. -// -// Role Reviewer changes status from ChangesRequested -> Submitted. -// -// POST /mapfixes/{MapfixID}/status/bypass-submit -func (UnimplementedHandler) ActionMapfixBypassSubmit(ctx context.Context, params ActionMapfixBypassSubmitParams) error { - return ht.ErrNotImplemented -} - // ActionMapfixReject implements actionMapfixReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -86,6 +77,15 @@ func (UnimplementedHandler) ActionMapfixTriggerSubmit(ctx context.Context, param return ht.ErrNotImplemented } +// ActionMapfixTriggerSubmitUnchecked implements actionMapfixTriggerSubmitUnchecked operation. +// +// Role Reviewer changes status from ChangesRequested -> Submitting. +// +// POST /mapfixes/{MapfixID}/status/trigger-submit-unchecked +func (UnimplementedHandler) ActionMapfixTriggerSubmitUnchecked(ctx context.Context, params ActionMapfixTriggerSubmitUncheckedParams) error { + return ht.ErrNotImplemented +} + // ActionMapfixTriggerUpload implements actionMapfixTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. @@ -122,15 +122,6 @@ func (UnimplementedHandler) ActionSubmissionAccepted(ctx context.Context, params return ht.ErrNotImplemented } -// ActionSubmissionBypassSubmit implements actionSubmissionBypassSubmit operation. -// -// Role Reviewer changes status from ChangesRequested -> Submitted. -// -// POST /submissions/{SubmissionID}/status/bypass-submit -func (UnimplementedHandler) ActionSubmissionBypassSubmit(ctx context.Context, params ActionSubmissionBypassSubmitParams) error { - return ht.ErrNotImplemented -} - // ActionSubmissionReject implements actionSubmissionReject operation. // // Role Reviewer changes status from Submitted -> Rejected. @@ -186,6 +177,15 @@ func (UnimplementedHandler) ActionSubmissionTriggerSubmit(ctx context.Context, p return ht.ErrNotImplemented } +// ActionSubmissionTriggerSubmitUnchecked implements actionSubmissionTriggerSubmitUnchecked operation. +// +// Role Reviewer changes status from ChangesRequested -> Submitting. +// +// POST /submissions/{SubmissionID}/status/trigger-submit-unchecked +func (UnimplementedHandler) ActionSubmissionTriggerSubmitUnchecked(ctx context.Context, params ActionSubmissionTriggerSubmitUncheckedParams) error { + return ht.ErrNotImplemented +} + // ActionSubmissionTriggerUpload implements actionSubmissionTriggerUpload operation. // // Role Admin changes status from Validated -> Uploading. diff --git a/pkg/model/nats.go b/pkg/model/nats.go index a0882e6..9a1a8fd 100644 --- a/pkg/model/nats.go +++ b/pkg/model/nats.go @@ -27,11 +27,13 @@ type CreateMapfixRequest struct { type CheckSubmissionRequest struct{ SubmissionID int64 ModelID uint64 + SkipChecks bool } type CheckMapfixRequest struct{ - MapfixID int64 - ModelID uint64 + MapfixID int64 + ModelID uint64 + SkipChecks bool } type ValidateSubmissionRequest struct { diff --git a/pkg/service/mapfixes.go b/pkg/service/mapfixes.go index 4c40393..2e95d2f 100644 --- a/pkg/service/mapfixes.go +++ b/pkg/service/mapfixes.go @@ -498,8 +498,9 @@ func (svc *Service) ActionMapfixTriggerSubmit(ctx context.Context, params api.Ac } validate_request := model.CheckMapfixRequest{ - MapfixID: mapfix.ID, - ModelID: mapfix.AssetID, + MapfixID: mapfix.ID, + ModelID: mapfix.AssetID, + SkipChecks: false, } j, err := json.Marshal(validate_request) @@ -527,12 +528,12 @@ func (svc *Service) ActionMapfixTriggerSubmit(ctx context.Context, params api.Ac ) } -// ActionMapfixBypassSubmit invokes actionMapfixBypassSubmit operation. +// ActionMapfixTriggerSubmitUnchecked invokes actionMapfixTriggerSubmitUnchecked operation. // -// Role Reviewer changes status from ChangesRequested -> Submitted. +// Role Reviewer changes status from ChangesRequested -> Submitting. // -// POST /mapfixes/{MapfixID}/status/bypass-submit -func (svc *Service) ActionMapfixBypassSubmit(ctx context.Context, params api.ActionMapfixBypassSubmitParams) error { +// POST /mapfixes/{MapfixID}/status/trigger-submit-unchecked +func (svc *Service) ActionMapfixTriggerSubmitUnchecked(ctx context.Context, params api.ActionMapfixTriggerSubmitUncheckedParams) error { userInfo, ok := ctx.Value("UserInfo").(UserInfoHandle) if !ok { return ErrUserInfo @@ -565,7 +566,7 @@ func (svc *Service) ActionMapfixBypassSubmit(ctx context.Context, params api.Act } // transaction - target_status := model.MapfixStatusSubmitted + target_status := model.MapfixStatusSubmitting smap := datastore.Optional() smap.Add("status_id", target_status) err = svc.DB.Mapfixes().IfStatusThenUpdate(ctx, params.MapfixID, []model.MapfixStatus{model.MapfixStatusChangesRequested}, smap) @@ -573,6 +574,22 @@ func (svc *Service) ActionMapfixBypassSubmit(ctx context.Context, params api.Act return err } + validate_request := model.CheckMapfixRequest{ + MapfixID: mapfix.ID, + ModelID: mapfix.AssetID, + SkipChecks: true, + } + + j, err := json.Marshal(validate_request) + if err != nil { + return err + } + + _, err = svc.Nats.Publish("maptest.mapfixes.check", []byte(j)) + if err != nil { + return err + } + event_data := model.AuditEventDataAction{ TargetStatus: uint32(target_status), } diff --git a/pkg/service/submissions.go b/pkg/service/submissions.go index dc4543e..c8562e1 100644 --- a/pkg/service/submissions.go +++ b/pkg/service/submissions.go @@ -575,6 +575,7 @@ func (svc *Service) ActionSubmissionTriggerSubmit(ctx context.Context, params ap validate_request := model.CheckSubmissionRequest{ SubmissionID: submission.ID, ModelID: submission.AssetID, + SkipChecks: false, } j, err := json.Marshal(validate_request) @@ -602,12 +603,12 @@ func (svc *Service) ActionSubmissionTriggerSubmit(ctx context.Context, params ap ) } -// ActionSubmissionBypassSubmit invokes actionSubmissionBypassSubmit operation. +// ActionSubmissionTriggerSubmitUnchecked invokes actionSubmissionTriggerSubmitUnchecked operation. // -// Role Reviewer changes status from ChangesRequested -> Submitted. +// Role Reviewer changes status from ChangesRequested -> Submitting. // -// POST /submissions/{SubmissionID}/status/bypass-submit -func (svc *Service) ActionSubmissionBypassSubmit(ctx context.Context, params api.ActionSubmissionBypassSubmitParams) error { +// POST /submissions/{SubmissionID}/status/trigger-submit-unchecked +func (svc *Service) ActionSubmissionTriggerSubmitUnchecked(ctx context.Context, params api.ActionSubmissionTriggerSubmitUncheckedParams) error { userInfo, ok := ctx.Value("UserInfo").(UserInfoHandle) if !ok { return ErrUserInfo @@ -640,7 +641,7 @@ func (svc *Service) ActionSubmissionBypassSubmit(ctx context.Context, params api } // transaction - target_status := model.SubmissionStatusSubmitted + target_status := model.SubmissionStatusSubmitting smap := datastore.Optional() smap.Add("status_id", target_status) err = svc.DB.Submissions().IfStatusThenUpdate(ctx, params.SubmissionID, []model.SubmissionStatus{model.SubmissionStatusChangesRequested}, smap) @@ -648,6 +649,22 @@ func (svc *Service) ActionSubmissionBypassSubmit(ctx context.Context, params api return err } + validate_request := model.CheckSubmissionRequest{ + SubmissionID: submission.ID, + ModelID: submission.AssetID, + SkipChecks: true, + } + + j, err := json.Marshal(validate_request) + if err != nil { + return err + } + + _, err = svc.Nats.Publish("maptest.submissions.check", []byte(j)) + if err != nil { + return err + } + event_data := model.AuditEventDataAction{ TargetStatus: uint32(target_status), } diff --git a/validation/src/check.rs b/validation/src/check.rs index 8c39abe..17121fe 100644 --- a/validation/src/check.rs +++ b/validation/src/check.rs @@ -12,6 +12,7 @@ pub enum Error{ Download(crate::download::Error), ModelFileDecode(ReadDomError), GetRootInstance(GetRootInstanceError), + IntoMapInfoOwned(IntoMapInfoOwnedError), ToJsonValue(serde_json::Error), } impl std::fmt::Display for Error{ @@ -23,13 +24,15 @@ impl std::error::Error for Error{} #[allow(nonstandard_style)] pub struct CheckRequest{ - pub ModelID:u64, + ModelID:u64, + SkipChecks:bool, } impl From for CheckRequest{ fn from(value:crate::nats_types::CheckMapfixRequest)->Self{ Self{ ModelID:value.ModelID, + SkipChecks:value.SkipChecks, } } } @@ -37,6 +40,7 @@ impl From for CheckRequest{ fn from(value:crate::nats_types::CheckSubmissionRequest)->Self{ Self{ ModelID:value.ModelID, + SkipChecks:value.SkipChecks, } } } @@ -382,6 +386,22 @@ pub struct MapInfoOwned{ pub creator:String, pub game_id:GameID, } +#[derive(Debug)] +pub enum IntoMapInfoOwnedError{ + DisplayName(StringValueError), + Creator(StringValueError), + GameID(ParseGameIDError), +} +impl TryFrom> for MapInfoOwned{ + type Error=IntoMapInfoOwnedError; + fn try_from(value:MapInfo<'_>)->Result{ + Ok(Self{ + display_name:value.display_name.map_err(IntoMapInfoOwnedError::DisplayName)?.to_owned(), + creator:value.creator.map_err(IntoMapInfoOwnedError::Creator)?.to_owned(), + game_id:value.game_id.map_err(IntoMapInfoOwnedError::GameID)?, + }) + } +} // Named dummy types for readability struct Exists; @@ -833,6 +853,17 @@ impl crate::message_handler::MessageHandler{ // extract the root instance let model_instance=get_root_instance(&dom).map_err(Error::GetRootInstance)?; + // skip checks + if check_info.SkipChecks{ + // extract required fields + let map_info=get_mapinfo(&dom,model_instance); + let map_info_owned=map_info.try_into().map_err(Error::IntoMapInfoOwned)?; + let status=Ok(map_info_owned); + + // return early + return Ok(CheckReportAndVersion{status,version}); + } + // extract information from the model let model_info=get_model_info(&dom,model_instance); diff --git a/validation/src/nats_types.rs b/validation/src/nats_types.rs index db2a7e2..203bef4 100644 --- a/validation/src/nats_types.rs +++ b/validation/src/nats_types.rs @@ -34,6 +34,7 @@ pub struct CreateMapfixRequest{ pub struct CheckSubmissionRequest{ pub SubmissionID:SubmissionID, pub ModelID:u64, + pub SkipChecks:bool, } #[allow(nonstandard_style)] @@ -41,6 +42,7 @@ pub struct CheckSubmissionRequest{ pub struct CheckMapfixRequest{ pub MapfixID:MapfixID, pub ModelID:u64, + pub SkipChecks:bool, } #[allow(nonstandard_style)] diff --git a/web/src/app/_components/review/ReviewButtons.tsx b/web/src/app/_components/review/ReviewButtons.tsx index 17c0c3c..a2abcd0 100644 --- a/web/src/app/_components/review/ReviewButtons.tsx +++ b/web/src/app/_components/review/ReviewButtons.tsx @@ -20,7 +20,7 @@ interface ReviewButtonsProps { const ReviewActions = { Submit: {name:"Submit",action:"trigger-submit"} as ReviewAction, - BypassSubmit: {name:"Bypass Submit", action:"bypass-submit"} as ReviewAction, + SubmitUnchecked: {name:"Submit Unchecked", action:"trigger-submit-unchecked"} as ReviewAction, ResetSubmitting: {name:"Reset Submitting",action:"reset-submitting"} as ReviewAction, Revoke: {name:"Revoke",action:"revoke"} as ReviewAction, Accept: {name:"Accept",action:"trigger-validate"} as ReviewAction, @@ -109,7 +109,7 @@ const ReviewButtons: React.FC = ({ if (status === Status.ChangesRequested) { buttons.push({ - action: ReviewActions.BypassSubmit, + action: ReviewActions.SubmitUnchecked, color: "warning" }); } @@ -152,4 +152,4 @@ const ReviewButtons: React.FC = ({ ); }; -export default ReviewButtons; \ No newline at end of file +export default ReviewButtons;