Codevault initial commit

This commit is contained in:
2026-08-16 16:23:14 +03:00
commit 6ee80f1c8f
47 changed files with 3177 additions and 0 deletions

363
internal/api/generated.go Normal file
View File

@@ -0,0 +1,363 @@
// Package api provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.1 DO NOT EDIT.
package api
import (
"bytes"
"compress/gzip"
"context"
"encoding/base64"
"encoding/json"
"fmt"
"net/http"
"net/url"
"path"
"strings"
"github.com/getkin/kin-openapi/openapi3"
"github.com/gin-gonic/gin"
strictgin "github.com/oapi-codegen/runtime/strictmiddleware/gin"
)
const (
BasicAuthScopes = "basicAuth.Scopes"
)
// GetValueRequest defines model for GetValueRequest.
type GetValueRequest struct {
Code string `json:"code"`
}
// GetValueResponse defines model for GetValueResponse.
type GetValueResponse struct {
Value string `json:"value"`
}
// SetValueRequest defines model for SetValueRequest.
type SetValueRequest struct {
Code string `json:"code"`
Value string `json:"value"`
}
// GetValueJSONRequestBody defines body for GetValue for application/json ContentType.
type GetValueJSONRequestBody = GetValueRequest
// SetValueJSONRequestBody defines body for SetValue for application/json ContentType.
type SetValueJSONRequestBody = SetValueRequest
// ServerInterface represents all server handlers.
type ServerInterface interface {
// (POST /api/v1/getValue)
GetValue(c *gin.Context)
// (POST /api/v1/setValue)
SetValue(c *gin.Context)
}
// ServerInterfaceWrapper converts contexts to parameters.
type ServerInterfaceWrapper struct {
Handler ServerInterface
HandlerMiddlewares []MiddlewareFunc
ErrorHandler func(*gin.Context, error, int)
}
type MiddlewareFunc func(c *gin.Context)
// GetValue operation middleware
func (siw *ServerInterfaceWrapper) GetValue(c *gin.Context) {
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.GetValue(c)
}
// SetValue operation middleware
func (siw *ServerInterfaceWrapper) SetValue(c *gin.Context) {
c.Set(BasicAuthScopes, []string{})
for _, middleware := range siw.HandlerMiddlewares {
middleware(c)
if c.IsAborted() {
return
}
}
siw.Handler.SetValue(c)
}
// GinServerOptions provides options for the Gin server.
type GinServerOptions struct {
BaseURL string
Middlewares []MiddlewareFunc
ErrorHandler func(*gin.Context, error, int)
}
// RegisterHandlers creates http.Handler with routing matching OpenAPI spec.
func RegisterHandlers(router gin.IRouter, si ServerInterface) {
RegisterHandlersWithOptions(router, si, GinServerOptions{})
}
// RegisterHandlersWithOptions creates http.Handler with additional options
func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options GinServerOptions) {
errorHandler := options.ErrorHandler
if errorHandler == nil {
errorHandler = func(c *gin.Context, err error, statusCode int) {
c.JSON(statusCode, gin.H{"msg": err.Error()})
}
}
wrapper := ServerInterfaceWrapper{
Handler: si,
HandlerMiddlewares: options.Middlewares,
ErrorHandler: errorHandler,
}
router.POST(options.BaseURL+"/api/v1/getValue", wrapper.GetValue)
router.POST(options.BaseURL+"/api/v1/setValue", wrapper.SetValue)
}
type GetValueRequestObject struct {
Body *GetValueJSONRequestBody
}
type GetValueResponseObject interface {
VisitGetValueResponse(w http.ResponseWriter) error
}
type GetValue200JSONResponse GetValueResponse
func (response GetValue200JSONResponse) VisitGetValueResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type GetValue400Response struct {
}
func (response GetValue400Response) VisitGetValueResponse(w http.ResponseWriter) error {
w.WriteHeader(400)
return nil
}
type GetValue404Response struct {
}
func (response GetValue404Response) VisitGetValueResponse(w http.ResponseWriter) error {
w.WriteHeader(404)
return nil
}
type SetValueRequestObject struct {
Body *SetValueJSONRequestBody
}
type SetValueResponseObject interface {
VisitSetValueResponse(w http.ResponseWriter) error
}
type SetValue204Response struct {
}
func (response SetValue204Response) VisitSetValueResponse(w http.ResponseWriter) error {
w.WriteHeader(204)
return nil
}
type SetValue400Response struct {
}
func (response SetValue400Response) VisitSetValueResponse(w http.ResponseWriter) error {
w.WriteHeader(400)
return nil
}
type SetValue401Response struct {
}
func (response SetValue401Response) VisitSetValueResponse(w http.ResponseWriter) error {
w.WriteHeader(401)
return nil
}
// StrictServerInterface represents all server handlers.
type StrictServerInterface interface {
// (POST /api/v1/getValue)
GetValue(ctx context.Context, request GetValueRequestObject) (GetValueResponseObject, error)
// (POST /api/v1/setValue)
SetValue(ctx context.Context, request SetValueRequestObject) (SetValueResponseObject, error)
}
type StrictHandlerFunc = strictgin.StrictGinHandlerFunc
type StrictMiddlewareFunc = strictgin.StrictGinMiddlewareFunc
func NewStrictHandler(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc) ServerInterface {
return &strictHandler{ssi: ssi, middlewares: middlewares}
}
type strictHandler struct {
ssi StrictServerInterface
middlewares []StrictMiddlewareFunc
}
// GetValue operation middleware
func (sh *strictHandler) GetValue(ctx *gin.Context) {
var request GetValueRequestObject
var body GetValueJSONRequestBody
if err := ctx.ShouldBindJSON(&body); err != nil {
ctx.Status(http.StatusBadRequest)
ctx.Error(err)
return
}
request.Body = &body
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetValue(ctx, request.(GetValueRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetValue")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetValueResponseObject); ok {
if err := validResponse.VisitGetValueResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// SetValue operation middleware
func (sh *strictHandler) SetValue(ctx *gin.Context) {
var request SetValueRequestObject
var body SetValueJSONRequestBody
if err := ctx.ShouldBindJSON(&body); err != nil {
ctx.Status(http.StatusBadRequest)
ctx.Error(err)
return
}
request.Body = &body
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.SetValue(ctx, request.(SetValueRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "SetValue")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(SetValueResponseObject); ok {
if err := validResponse.VisitSetValueResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"H4sIAAAAAAAC/7STwW7bMAyGX8XgdjRiZ+3Jt26HIYcBwwL0EuSgSEzCwhVVkQ4QFH73QZKTLcuKbgV6",
"siH95E9+pJ7B8mNgj14FumcQu8dHk3+/ot6bfsAf+DSgaDoKkQNGJcwCyw7TV48BoQPRSH4H41hDxKeB",
"IjroVkW1rk8q3jygVRjr3/JLYC94bXBI1687FNnfLJZvbKH+V+scX79YwViDoB0i6XGZwBbTjRGyd4Pu",
"z8BTTD6Fc4q9aoAxZSC/5VwJaZ9uvrDDezP0Wt19XyRzjELsoYP5rJ21qXoO6E0g6OBm1s5uoIZgdJ/N",
"GxOoOcyb3YQmM+HCJpExSuwXDrrzfKC0jKKf2R0LNa/oc4gJoSebg5oHSVWcdij9fYy4hQ4+NL+WrJk2",
"rPlzvcZLthoHzAdlOXLtn9r2Heyn7cv+DsVGClp4ZkG15cG7RPW22F9qFv5genLVhKjaJEZZfHstLgk9",
"6ylpNj2NRF4dyfJ9R7J8y0hebFOUU9j/g5tfi7+RCPldxbGiKc5GdOiVTC8XDw261cUTW63HdeL8MwAA",
"//98/iCR6gQAAA==",
}
// 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: %w", err)
}
zr, err := gzip.NewReader(bytes.NewReader(zipped))
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", err)
}
var buf bytes.Buffer
_, err = buf.ReadFrom(zr)
if err != nil {
return nil, fmt.Errorf("error decompressing spec: %w", 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) {
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) {
resolvePath := PathToRawSpec("")
loader := openapi3.NewLoader()
loader.IsExternalRefsAllowed = true
loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
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
}