200 lines
5.8 KiB
Go
200 lines
5.8 KiB
Go
// 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))
|
|
}
|
|
}
|