// 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}) SetAccountVerificationStatus(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 // Изменить валюту кошелька // (PATCH /wallet) ChangeCurrency(ctx echo.Context) error // Запрос на получение ссылки на оплату // (POST /wallet) RequestMoney(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 } // SetAccountVerificationStatus converts echo context to params. func (w *ServerInterfaceWrapper) SetAccountVerificationStatus(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.SetAccountVerificationStatus(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 } // 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 } // 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 } // 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.SetAccountVerificationStatus) 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.PATCH(baseURL+"/wallet", wrapper.ChangeCurrency) router.POST(baseURL+"/wallet", wrapper.RequestMoney) } // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ "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", "BwAA///Ok5KNskYAAA==", } // 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 }