// Package swagger provides primitives to interact with the openapi HTTP API. // // Code generated by github.com/deepmap/oapi-codegen version v1.12.4 DO NOT EDIT. package swagger import ( "bytes" "compress/gzip" "encoding/base64" "fmt" "net/http" "net/url" "path" "strings" "github.com/deepmap/oapi-codegen/pkg/runtime" "github.com/getkin/kin-openapi/openapi3" "github.com/labstack/echo/v4" ) // ServerInterface represents all server handlers. type ServerInterface interface { // удалить собственный аккаунт // (DELETE /account) DeleteAccount(ctx echo.Context) error // Получение текущего аккаунта юзера // (GET /account) GetAccount(ctx echo.Context) error // Отредактировать аккаунт // (PATCH /account) ChangeAccount(ctx echo.Context) error // Создать новый аккаунт // (POST /account) AddAccount(ctx echo.Context) error // Удалить аккаунт по айди // (DELETE /account/{userId}) DeleteDirectAccount(ctx echo.Context, userId string) error // Получить аккаунт по ID пользователя системы единой авторизации // (GET /account/{userId}) GetDirectAccount(ctx echo.Context, userId string) error // Выставление статуса верификации // (PATCH /account/{userId}) SetStatus(ctx echo.Context, userId string) error // списко аккаунтов с пагинацией // (GET /accounts) PaginationAccounts(ctx echo.Context, params PaginationAccountsParams) error // Удаляем из корзины тариф // (DELETE /cart) RemoveFromCart(ctx echo.Context, params RemoveFromCartParams) error // Добавляем в корзину тариф // (PATCH /cart) Add2cart(ctx echo.Context, params Add2cartParams) error // оплатить козину // (POST /cart/pay) PayCart(ctx echo.Context) error // получить список одобренных валют // (GET /currencies) GetCurrencies(ctx echo.Context) error // обновляет список одобренных валют // (PUT /currencies) UpdateCurrencies(ctx echo.Context) error // Получение лога событий связанных с аккаунтом // (GET /history) GetHistory(ctx echo.Context, params GetHistoryParams) error // Публикация лога в истории // (POST /history) Add2history(ctx echo.Context) error // Запрос на получение ссылки на оплату // (GET /wallet) RequestMoney(ctx echo.Context) error // Изменить валюту кошелька // (PATCH /wallet) ChangeCurrency(ctx echo.Context) error } // ServerInterfaceWrapper converts echo contexts to parameters. type ServerInterfaceWrapper struct { Handler ServerInterface } // DeleteAccount converts echo context to params. func (w *ServerInterfaceWrapper) DeleteAccount(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.DeleteAccount(ctx) return err } // GetAccount converts echo context to params. func (w *ServerInterfaceWrapper) GetAccount(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetAccount(ctx) return err } // ChangeAccount converts echo context to params. func (w *ServerInterfaceWrapper) ChangeAccount(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.ChangeAccount(ctx) return err } // AddAccount converts echo context to params. func (w *ServerInterfaceWrapper) AddAccount(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.AddAccount(ctx) return err } // DeleteDirectAccount converts echo context to params. func (w *ServerInterfaceWrapper) DeleteDirectAccount(ctx echo.Context) error { var err error // ------------- Path parameter "userId" ------------- var userId string err = runtime.BindStyledParameterWithLocation("simple", false, "userId", runtime.ParamLocationPath, ctx.Param("userId"), &userId) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter userId: %s", err)) } ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.DeleteDirectAccount(ctx, userId) return err } // GetDirectAccount converts echo context to params. func (w *ServerInterfaceWrapper) GetDirectAccount(ctx echo.Context) error { var err error // ------------- Path parameter "userId" ------------- var userId string err = runtime.BindStyledParameterWithLocation("simple", false, "userId", runtime.ParamLocationPath, ctx.Param("userId"), &userId) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter userId: %s", err)) } ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetDirectAccount(ctx, userId) return err } // SetStatus converts echo context to params. func (w *ServerInterfaceWrapper) SetStatus(ctx echo.Context) error { var err error // ------------- Path parameter "userId" ------------- var userId string err = runtime.BindStyledParameterWithLocation("simple", false, "userId", runtime.ParamLocationPath, ctx.Param("userId"), &userId) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter userId: %s", err)) } // Invoke the callback with all the unmarshalled arguments err = w.Handler.SetStatus(ctx, userId) return err } // PaginationAccounts converts echo context to params. func (w *ServerInterfaceWrapper) PaginationAccounts(ctx echo.Context) error { var err error // Parameter object where we will unmarshal all parameters from the context var params PaginationAccountsParams // ------------- Optional query parameter "page" ------------- err = runtime.BindQueryParameter("form", false, false, "page", ctx.QueryParams(), ¶ms.Page) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter page: %s", err)) } // ------------- Optional query parameter "limit" ------------- err = runtime.BindQueryParameter("form", false, false, "limit", ctx.QueryParams(), ¶ms.Limit) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter limit: %s", err)) } // Invoke the callback with all the unmarshalled arguments err = w.Handler.PaginationAccounts(ctx, params) return err } // RemoveFromCart converts echo context to params. func (w *ServerInterfaceWrapper) RemoveFromCart(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Parameter object where we will unmarshal all parameters from the context var params RemoveFromCartParams // ------------- Required query parameter "id" ------------- err = runtime.BindQueryParameter("form", true, true, "id", ctx.QueryParams(), ¶ms.Id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err)) } // Invoke the callback with all the unmarshalled arguments err = w.Handler.RemoveFromCart(ctx, params) return err } // Add2cart converts echo context to params. func (w *ServerInterfaceWrapper) Add2cart(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Parameter object where we will unmarshal all parameters from the context var params Add2cartParams // ------------- Required query parameter "id" ------------- err = runtime.BindQueryParameter("form", true, true, "id", ctx.QueryParams(), ¶ms.Id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err)) } // Invoke the callback with all the unmarshalled arguments err = w.Handler.Add2cart(ctx, params) return err } // PayCart converts echo context to params. func (w *ServerInterfaceWrapper) PayCart(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.PayCart(ctx) return err } // GetCurrencies converts echo context to params. func (w *ServerInterfaceWrapper) GetCurrencies(ctx echo.Context) error { var err error // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetCurrencies(ctx) return err } // UpdateCurrencies converts echo context to params. func (w *ServerInterfaceWrapper) UpdateCurrencies(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.UpdateCurrencies(ctx) return err } // GetHistory converts echo context to params. func (w *ServerInterfaceWrapper) GetHistory(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Parameter object where we will unmarshal all parameters from the context var params GetHistoryParams // ------------- Optional query parameter "page" ------------- err = runtime.BindQueryParameter("form", false, false, "page", ctx.QueryParams(), ¶ms.Page) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter page: %s", err)) } // ------------- Optional query parameter "limit" ------------- err = runtime.BindQueryParameter("form", false, false, "limit", ctx.QueryParams(), ¶ms.Limit) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter limit: %s", err)) } // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetHistory(ctx, params) return err } // Add2history converts echo context to params. func (w *ServerInterfaceWrapper) Add2history(ctx echo.Context) error { var err error // Invoke the callback with all the unmarshalled arguments err = w.Handler.Add2history(ctx) return err } // RequestMoney converts echo context to params. func (w *ServerInterfaceWrapper) RequestMoney(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.RequestMoney(ctx) return err } // ChangeCurrency converts echo context to params. func (w *ServerInterfaceWrapper) ChangeCurrency(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.ChangeCurrency(ctx) return err } // This is a simple interface which specifies echo.Route addition functions which // are present on both echo.Echo and echo.Group, since we want to allow using // either of them for path registration type EchoRouter interface { CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route } // RegisterHandlers adds each server route to the EchoRouter. func RegisterHandlers(router EchoRouter, si ServerInterface) { RegisterHandlersWithBaseURL(router, si, "") } // Registers handlers, and prepends BaseURL to the paths, so that the paths // can be served under a prefix. func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) { wrapper := ServerInterfaceWrapper{ Handler: si, } router.DELETE(baseURL+"/account", wrapper.DeleteAccount) router.GET(baseURL+"/account", wrapper.GetAccount) router.PATCH(baseURL+"/account", wrapper.ChangeAccount) router.POST(baseURL+"/account", wrapper.AddAccount) router.DELETE(baseURL+"/account/:userId", wrapper.DeleteDirectAccount) router.GET(baseURL+"/account/:userId", wrapper.GetDirectAccount) router.PATCH(baseURL+"/account/:userId", wrapper.SetStatus) router.GET(baseURL+"/accounts", wrapper.PaginationAccounts) router.DELETE(baseURL+"/cart", wrapper.RemoveFromCart) router.PATCH(baseURL+"/cart", wrapper.Add2cart) router.POST(baseURL+"/cart/pay", wrapper.PayCart) router.GET(baseURL+"/currencies", wrapper.GetCurrencies) router.PUT(baseURL+"/currencies", wrapper.UpdateCurrencies) router.GET(baseURL+"/history", wrapper.GetHistory) router.POST(baseURL+"/history", wrapper.Add2history) router.GET(baseURL+"/wallet", wrapper.RequestMoney) router.PATCH(baseURL+"/wallet", wrapper.ChangeCurrency) } // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file // or error if failed to decode func decodeSpec() ([]byte, error) { zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, "")) if err != nil { return nil, fmt.Errorf("error base64 decoding spec: %s", err) } zr, err := gzip.NewReader(bytes.NewReader(zipped)) if err != nil { return nil, fmt.Errorf("error decompressing spec: %s", err) } var buf bytes.Buffer _, err = buf.ReadFrom(zr) if err != nil { return nil, fmt.Errorf("error decompressing spec: %s", err) } return buf.Bytes(), nil } var rawSpec = decodeSpecCached() // a naive cached of a decoded swagger spec func decodeSpecCached() func() ([]byte, error) { data, err := decodeSpec() return func() ([]byte, error) { return data, err } } // Constructs a synthetic filesystem for resolving external references when loading openapi specifications. func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) { var res = make(map[string]func() ([]byte, error)) if len(pathToFile) > 0 { res[pathToFile] = rawSpec } return res } // GetSwagger returns the Swagger specification corresponding to the generated code // in this file. The external references of Swagger specification are resolved. // The logic of resolving external references is tightly connected to "import-mapping" feature. // Externally referenced files must be embedded in the corresponding golang packages. // Urls can be supported but this task was out of the scope. func GetSwagger() (swagger *openapi3.T, err error) { var resolvePath = PathToRawSpec("") loader := openapi3.NewLoader() loader.IsExternalRefsAllowed = true loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) { var pathToFile = url.String() pathToFile = path.Clean(pathToFile) getSpec, ok := resolvePath[pathToFile] if !ok { err1 := fmt.Errorf("path not found: %s", pathToFile) return nil, err1 } return getSpec() } var specData []byte specData, err = rawSpec() if err != nil { return } swagger, err = loader.LoadFromData(specData) if err != nil { return } return }