193 lines
5.6 KiB
Go
193 lines
5.6 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"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/oapi-codegen/runtime"
|
|
strictgin "github.com/oapi-codegen/runtime/strictmiddleware/gin"
|
|
)
|
|
|
|
// Title defines model for Title.
|
|
type Title map[string]interface{}
|
|
|
|
// GetTitleParams defines parameters for GetTitle.
|
|
type GetTitleParams struct {
|
|
Query *string `form:"query,omitempty" json:"query,omitempty"`
|
|
Limit *int `form:"limit,omitempty" json:"limit,omitempty"`
|
|
Offset *int `form:"offset,omitempty" json:"offset,omitempty"`
|
|
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
|
|
}
|
|
|
|
// ServerInterface represents all server handlers.
|
|
type ServerInterface interface {
|
|
// Get titles
|
|
// (GET /title)
|
|
GetTitle(c *gin.Context, params GetTitleParams)
|
|
}
|
|
|
|
// ServerInterfaceWrapper converts contexts to parameters.
|
|
type ServerInterfaceWrapper struct {
|
|
Handler ServerInterface
|
|
HandlerMiddlewares []MiddlewareFunc
|
|
ErrorHandler func(*gin.Context, error, int)
|
|
}
|
|
|
|
type MiddlewareFunc func(c *gin.Context)
|
|
|
|
// GetTitle operation middleware
|
|
func (siw *ServerInterfaceWrapper) GetTitle(c *gin.Context) {
|
|
|
|
var err error
|
|
|
|
// Parameter object where we will unmarshal all parameters from the context
|
|
var params GetTitleParams
|
|
|
|
// ------------- Optional query parameter "query" -------------
|
|
|
|
err = runtime.BindQueryParameter("form", true, false, "query", c.Request.URL.Query(), ¶ms.Query)
|
|
if err != nil {
|
|
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter query: %w", err), http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
// ------------- Optional query parameter "limit" -------------
|
|
|
|
err = runtime.BindQueryParameter("form", true, false, "limit", c.Request.URL.Query(), ¶ms.Limit)
|
|
if err != nil {
|
|
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter limit: %w", err), http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
// ------------- Optional query parameter "offset" -------------
|
|
|
|
err = runtime.BindQueryParameter("form", true, false, "offset", c.Request.URL.Query(), ¶ms.Offset)
|
|
if err != nil {
|
|
siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter offset: %w", err), http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
// ------------- 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.GetTitle(c, 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+"/title", wrapper.GetTitle)
|
|
}
|
|
|
|
type GetTitleRequestObject struct {
|
|
Params GetTitleParams
|
|
}
|
|
|
|
type GetTitleResponseObject interface {
|
|
VisitGetTitleResponse(w http.ResponseWriter) error
|
|
}
|
|
|
|
type GetTitle200JSONResponse []Title
|
|
|
|
func (response GetTitle200JSONResponse) VisitGetTitleResponse(w http.ResponseWriter) error {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(200)
|
|
|
|
return json.NewEncoder(w).Encode(response)
|
|
}
|
|
|
|
type GetTitle204Response struct {
|
|
}
|
|
|
|
func (response GetTitle204Response) VisitGetTitleResponse(w http.ResponseWriter) error {
|
|
w.WriteHeader(204)
|
|
return nil
|
|
}
|
|
|
|
// StrictServerInterface represents all server handlers.
|
|
type StrictServerInterface interface {
|
|
// Get titles
|
|
// (GET /title)
|
|
GetTitle(ctx context.Context, request GetTitleRequestObject) (GetTitleResponseObject, 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
|
|
}
|
|
|
|
// GetTitle operation middleware
|
|
func (sh *strictHandler) GetTitle(ctx *gin.Context, params GetTitleParams) {
|
|
var request GetTitleRequestObject
|
|
|
|
request.Params = params
|
|
|
|
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
|
|
return sh.ssi.GetTitle(ctx, request.(GetTitleRequestObject))
|
|
}
|
|
for _, middleware := range sh.middlewares {
|
|
handler = middleware(handler, "GetTitle")
|
|
}
|
|
|
|
response, err := handler(ctx, request)
|
|
|
|
if err != nil {
|
|
ctx.Error(err)
|
|
ctx.Status(http.StatusInternalServerError)
|
|
} else if validResponse, ok := response.(GetTitleResponseObject); ok {
|
|
if err := validResponse.VisitGetTitleResponse(ctx.Writer); err != nil {
|
|
ctx.Error(err)
|
|
}
|
|
} else if response != nil {
|
|
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
|
|
}
|
|
}
|