diff --git a/pkg/api/oas_client_gen.go b/pkg/api/oas_client_gen.go index f0a0199..1ade879 100644 --- a/pkg/api/oas_client_gen.go +++ b/pkg/api/oas_client_gen.go @@ -22,6 +22,11 @@ import ( "github.com/ogen-go/ogen/uri" ) +func trimTrailingSlashes(u *url.URL) { + u.Path = strings.TrimRight(u.Path, "/") + u.RawPath = strings.TrimRight(u.RawPath, "/") +} + // Invoker invokes operations described by OpenAPI v3 specification. type Invoker interface { // ActionSubmissionReject invokes actionSubmissionReject operation. @@ -173,11 +178,6 @@ var _ Handler = struct { *Client }{} -func trimTrailingSlashes(u *url.URL) { - u.Path = strings.TrimRight(u.Path, "/") - u.RawPath = strings.TrimRight(u.RawPath, "/") -} - // NewClient initializes new Client defined by OAS. func NewClient(serverURL string, sec SecuritySource, opts ...ClientOption) (*Client, error) { u, err := url.Parse(serverURL) @@ -1846,39 +1846,6 @@ func (c *Client) sendGetSubmission(ctx context.Context, params GetSubmissionPara return res, errors.Wrap(err, "create request") } - { - type bitset = [1]uint8 - var satisfied bitset - { - stage = "Security:CookieAuth" - switch err := c.securityCookieAuth(ctx, GetSubmissionOperation, 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 { @@ -2444,39 +2411,6 @@ func (c *Client) sendListSubmissions(ctx context.Context, params ListSubmissions return res, errors.Wrap(err, "create request") } - { - type bitset = [1]uint8 - var satisfied bitset - { - stage = "Security:CookieAuth" - switch err := c.securityCookieAuth(ctx, ListSubmissionsOperation, 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 { diff --git a/pkg/api/oas_handlers_gen.go b/pkg/api/oas_handlers_gen.go index c2b997d..4cd4751 100644 --- a/pkg/api/oas_handlers_gen.go +++ b/pkg/api/oas_handlers_gen.go @@ -2639,52 +2639,6 @@ func (s *Server) handleGetSubmissionRequest(args [1]string, argsEscaped bool, w ID: "getSubmission", } ) - { - type bitset = [1]uint8 - var satisfied bitset - { - sctx, ok, err := s.securityCookieAuth(ctx, GetSubmissionOperation, 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 := decodeGetSubmissionParams(args, argsEscaped, r) if err != nil { err = &ogenerrors.DecodeParamsError{ @@ -3260,52 +3214,6 @@ func (s *Server) handleListSubmissionsRequest(args [0]string, argsEscaped bool, ID: "listSubmissions", } ) - { - type bitset = [1]uint8 - var satisfied bitset - { - sctx, ok, err := s.securityCookieAuth(ctx, ListSubmissionsOperation, 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 := decodeListSubmissionsParams(args, argsEscaped, r) if err != nil { err = &ogenerrors.DecodeParamsError{ diff --git a/pkg/api/oas_parameters_gen.go b/pkg/api/oas_parameters_gen.go index de416e1..5885bc5 100644 --- a/pkg/api/oas_parameters_gen.go +++ b/pkg/api/oas_parameters_gen.go @@ -840,7 +840,7 @@ func decodeListScriptPolicyParams(args [0]string, argsEscaped bool, r *http.Requ return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -893,7 +893,7 @@ func decodeListScriptPolicyParams(args [0]string, argsEscaped bool, r *http.Requ return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -1161,7 +1161,7 @@ func decodeListScriptsParams(args [0]string, argsEscaped bool, r *http.Request) return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -1214,7 +1214,7 @@ func decodeListScriptsParams(args [0]string, argsEscaped bool, r *http.Request) return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -1569,7 +1569,7 @@ func decodeListSubmissionsParams(args [0]string, argsEscaped bool, r *http.Reque return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -1622,7 +1622,7 @@ func decodeListSubmissionsParams(args [0]string, argsEscaped bool, r *http.Reque return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -2149,7 +2149,7 @@ func decodeUpdateSubmissionModelParams(args [1]string, argsEscaped bool, r *http return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -2185,7 +2185,7 @@ func decodeUpdateSubmissionModelParams(args [1]string, argsEscaped bool, r *http return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { diff --git a/pkg/api/oas_router_gen.go b/pkg/api/oas_router_gen.go index 53dbce3..a3e67c6 100644 --- a/pkg/api/oas_router_gen.go +++ b/pkg/api/oas_router_gen.go @@ -50,7 +50,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -62,7 +62,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case 'r': // Prefix: "release-submissions" - origElem := elem + if l := len("release-submissions"); len(elem) >= l && elem[0:l] == "release-submissions" { elem = elem[l:] } else { @@ -81,9 +81,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 's': // Prefix: "s" - origElem := elem + if l := len("s"); len(elem) >= l && elem[0:l] == "s" { elem = elem[l:] } else { @@ -95,7 +94,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case 'c': // Prefix: "cript" - origElem := elem + if l := len("cript"); len(elem) >= l && elem[0:l] == "cript" { elem = elem[l:] } else { @@ -107,7 +106,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '-': // Prefix: "-policy" - origElem := elem + if l := len("-policy"); len(elem) >= l && elem[0:l] == "-policy" { elem = elem[l:] } else { @@ -128,7 +127,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -136,7 +135,11 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } // Param: "ScriptPolicyID" - // Leaf parameter + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } args[0] = elem elem = "" @@ -162,12 +165,10 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem } - elem = origElem case 's': // Prefix: "s" - origElem := elem + if l := len("s"); len(elem) >= l && elem[0:l] == "s" { elem = elem[l:] } else { @@ -188,7 +189,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -196,7 +197,11 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } // Param: "ScriptID" - // Leaf parameter + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } args[0] = elem elem = "" @@ -222,15 +227,12 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem } - elem = origElem } - elem = origElem case 'u': // Prefix: "ubmissions" - origElem := elem + if l := len("ubmissions"); len(elem) >= l && elem[0:l] == "ubmissions" { elem = elem[l:] } else { @@ -251,7 +253,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -281,7 +283,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -293,7 +295,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case 'c': // Prefix: "completed" - origElem := elem + if l := len("completed"); len(elem) >= l && elem[0:l] == "completed" { elem = elem[l:] } else { @@ -314,9 +316,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 'm': // Prefix: "model" - origElem := elem + if l := len("model"); len(elem) >= l && elem[0:l] == "model" { elem = elem[l:] } else { @@ -337,9 +338,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 's': // Prefix: "status/" - origElem := elem + if l := len("status/"); len(elem) >= l && elem[0:l] == "status/" { elem = elem[l:] } else { @@ -351,7 +351,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case 'r': // Prefix: "re" - origElem := elem + if l := len("re"); len(elem) >= l && elem[0:l] == "re" { elem = elem[l:] } else { @@ -363,7 +363,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case 'j': // Prefix: "ject" - origElem := elem + if l := len("ject"); len(elem) >= l && elem[0:l] == "ject" { elem = elem[l:] } else { @@ -384,9 +384,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 'q': // Prefix: "quest-changes" - origElem := elem + if l := len("quest-changes"); len(elem) >= l && elem[0:l] == "quest-changes" { elem = elem[l:] } else { @@ -407,9 +406,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 'v': // Prefix: "voke" - origElem := elem + if l := len("voke"); len(elem) >= l && elem[0:l] == "voke" { elem = elem[l:] } else { @@ -430,12 +428,10 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem } - elem = origElem case 's': // Prefix: "submit" - origElem := elem + if l := len("submit"); len(elem) >= l && elem[0:l] == "submit" { elem = elem[l:] } else { @@ -456,9 +452,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 't': // Prefix: "trigger-" - origElem := elem + if l := len("trigger-"); len(elem) >= l && elem[0:l] == "trigger-" { elem = elem[l:] } else { @@ -470,7 +465,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case 'u': // Prefix: "upload" - origElem := elem + if l := len("upload"); len(elem) >= l && elem[0:l] == "upload" { elem = elem[l:] } else { @@ -491,9 +486,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 'v': // Prefix: "validate" - origElem := elem + if l := len("validate"); len(elem) >= l && elem[0:l] == "validate" { elem = elem[l:] } else { @@ -514,28 +508,20 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } } s.notFound(w, r) @@ -617,7 +603,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -629,7 +615,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case 'r': // Prefix: "release-submissions" - origElem := elem + if l := len("release-submissions"); len(elem) >= l && elem[0:l] == "release-submissions" { elem = elem[l:] } else { @@ -652,9 +638,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 's': // Prefix: "s" - origElem := elem + if l := len("s"); len(elem) >= l && elem[0:l] == "s" { elem = elem[l:] } else { @@ -666,7 +651,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case 'c': // Prefix: "cript" - origElem := elem + if l := len("cript"); len(elem) >= l && elem[0:l] == "cript" { elem = elem[l:] } else { @@ -678,7 +663,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '-': // Prefix: "-policy" - origElem := elem + if l := len("-policy"); len(elem) >= l && elem[0:l] == "-policy" { elem = elem[l:] } else { @@ -709,7 +694,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -717,7 +702,11 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } // Param: "ScriptPolicyID" - // Leaf parameter + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } args[0] = elem elem = "" @@ -753,12 +742,10 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem } - elem = origElem case 's': // Prefix: "s" - origElem := elem + if l := len("s"); len(elem) >= l && elem[0:l] == "s" { elem = elem[l:] } else { @@ -789,7 +776,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -797,7 +784,11 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } // Param: "ScriptID" - // Leaf parameter + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } args[0] = elem elem = "" @@ -833,15 +824,12 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem } - elem = origElem } - elem = origElem case 'u': // Prefix: "ubmissions" - origElem := elem + if l := len("ubmissions"); len(elem) >= l && elem[0:l] == "ubmissions" { elem = elem[l:] } else { @@ -872,7 +860,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -904,7 +892,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -916,7 +904,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case 'c': // Prefix: "completed" - origElem := elem + if l := len("completed"); len(elem) >= l && elem[0:l] == "completed" { elem = elem[l:] } else { @@ -939,9 +927,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 'm': // Prefix: "model" - origElem := elem + if l := len("model"); len(elem) >= l && elem[0:l] == "model" { elem = elem[l:] } else { @@ -964,9 +951,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 's': // Prefix: "status/" - origElem := elem + if l := len("status/"); len(elem) >= l && elem[0:l] == "status/" { elem = elem[l:] } else { @@ -978,7 +964,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case 'r': // Prefix: "re" - origElem := elem + if l := len("re"); len(elem) >= l && elem[0:l] == "re" { elem = elem[l:] } else { @@ -990,7 +976,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case 'j': // Prefix: "ject" - origElem := elem + if l := len("ject"); len(elem) >= l && elem[0:l] == "ject" { elem = elem[l:] } else { @@ -1013,9 +999,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 'q': // Prefix: "quest-changes" - origElem := elem + if l := len("quest-changes"); len(elem) >= l && elem[0:l] == "quest-changes" { elem = elem[l:] } else { @@ -1038,9 +1023,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 'v': // Prefix: "voke" - origElem := elem + if l := len("voke"); len(elem) >= l && elem[0:l] == "voke" { elem = elem[l:] } else { @@ -1063,12 +1047,10 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem } - elem = origElem case 's': // Prefix: "submit" - origElem := elem + if l := len("submit"); len(elem) >= l && elem[0:l] == "submit" { elem = elem[l:] } else { @@ -1091,9 +1073,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 't': // Prefix: "trigger-" - origElem := elem + if l := len("trigger-"); len(elem) >= l && elem[0:l] == "trigger-" { elem = elem[l:] } else { @@ -1105,7 +1086,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case 'u': // Prefix: "upload" - origElem := elem + if l := len("upload"); len(elem) >= l && elem[0:l] == "upload" { elem = elem[l:] } else { @@ -1128,9 +1109,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 'v': // Prefix: "validate" - origElem := elem + if l := len("validate"); len(elem) >= l && elem[0:l] == "validate" { elem = elem[l:] } else { @@ -1153,28 +1133,20 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } } return r, false diff --git a/pkg/internal/oas_client_gen.go b/pkg/internal/oas_client_gen.go index acd1b64..a1e4c92 100644 --- a/pkg/internal/oas_client_gen.go +++ b/pkg/internal/oas_client_gen.go @@ -21,6 +21,11 @@ import ( "github.com/ogen-go/ogen/uri" ) +func trimTrailingSlashes(u *url.URL) { + u.Path = strings.TrimRight(u.Path, "/") + u.RawPath = strings.TrimRight(u.RawPath, "/") +} + // Invoker invokes operations described by OpenAPI v3 specification. type Invoker interface { // ActionSubmissionAccepted invokes actionSubmissionAccepted operation. @@ -93,11 +98,6 @@ var _ Handler = struct { *Client }{} -func trimTrailingSlashes(u *url.URL) { - u.Path = strings.TrimRight(u.Path, "/") - u.RawPath = strings.TrimRight(u.RawPath, "/") -} - // NewClient initializes new Client defined by OAS. func NewClient(serverURL string, opts ...ClientOption) (*Client, error) { u, err := url.Parse(serverURL) diff --git a/pkg/internal/oas_parameters_gen.go b/pkg/internal/oas_parameters_gen.go index 73bf57c..7df7226 100644 --- a/pkg/internal/oas_parameters_gen.go +++ b/pkg/internal/oas_parameters_gen.go @@ -430,7 +430,7 @@ func decodeListScriptPolicyParams(args [0]string, argsEscaped bool, r *http.Requ return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -483,7 +483,7 @@ func decodeListScriptPolicyParams(args [0]string, argsEscaped bool, r *http.Requ return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -751,7 +751,7 @@ func decodeListScriptsParams(args [0]string, argsEscaped bool, r *http.Request) return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -804,7 +804,7 @@ func decodeListScriptsParams(args [0]string, argsEscaped bool, r *http.Request) return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -1156,7 +1156,7 @@ func decodeUpdateSubmissionModelParams(args [1]string, argsEscaped bool, r *http return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { @@ -1192,7 +1192,7 @@ func decodeUpdateSubmissionModelParams(args [1]string, argsEscaped bool, r *http return err } } else { - return validate.ErrFieldRequired + return err } return nil }(); err != nil { diff --git a/pkg/internal/oas_router_gen.go b/pkg/internal/oas_router_gen.go index ff71033..936afff 100644 --- a/pkg/internal/oas_router_gen.go +++ b/pkg/internal/oas_router_gen.go @@ -50,7 +50,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '/': // Prefix: "/s" - origElem := elem + if l := len("/s"); len(elem) >= l && elem[0:l] == "/s" { elem = elem[l:] } else { @@ -62,7 +62,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case 'c': // Prefix: "cript" - origElem := elem + if l := len("cript"); len(elem) >= l && elem[0:l] == "cript" { elem = elem[l:] } else { @@ -74,7 +74,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '-': // Prefix: "-policy" - origElem := elem + if l := len("-policy"); len(elem) >= l && elem[0:l] == "-policy" { elem = elem[l:] } else { @@ -95,9 +95,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 's': // Prefix: "s" - origElem := elem + if l := len("s"); len(elem) >= l && elem[0:l] == "s" { elem = elem[l:] } else { @@ -118,7 +117,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -126,7 +125,11 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } // Param: "ScriptID" - // Leaf parameter + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } args[0] = elem elem = "" @@ -144,15 +147,12 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem } - elem = origElem } - elem = origElem case 'u': // Prefix: "ubmissions/" - origElem := elem + if l := len("ubmissions/"); len(elem) >= l && elem[0:l] == "ubmissions/" { elem = elem[l:] } else { @@ -173,7 +173,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -185,7 +185,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case 'm': // Prefix: "model" - origElem := elem + if l := len("model"); len(elem) >= l && elem[0:l] == "model" { elem = elem[l:] } else { @@ -206,9 +206,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 's': // Prefix: "status/validator-" - origElem := elem + if l := len("status/validator-"); len(elem) >= l && elem[0:l] == "status/validator-" { elem = elem[l:] } else { @@ -220,7 +219,7 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { } switch elem[0] { case 'f': // Prefix: "failed" - origElem := elem + if l := len("failed"); len(elem) >= l && elem[0:l] == "failed" { elem = elem[l:] } else { @@ -241,9 +240,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 'u': // Prefix: "uploaded" - origElem := elem + if l := len("uploaded"); len(elem) >= l && elem[0:l] == "uploaded" { elem = elem[l:] } else { @@ -264,9 +262,8 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem case 'v': // Prefix: "validated" - origElem := elem + if l := len("validated"); len(elem) >= l && elem[0:l] == "validated" { elem = elem[l:] } else { @@ -287,19 +284,14 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } } s.notFound(w, r) @@ -381,7 +373,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '/': // Prefix: "/s" - origElem := elem + if l := len("/s"); len(elem) >= l && elem[0:l] == "/s" { elem = elem[l:] } else { @@ -393,7 +385,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case 'c': // Prefix: "cript" - origElem := elem + if l := len("cript"); len(elem) >= l && elem[0:l] == "cript" { elem = elem[l:] } else { @@ -405,7 +397,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '-': // Prefix: "-policy" - origElem := elem + if l := len("-policy"); len(elem) >= l && elem[0:l] == "-policy" { elem = elem[l:] } else { @@ -436,9 +428,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 's': // Prefix: "s" - origElem := elem + if l := len("s"); len(elem) >= l && elem[0:l] == "s" { elem = elem[l:] } else { @@ -469,7 +460,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -477,7 +468,11 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } // Param: "ScriptID" - // Leaf parameter + // Leaf parameter, slashes are prohibited + idx := strings.IndexByte(elem, '/') + if idx >= 0 { + break + } args[0] = elem elem = "" @@ -497,15 +492,12 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem } - elem = origElem } - elem = origElem case 'u': // Prefix: "ubmissions/" - origElem := elem + if l := len("ubmissions/"); len(elem) >= l && elem[0:l] == "ubmissions/" { elem = elem[l:] } else { @@ -526,7 +518,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case '/': // Prefix: "/" - origElem := elem + if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { @@ -538,7 +530,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case 'm': // Prefix: "model" - origElem := elem + if l := len("model"); len(elem) >= l && elem[0:l] == "model" { elem = elem[l:] } else { @@ -561,9 +553,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 's': // Prefix: "status/validator-" - origElem := elem + if l := len("status/validator-"); len(elem) >= l && elem[0:l] == "status/validator-" { elem = elem[l:] } else { @@ -575,7 +566,7 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } switch elem[0] { case 'f': // Prefix: "failed" - origElem := elem + if l := len("failed"); len(elem) >= l && elem[0:l] == "failed" { elem = elem[l:] } else { @@ -598,9 +589,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 'u': // Prefix: "uploaded" - origElem := elem + if l := len("uploaded"); len(elem) >= l && elem[0:l] == "uploaded" { elem = elem[l:] } else { @@ -623,9 +613,8 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem case 'v': // Prefix: "validated" - origElem := elem + if l := len("validated"); len(elem) >= l && elem[0:l] == "validated" { elem = elem[l:] } else { @@ -648,19 +637,14 @@ func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { } } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } - elem = origElem } } return r, false