// Package oapi provides primitives to interact with the openapi HTTP API. // // Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.0 DO NOT EDIT. package oapi import ( "context" "encoding/json" "fmt" "net/http" "time" "github.com/gin-gonic/gin" "github.com/oapi-codegen/runtime" strictgin "github.com/oapi-codegen/runtime/strictmiddleware/gin" openapi_types "github.com/oapi-codegen/runtime/types" ) // User defines model for User. type User struct { // AvatarId ID of the user avatar (references images table) AvatarId *int64 `json:"avatar_id"` // CreationDate Timestamp when the user was created CreationDate time.Time `json:"creation_date"` // DispName Display name DispName *string `json:"disp_name,omitempty"` // Id Unique user ID (primary key) Id *int64 `json:"id,omitempty"` // Mail User email Mail *openapi_types.Email `json:"mail,omitempty"` // Nickname Username (alphanumeric + _ or -) Nickname string `json:"nickname"` // UserDesc User description UserDesc *string `json:"user_desc,omitempty"` } // GetUsersUserIdParams defines parameters for GetUsersUserId. type GetUsersUserIdParams struct { Fields *string `form:"fields,omitempty" json:"fields,omitempty"` } // ServerInterface represents all server handlers. type ServerInterface interface { // Get user info // (GET /users/{user_id}) GetUsersUserId(c *gin.Context, userId string, params GetUsersUserIdParams) } // ServerInterfaceWrapper converts contexts to parameters. type ServerInterfaceWrapper struct { Handler ServerInterface HandlerMiddlewares []MiddlewareFunc ErrorHandler func(*gin.Context, error, int) } type MiddlewareFunc func(c *gin.Context) // GetUsersUserId operation middleware func (siw *ServerInterfaceWrapper) GetUsersUserId(c *gin.Context) { var err error // ------------- Path parameter "user_id" ------------- var userId string err = runtime.BindStyledParameterWithOptions("simple", "user_id", c.Param("user_id"), &userId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter user_id: %w", err), http.StatusBadRequest) return } // Parameter object where we will unmarshal all parameters from the context var params GetUsersUserIdParams // ------------- Optional query parameter "fields" ------------- err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), ¶ms.Fields) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest) return } for _, middleware := range siw.HandlerMiddlewares { middleware(c) if c.IsAborted() { return } } siw.Handler.GetUsersUserId(c, userId, params) } // 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.GET(options.BaseURL+"/users/:user_id", wrapper.GetUsersUserId) } type GetUsersUserIdRequestObject struct { UserId string `json:"user_id"` Params GetUsersUserIdParams } type GetUsersUserIdResponseObject interface { VisitGetUsersUserIdResponse(w http.ResponseWriter) error } type GetUsersUserId200JSONResponse User func (response GetUsersUserId200JSONResponse) VisitGetUsersUserIdResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type GetUsersUserId404Response struct { } func (response GetUsersUserId404Response) VisitGetUsersUserIdResponse(w http.ResponseWriter) error { w.WriteHeader(404) return nil } // StrictServerInterface represents all server handlers. type StrictServerInterface interface { // Get user info // (GET /users/{user_id}) GetUsersUserId(ctx context.Context, request GetUsersUserIdRequestObject) (GetUsersUserIdResponseObject, 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 } // GetUsersUserId operation middleware func (sh *strictHandler) GetUsersUserId(ctx *gin.Context, userId string, params GetUsersUserIdParams) { var request GetUsersUserIdRequestObject request.UserId = userId request.Params = params handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { return sh.ssi.GetUsersUserId(ctx, request.(GetUsersUserIdRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "GetUsersUserId") } response, err := handler(ctx, request) if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) } else if validResponse, ok := response.(GetUsersUserIdResponseObject); ok { if err := validResponse.VisitGetUsersUserIdResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { ctx.Error(fmt.Errorf("unexpected response type: %T", response)) } }