// Code generated by ogen, DO NOT EDIT. package gen import ( "net/http" "net/url" "strings" "github.com/ogen-go/ogen/uri" ) var ( rn3AllowedHeaders = map[string]string{ "GET": "Authorization", "POST": "Authorization,Content-Type,Idempotence-Key", } rn2AllowedHeaders = map[string]string{ "GET": "Authorization", } rn5AllowedHeaders = map[string]string{ "GET": "Authorization", } rn8AllowedHeaders = map[string]string{ "POST": "Authorization,Content-Type,Idempotence-Key", } rn7AllowedHeaders = map[string]string{ "GET": "Authorization", } rn10AllowedHeaders = map[string]string{ "GET": "Authorization", "POST": "Authorization,Content-Type,Idempotence-Key", } rn12AllowedHeaders = map[string]string{ "GET": "Authorization", } rn13AllowedHeaders = map[string]string{ "POST": "Authorization,Idempotence-Key", } rn15AllowedHeaders = map[string]string{ "POST": "Authorization,Content-Type,Idempotence-Key", } rn17AllowedHeaders = map[string]string{ "GET": "Authorization", "POST": "Authorization,Content-Type,Idempotence-Key", } rn20AllowedHeaders = map[string]string{ "GET": "Authorization", } rn19AllowedHeaders = map[string]string{ "GET": "Authorization", } rn24AllowedHeaders = map[string]string{ "POST": "Authorization,Content-Type,Idempotence-Key", } rn23AllowedHeaders = map[string]string{ "GET": "Authorization", } rn25AllowedHeaders = map[string]string{ "GET": "Authorization", "POST": "Authorization,Content-Type,Idempotence-Key", } rn27AllowedHeaders = map[string]string{ "GET": "Authorization", } rn29AllowedHeaders = map[string]string{ "GET": "Authorization", "POST": "Authorization,Content-Type,Idempotence-Key", } rn31AllowedHeaders = map[string]string{ "GET": "Authorization", } rn32AllowedHeaders = map[string]string{ "GET": "Authorization", } rn33AllowedHeaders = map[string]string{ "GET": "Authorization", "POST": "Authorization,Content-Type,Idempotence-Key", } rn35AllowedHeaders = map[string]string{ "DELETE": "Authorization", } ) func (s *Server) cutPrefix(path string) (string, bool) { prefix := s.cfg.Prefix if prefix == "" { return path, true } if !strings.HasPrefix(path, prefix) { // Prefix doesn't match. return "", false } // Cut prefix from the path. return strings.TrimPrefix(path, prefix), true } // ServeHTTP serves http request as defined by OpenAPI v3 specification, // calling handler that matches the path or returning not found error. func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { elem := r.URL.Path elemIsEscaped := false if rawPath := r.URL.RawPath; rawPath != "" { if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { elem = normalized elemIsEscaped = strings.ContainsRune(elem, '%') } } elem, ok := s.cutPrefix(elem) if !ok || len(elem) == 0 { s.notFound(w, r) return } args := [1]string{} // Static code generated router with unwrapped path search. switch { default: if len(elem) == 0 { break } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'd': // Prefix: "deals" if l := len("deals"); len(elem) >= l && elem[0:l] == "deals" { elem = elem[l:] } else { break } if len(elem) == 0 { switch r.Method { case "GET": s.handleDealsGetRequest([0]string{}, elemIsEscaped, w, r) case "POST": s.handleDealsPostRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET,POST", allowedHeaders: rn3AllowedHeaders, acceptPost: "application/json", acceptPatch: "", }) } return } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "deal_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch r.Method { case "GET": s.handleDealsDealIDGetRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn2AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } } case 'm': // Prefix: "me" if l := len("me"); len(elem) >= l && elem[0:l] == "me" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch r.Method { case "GET": s.handleMeGetRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn5AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } case 'p': // Prefix: "p" if l := len("p"); len(elem) >= l && elem[0:l] == "p" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'a': // Prefix: "ay" if l := len("ay"); len(elem) >= l && elem[0:l] == "ay" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'm': // Prefix: "ment" if l := len("ment"); len(elem) >= l && elem[0:l] == "ment" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case '_': // Prefix: "_methods" if l := len("_methods"); len(elem) >= l && elem[0:l] == "_methods" { elem = elem[l:] } else { break } if len(elem) == 0 { switch r.Method { case "POST": s.handlePaymentMethodsPostRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "POST", allowedHeaders: rn8AllowedHeaders, acceptPost: "application/json", acceptPatch: "", }) } return } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "payment_method_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch r.Method { case "GET": s.handlePaymentMethodsPaymentMethodIDGetRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn7AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } } case 's': // Prefix: "s" if l := len("s"); len(elem) >= l && elem[0:l] == "s" { elem = elem[l:] } else { break } if len(elem) == 0 { switch r.Method { case "GET": s.handlePaymentsGetRequest([0]string{}, elemIsEscaped, w, r) case "POST": s.handlePaymentsPostRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET,POST", allowedHeaders: rn10AllowedHeaders, acceptPost: "application/json", acceptPatch: "", }) } return } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "payment_id" // Match until "/" idx := strings.IndexByte(elem, '/') if idx < 0 { idx = len(elem) } args[0] = elem[:idx] elem = elem[idx:] if len(elem) == 0 { switch r.Method { case "GET": s.handlePaymentsPaymentIDGetRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn12AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } switch elem[0] { case '/': // Prefix: "/ca" if l := len("/ca"); len(elem) >= l && elem[0:l] == "/ca" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'n': // Prefix: "ncel" if l := len("ncel"); len(elem) >= l && elem[0:l] == "ncel" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch r.Method { case "POST": s.handlePaymentsPaymentIDCancelPostRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "POST", allowedHeaders: rn13AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } case 'p': // Prefix: "pture" if l := len("pture"); len(elem) >= l && elem[0:l] == "pture" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch r.Method { case "POST": s.handlePaymentsPaymentIDCapturePostRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "POST", allowedHeaders: rn15AllowedHeaders, acceptPost: "application/json", acceptPatch: "", }) } return } } } } } case 'o': // Prefix: "outs" if l := len("outs"); len(elem) >= l && elem[0:l] == "outs" { elem = elem[l:] } else { break } if len(elem) == 0 { switch r.Method { case "GET": s.handlePayoutsGetRequest([0]string{}, elemIsEscaped, w, r) case "POST": s.handlePayoutsPostRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET,POST", allowedHeaders: rn17AllowedHeaders, acceptPost: "application/json", acceptPatch: "", }) } return } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 's': // Prefix: "search" origElem := elem if l := len("search"); len(elem) >= l && elem[0:l] == "search" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch r.Method { case "GET": s.handlePayoutsSearchGetRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn20AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } elem = origElem } // Param: "payout_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch r.Method { case "GET": s.handlePayoutsPayoutIDGetRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn19AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } } } case 'e': // Prefix: "ersonal_data" if l := len("ersonal_data"); len(elem) >= l && elem[0:l] == "ersonal_data" { elem = elem[l:] } else { break } if len(elem) == 0 { switch r.Method { case "POST": s.handlePersonalDataPostRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "POST", allowedHeaders: rn24AllowedHeaders, acceptPost: "application/json", acceptPatch: "", }) } return } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "personal_data_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch r.Method { case "GET": s.handlePersonalDataPersonalDataIDGetRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn23AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } } } case 'r': // Prefix: "re" if l := len("re"); len(elem) >= l && elem[0:l] == "re" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'c': // Prefix: "ceipts" if l := len("ceipts"); len(elem) >= l && elem[0:l] == "ceipts" { elem = elem[l:] } else { break } if len(elem) == 0 { switch r.Method { case "GET": s.handleReceiptsGetRequest([0]string{}, elemIsEscaped, w, r) case "POST": s.handleReceiptsPostRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET,POST", allowedHeaders: rn25AllowedHeaders, acceptPost: "application/json", acceptPatch: "", }) } return } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "receipt_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch r.Method { case "GET": s.handleReceiptsReceiptIDGetRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn27AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } } case 'f': // Prefix: "funds" if l := len("funds"); len(elem) >= l && elem[0:l] == "funds" { elem = elem[l:] } else { break } if len(elem) == 0 { switch r.Method { case "GET": s.handleRefundsGetRequest([0]string{}, elemIsEscaped, w, r) case "POST": s.handleRefundsPostRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET,POST", allowedHeaders: rn29AllowedHeaders, acceptPost: "application/json", acceptPatch: "", }) } return } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "refund_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch r.Method { case "GET": s.handleRefundsRefundIDGetRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn31AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } } } case 's': // Prefix: "sbp_banks" if l := len("sbp_banks"); len(elem) >= l && elem[0:l] == "sbp_banks" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch r.Method { case "GET": s.handleSbpBanksGetRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET", allowedHeaders: rn32AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } case 'w': // Prefix: "webhooks" if l := len("webhooks"); len(elem) >= l && elem[0:l] == "webhooks" { elem = elem[l:] } else { break } if len(elem) == 0 { switch r.Method { case "GET": s.handleWebhooksGetRequest([0]string{}, elemIsEscaped, w, r) case "POST": s.handleWebhooksPostRequest([0]string{}, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "GET,POST", allowedHeaders: rn33AllowedHeaders, acceptPost: "application/json", acceptPatch: "", }) } return } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "webhook_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch r.Method { case "DELETE": s.handleWebhooksWebhookIDDeleteRequest([1]string{ args[0], }, elemIsEscaped, w, r) default: s.notAllowed(w, r, notAllowedParams{ allowedMethods: "DELETE", allowedHeaders: rn35AllowedHeaders, acceptPost: "", acceptPatch: "", }) } return } } } } } s.notFound(w, r) } // Route is route object. type Route struct { name string summary string operationID string operationGroup string pathPattern string count int args [1]string } // Name returns ogen operation name. // // It is guaranteed to be unique and not empty. func (r Route) Name() string { return r.name } // Summary returns OpenAPI summary. func (r Route) Summary() string { return r.summary } // OperationID returns OpenAPI operationId. func (r Route) OperationID() string { return r.operationID } // OperationGroup returns the x-ogen-operation-group value. func (r Route) OperationGroup() string { return r.operationGroup } // PathPattern returns OpenAPI path. func (r Route) PathPattern() string { return r.pathPattern } // Args returns parsed arguments. func (r Route) Args() []string { return r.args[:r.count] } // FindRoute finds Route for given method and path. // // Note: this method does not unescape path or handle reserved characters in path properly. Use FindPath instead. func (s *Server) FindRoute(method, path string) (Route, bool) { return s.FindPath(method, &url.URL{Path: path}) } // FindPath finds Route for given method and URL. func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { var ( elem = u.Path args = r.args ) if rawPath := u.RawPath; rawPath != "" { if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { elem = normalized } defer func() { for i, arg := range r.args[:r.count] { if unescaped, err := url.PathUnescape(arg); err == nil { r.args[i] = unescaped } } }() } elem, ok := s.cutPrefix(elem) if !ok { return r, false } // Static code generated router with unwrapped path search. switch { default: if len(elem) == 0 { break } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'd': // Prefix: "deals" if l := len("deals"); len(elem) >= l && elem[0:l] == "deals" { elem = elem[l:] } else { break } if len(elem) == 0 { switch method { case "GET": r.name = DealsGetOperation r.summary = "Список сделок" r.operationID = "" r.operationGroup = "" r.pathPattern = "/deals" r.args = args r.count = 0 return r, true case "POST": r.name = DealsPostOperation r.summary = "Создание сделки" r.operationID = "" r.operationGroup = "" r.pathPattern = "/deals" r.args = args r.count = 0 return r, true default: return } } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "deal_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch method { case "GET": r.name = DealsDealIDGetOperation r.summary = "Информация о сделке" r.operationID = "" r.operationGroup = "" r.pathPattern = "/deals/{deal_id}" r.args = args r.count = 1 return r, true default: return } } } case 'm': // Prefix: "me" if l := len("me"); len(elem) >= l && elem[0:l] == "me" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch method { case "GET": r.name = MeGetOperation r.summary = "Информация о настройках магазина или шлюза" r.operationID = "" r.operationGroup = "" r.pathPattern = "/me" r.args = args r.count = 0 return r, true default: return } } case 'p': // Prefix: "p" if l := len("p"); len(elem) >= l && elem[0:l] == "p" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'a': // Prefix: "ay" if l := len("ay"); len(elem) >= l && elem[0:l] == "ay" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'm': // Prefix: "ment" if l := len("ment"); len(elem) >= l && elem[0:l] == "ment" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case '_': // Prefix: "_methods" if l := len("_methods"); len(elem) >= l && elem[0:l] == "_methods" { elem = elem[l:] } else { break } if len(elem) == 0 { switch method { case "POST": r.name = PaymentMethodsPostOperation r.summary = "Создание способа оплаты" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payment_methods" r.args = args r.count = 0 return r, true default: return } } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "payment_method_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch method { case "GET": r.name = PaymentMethodsPaymentMethodIDGetOperation r.summary = "Информация о способе оплаты" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payment_methods/{payment_method_id}" r.args = args r.count = 1 return r, true default: return } } } case 's': // Prefix: "s" if l := len("s"); len(elem) >= l && elem[0:l] == "s" { elem = elem[l:] } else { break } if len(elem) == 0 { switch method { case "GET": r.name = PaymentsGetOperation r.summary = "List payments" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payments" r.args = args r.count = 0 return r, true case "POST": r.name = PaymentsPostOperation r.summary = "Create a payment" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payments" r.args = args r.count = 0 return r, true default: return } } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "payment_id" // Match until "/" idx := strings.IndexByte(elem, '/') if idx < 0 { idx = len(elem) } args[0] = elem[:idx] elem = elem[idx:] if len(elem) == 0 { switch method { case "GET": r.name = PaymentsPaymentIDGetOperation r.summary = "Get payment information" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payments/{payment_id}" r.args = args r.count = 1 return r, true default: return } } switch elem[0] { case '/': // Prefix: "/ca" if l := len("/ca"); len(elem) >= l && elem[0:l] == "/ca" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'n': // Prefix: "ncel" if l := len("ncel"); len(elem) >= l && elem[0:l] == "ncel" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch method { case "POST": r.name = PaymentsPaymentIDCancelPostOperation r.summary = "Cancel a payment" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payments/{payment_id}/cancel" r.args = args r.count = 1 return r, true default: return } } case 'p': // Prefix: "pture" if l := len("pture"); len(elem) >= l && elem[0:l] == "pture" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch method { case "POST": r.name = PaymentsPaymentIDCapturePostOperation r.summary = "Capture a payment" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payments/{payment_id}/capture" r.args = args r.count = 1 return r, true default: return } } } } } } case 'o': // Prefix: "outs" if l := len("outs"); len(elem) >= l && elem[0:l] == "outs" { elem = elem[l:] } else { break } if len(elem) == 0 { switch method { case "GET": r.name = PayoutsGetOperation r.summary = "List of payouts" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payouts" r.args = args r.count = 0 return r, true case "POST": r.name = PayoutsPostOperation r.summary = "Создание выплаты" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payouts" r.args = args r.count = 0 return r, true default: return } } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 's': // Prefix: "search" origElem := elem if l := len("search"); len(elem) >= l && elem[0:l] == "search" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch method { case "GET": r.name = PayoutsSearchGetOperation r.summary = "Search for payouts" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payouts/search" r.args = args r.count = 0 return r, true default: return } } elem = origElem } // Param: "payout_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch method { case "GET": r.name = PayoutsPayoutIDGetOperation r.summary = "Информация о выплате" r.operationID = "" r.operationGroup = "" r.pathPattern = "/payouts/{payout_id}" r.args = args r.count = 1 return r, true default: return } } } } case 'e': // Prefix: "ersonal_data" if l := len("ersonal_data"); len(elem) >= l && elem[0:l] == "ersonal_data" { elem = elem[l:] } else { break } if len(elem) == 0 { switch method { case "POST": r.name = PersonalDataPostOperation r.summary = "Создание персональных данных" r.operationID = "" r.operationGroup = "" r.pathPattern = "/personal_data" r.args = args r.count = 0 return r, true default: return } } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "personal_data_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch method { case "GET": r.name = PersonalDataPersonalDataIDGetOperation r.summary = "Информация о персональных данных" r.operationID = "" r.operationGroup = "" r.pathPattern = "/personal_data/{personal_data_id}" 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" { elem = elem[l:] } else { break } if len(elem) == 0 { break } switch elem[0] { case 'c': // Prefix: "ceipts" if l := len("ceipts"); len(elem) >= l && elem[0:l] == "ceipts" { elem = elem[l:] } else { break } if len(elem) == 0 { switch method { case "GET": r.name = ReceiptsGetOperation r.summary = "Список чеков" r.operationID = "" r.operationGroup = "" r.pathPattern = "/receipts" r.args = args r.count = 0 return r, true case "POST": r.name = ReceiptsPostOperation r.summary = "Создание чека" r.operationID = "" r.operationGroup = "" r.pathPattern = "/receipts" r.args = args r.count = 0 return r, true default: return } } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "receipt_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch method { case "GET": r.name = ReceiptsReceiptIDGetOperation r.summary = "Информация о чеке" r.operationID = "" r.operationGroup = "" r.pathPattern = "/receipts/{receipt_id}" r.args = args r.count = 1 return r, true default: return } } } case 'f': // Prefix: "funds" if l := len("funds"); len(elem) >= l && elem[0:l] == "funds" { elem = elem[l:] } else { break } if len(elem) == 0 { switch method { case "GET": r.name = RefundsGetOperation r.summary = "Список возвратов" r.operationID = "" r.operationGroup = "" r.pathPattern = "/refunds" r.args = args r.count = 0 return r, true case "POST": r.name = RefundsPostOperation r.summary = "Создание возврата" r.operationID = "" r.operationGroup = "" r.pathPattern = "/refunds" r.args = args r.count = 0 return r, true default: return } } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "refund_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch method { case "GET": r.name = RefundsRefundIDGetOperation r.summary = "Информация о возврате" r.operationID = "" r.operationGroup = "" r.pathPattern = "/refunds/{refund_id}" r.args = args r.count = 1 return r, true default: return } } } } case 's': // Prefix: "sbp_banks" if l := len("sbp_banks"); len(elem) >= l && elem[0:l] == "sbp_banks" { elem = elem[l:] } else { break } if len(elem) == 0 { // Leaf node. switch method { case "GET": r.name = SbpBanksGetOperation r.summary = "Список участников СБП" r.operationID = "" r.operationGroup = "" r.pathPattern = "/sbp_banks" r.args = args r.count = 0 return r, true default: return } } case 'w': // Prefix: "webhooks" if l := len("webhooks"); len(elem) >= l && elem[0:l] == "webhooks" { elem = elem[l:] } else { break } if len(elem) == 0 { switch method { case "GET": r.name = WebhooksGetOperation r.summary = "Список созданных webhook" r.operationID = "" r.operationGroup = "" r.pathPattern = "/webhooks" r.args = args r.count = 0 return r, true case "POST": r.name = WebhooksPostOperation r.summary = "Создание webhook" r.operationID = "" r.operationGroup = "" r.pathPattern = "/webhooks" r.args = args r.count = 0 return r, true default: return } } switch elem[0] { case '/': // Prefix: "/" if l := len("/"); len(elem) >= l && elem[0:l] == "/" { elem = elem[l:] } else { break } // Param: "webhook_id" // Leaf parameter, slashes are prohibited idx := strings.IndexByte(elem, '/') if idx >= 0 { break } args[0] = elem elem = "" if len(elem) == 0 { // Leaf node. switch method { case "DELETE": r.name = WebhooksWebhookIDDeleteOperation r.summary = "Удаление webhook" r.operationID = "" r.operationGroup = "" r.pathPattern = "/webhooks/{webhook_id}" r.args = args r.count = 1 return r, true default: return } } } } } } return r, false }