// 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" ) // Defines values for ReleaseSeason. const ( Fall ReleaseSeason = "fall" Spring ReleaseSeason = "spring" Summer ReleaseSeason = "summer" Winter ReleaseSeason = "winter" ) // Defines values for StorageType. const ( Local StorageType = "local" S3 StorageType = "s3" ) // Defines values for TitleSort. const ( Id TitleSort = "id" Rating TitleSort = "rating" Views TitleSort = "views" Year TitleSort = "year" ) // Defines values for TitleStatus. const ( TitleStatusFinished TitleStatus = "finished" TitleStatusOngoing TitleStatus = "ongoing" TitleStatusPlanned TitleStatus = "planned" ) // Defines values for UserTitleStatus. const ( UserTitleStatusDropped UserTitleStatus = "dropped" UserTitleStatusFinished UserTitleStatus = "finished" UserTitleStatusInProgress UserTitleStatus = "in-progress" UserTitleStatusPlanned UserTitleStatus = "planned" ) // CursorObj defines model for CursorObj. type CursorObj struct { Id int64 `json:"id"` Param *string `json:"param,omitempty"` } // Image defines model for Image. type Image struct { Id *int64 `json:"id,omitempty"` ImagePath *string `json:"image_path,omitempty"` // StorageType Image storage type StorageType *StorageType `json:"storage_type,omitempty"` } // ReleaseSeason Title release season type ReleaseSeason string // StorageType Image storage type type StorageType string // Studio defines model for Studio. type Studio struct { Description *string `json:"description,omitempty"` Id int64 `json:"id"` Name string `json:"name"` Poster *Image `json:"poster,omitempty"` } // Tag A localized tag: keys are language codes (ISO 639-1), values are tag names type Tag map[string]string // Tags Array of localized tags type Tags = []Tag // Title defines model for Title. type Title struct { EpisodesAired *int32 `json:"episodes_aired,omitempty"` EpisodesAll *int32 `json:"episodes_all,omitempty"` EpisodesLen *map[string]float64 `json:"episodes_len,omitempty"` // Id Unique title ID (primary key) Id int64 `json:"id"` Poster *Image `json:"poster,omitempty"` Rating *float64 `json:"rating,omitempty"` RatingCount *int32 `json:"rating_count,omitempty"` // ReleaseSeason Title release season ReleaseSeason *ReleaseSeason `json:"release_season,omitempty"` ReleaseYear *int32 `json:"release_year,omitempty"` Studio *Studio `json:"studio,omitempty"` // Tags Array of localized tags Tags Tags `json:"tags"` // TitleNames Localized titles. Key = language (ISO 639-1), value = list of names TitleNames map[string][]string `json:"title_names"` // TitleStatus Title status TitleStatus *TitleStatus `json:"title_status,omitempty"` } // TitleSort Title sort order type TitleSort string // TitleStatus Title status type TitleStatus string // User defines model for User. type User struct { // CreationDate Timestamp when the user was created CreationDate *time.Time `json:"creation_date,omitempty"` // DispName Display name DispName *string `json:"disp_name,omitempty"` // Id Unique user ID (primary key) Id *int64 `json:"id,omitempty"` Image *Image `json:"image,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"` } // UserTitle defines model for UserTitle. type UserTitle struct { Ctime *time.Time `json:"ctime,omitempty"` Rate *int32 `json:"rate,omitempty"` ReviewId *int64 `json:"review_id,omitempty"` // Status User's title status Status UserTitleStatus `json:"status"` Title *Title `json:"title,omitempty"` UserId int64 `json:"user_id"` } // UserTitleMini defines model for UserTitleMini. type UserTitleMini struct { Ctime *time.Time `json:"ctime,omitempty"` Rate *int32 `json:"rate,omitempty"` ReviewId *int64 `json:"review_id,omitempty"` // Status User's title status Status UserTitleStatus `json:"status"` TitleId int64 `json:"title_id"` UserId int64 `json:"user_id"` } // UserTitleStatus User's title status type UserTitleStatus string // Cursor defines model for cursor. type Cursor = string // GetTitlesParams defines parameters for GetTitles. type GetTitlesParams struct { Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"` Sort *TitleSort `form:"sort,omitempty" json:"sort,omitempty"` SortForward *bool `form:"sort_forward,omitempty" json:"sort_forward,omitempty"` Word *string `form:"word,omitempty" json:"word,omitempty"` // Status List of title statuses to filter Status *[]TitleStatus `form:"status,omitempty" json:"status,omitempty"` Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"` ReleaseYear *int32 `form:"release_year,omitempty" json:"release_year,omitempty"` ReleaseSeason *ReleaseSeason `form:"release_season,omitempty" json:"release_season,omitempty"` Limit *int32 `form:"limit,omitempty" json:"limit,omitempty"` Offset *int32 `form:"offset,omitempty" json:"offset,omitempty"` Fields *string `form:"fields,omitempty" json:"fields,omitempty"` } // GetTitleParams defines parameters for GetTitle. type GetTitleParams struct { Fields *string `form:"fields,omitempty" json:"fields,omitempty"` } // GetUsersIdParams defines parameters for GetUsersId. type GetUsersIdParams struct { Fields *string `form:"fields,omitempty" json:"fields,omitempty"` } // UpdateUserJSONBody defines parameters for UpdateUser. type UpdateUserJSONBody struct { // AvatarId ID of the user avatar (references `images.id`); set to `null` to remove avatar AvatarId *int64 `json:"avatar_id"` // DispName Display name DispName *string `json:"disp_name,omitempty"` // Mail User email (must be unique and valid) Mail *openapi_types.Email `json:"mail,omitempty"` // Nickname Username (alphanumeric + `_` or `-`, 3–16 chars) Nickname *string `json:"nickname,omitempty"` // UserDesc User description / bio UserDesc *string `json:"user_desc,omitempty"` } // DeleteUserTitleParams defines parameters for DeleteUserTitle. type DeleteUserTitleParams struct { TitleId int64 `form:"title_id" json:"title_id"` } // GetUsersUserIdTitlesParams defines parameters for GetUsersUserIdTitles. type GetUsersUserIdTitlesParams struct { Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"` Sort *TitleSort `form:"sort,omitempty" json:"sort,omitempty"` SortForward *bool `form:"sort_forward,omitempty" json:"sort_forward,omitempty"` Word *string `form:"word,omitempty" json:"word,omitempty"` // Status List of title statuses to filter Status *[]TitleStatus `form:"status,omitempty" json:"status,omitempty"` WatchStatus *[]UserTitleStatus `form:"watch_status,omitempty" json:"watch_status,omitempty"` Rating *float64 `form:"rating,omitempty" json:"rating,omitempty"` MyRate *int32 `form:"my_rate,omitempty" json:"my_rate,omitempty"` ReleaseYear *int32 `form:"release_year,omitempty" json:"release_year,omitempty"` ReleaseSeason *ReleaseSeason `form:"release_season,omitempty" json:"release_season,omitempty"` Limit *int32 `form:"limit,omitempty" json:"limit,omitempty"` Fields *string `form:"fields,omitempty" json:"fields,omitempty"` } // UpdateUserTitleJSONBody defines parameters for UpdateUserTitle. type UpdateUserTitleJSONBody struct { Rate *int32 `json:"rate,omitempty"` // Status User's title status Status *UserTitleStatus `json:"status,omitempty"` TitleId int64 `json:"title_id"` } // AddUserTitleJSONBody defines parameters for AddUserTitle. type AddUserTitleJSONBody struct { Rate *int32 `json:"rate,omitempty"` // Status User's title status Status UserTitleStatus `json:"status"` TitleId int64 `json:"title_id"` } // UpdateUserJSONRequestBody defines body for UpdateUser for application/json ContentType. type UpdateUserJSONRequestBody UpdateUserJSONBody // UpdateUserTitleJSONRequestBody defines body for UpdateUserTitle for application/json ContentType. type UpdateUserTitleJSONRequestBody UpdateUserTitleJSONBody // AddUserTitleJSONRequestBody defines body for AddUserTitle for application/json ContentType. type AddUserTitleJSONRequestBody AddUserTitleJSONBody // ServerInterface represents all server handlers. type ServerInterface interface { // Get titles // (GET /titles) GetTitles(c *gin.Context, params GetTitlesParams) // Get title description // (GET /titles/{title_id}) GetTitle(c *gin.Context, titleId int64, params GetTitleParams) // Get user info // (GET /users/{user_id}) GetUsersId(c *gin.Context, userId string, params GetUsersIdParams) // Partially update a user account // (PATCH /users/{user_id}) UpdateUser(c *gin.Context, userId int64) // Delete a usertitle // (DELETE /users/{user_id}/titles) DeleteUserTitle(c *gin.Context, userId int64, params DeleteUserTitleParams) // Get user titles // (GET /users/{user_id}/titles) GetUsersUserIdTitles(c *gin.Context, userId string, params GetUsersUserIdTitlesParams) // Update a usertitle // (PATCH /users/{user_id}/titles) UpdateUserTitle(c *gin.Context, userId int64) // Add a title to a user // (POST /users/{user_id}/titles) AddUserTitle(c *gin.Context, userId int64) } // ServerInterfaceWrapper converts contexts to parameters. type ServerInterfaceWrapper struct { Handler ServerInterface HandlerMiddlewares []MiddlewareFunc ErrorHandler func(*gin.Context, error, int) } type MiddlewareFunc func(c *gin.Context) // GetTitles operation middleware func (siw *ServerInterfaceWrapper) GetTitles(c *gin.Context) { var err error // Parameter object where we will unmarshal all parameters from the context var params GetTitlesParams // ------------- Optional query parameter "cursor" ------------- err = runtime.BindQueryParameter("form", true, false, "cursor", c.Request.URL.Query(), ¶ms.Cursor) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter cursor: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "sort" ------------- err = runtime.BindQueryParameter("form", true, false, "sort", c.Request.URL.Query(), ¶ms.Sort) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter sort: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "sort_forward" ------------- err = runtime.BindQueryParameter("form", true, false, "sort_forward", c.Request.URL.Query(), ¶ms.SortForward) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter sort_forward: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "word" ------------- err = runtime.BindQueryParameter("form", true, false, "word", c.Request.URL.Query(), ¶ms.Word) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter word: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "status" ------------- err = runtime.BindQueryParameter("form", false, false, "status", c.Request.URL.Query(), ¶ms.Status) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter status: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "rating" ------------- err = runtime.BindQueryParameter("form", true, false, "rating", c.Request.URL.Query(), ¶ms.Rating) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter rating: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "release_year" ------------- err = runtime.BindQueryParameter("form", true, false, "release_year", c.Request.URL.Query(), ¶ms.ReleaseYear) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter release_year: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "release_season" ------------- err = runtime.BindQueryParameter("form", true, false, "release_season", c.Request.URL.Query(), ¶ms.ReleaseSeason) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter release_season: %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.GetTitles(c, params) } // GetTitle operation middleware func (siw *ServerInterfaceWrapper) GetTitle(c *gin.Context) { var err error // ------------- Path parameter "title_id" ------------- var titleId int64 err = runtime.BindStyledParameterWithOptions("simple", "title_id", c.Param("title_id"), &titleId, runtime.BindStyledParameterOptions{Explode: false, Required: true}) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter title_id: %w", err), http.StatusBadRequest) return } // Parameter object where we will unmarshal all parameters from the context var params GetTitleParams // ------------- 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, titleId, params) } // GetUsersId operation middleware func (siw *ServerInterfaceWrapper) GetUsersId(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 GetUsersIdParams // ------------- 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.GetUsersId(c, userId, params) } // UpdateUser operation middleware func (siw *ServerInterfaceWrapper) UpdateUser(c *gin.Context) { var err error // ------------- Path parameter "user_id" ------------- var userId int64 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 } for _, middleware := range siw.HandlerMiddlewares { middleware(c) if c.IsAborted() { return } } siw.Handler.UpdateUser(c, userId) } // DeleteUserTitle operation middleware func (siw *ServerInterfaceWrapper) DeleteUserTitle(c *gin.Context) { var err error // ------------- Path parameter "user_id" ------------- var userId int64 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 DeleteUserTitleParams // ------------- Required query parameter "title_id" ------------- if paramValue := c.Query("title_id"); paramValue != "" { } else { siw.ErrorHandler(c, fmt.Errorf("Query argument title_id is required, but not found"), http.StatusBadRequest) return } err = runtime.BindQueryParameter("form", true, true, "title_id", c.Request.URL.Query(), ¶ms.TitleId) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter title_id: %w", err), http.StatusBadRequest) return } for _, middleware := range siw.HandlerMiddlewares { middleware(c) if c.IsAborted() { return } } siw.Handler.DeleteUserTitle(c, userId, params) } // GetUsersUserIdTitles operation middleware func (siw *ServerInterfaceWrapper) GetUsersUserIdTitles(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 GetUsersUserIdTitlesParams // ------------- Optional query parameter "cursor" ------------- err = runtime.BindQueryParameter("form", true, false, "cursor", c.Request.URL.Query(), ¶ms.Cursor) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter cursor: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "sort" ------------- err = runtime.BindQueryParameter("form", true, false, "sort", c.Request.URL.Query(), ¶ms.Sort) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter sort: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "sort_forward" ------------- err = runtime.BindQueryParameter("form", true, false, "sort_forward", c.Request.URL.Query(), ¶ms.SortForward) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter sort_forward: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "word" ------------- err = runtime.BindQueryParameter("form", true, false, "word", c.Request.URL.Query(), ¶ms.Word) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter word: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "status" ------------- err = runtime.BindQueryParameter("form", false, false, "status", c.Request.URL.Query(), ¶ms.Status) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter status: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "watch_status" ------------- err = runtime.BindQueryParameter("form", false, false, "watch_status", c.Request.URL.Query(), ¶ms.WatchStatus) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter watch_status: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "rating" ------------- err = runtime.BindQueryParameter("form", true, false, "rating", c.Request.URL.Query(), ¶ms.Rating) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter rating: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "my_rate" ------------- err = runtime.BindQueryParameter("form", true, false, "my_rate", c.Request.URL.Query(), ¶ms.MyRate) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter my_rate: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "release_year" ------------- err = runtime.BindQueryParameter("form", true, false, "release_year", c.Request.URL.Query(), ¶ms.ReleaseYear) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter release_year: %w", err), http.StatusBadRequest) return } // ------------- Optional query parameter "release_season" ------------- err = runtime.BindQueryParameter("form", true, false, "release_season", c.Request.URL.Query(), ¶ms.ReleaseSeason) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter release_season: %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 "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.GetUsersUserIdTitles(c, userId, params) } // UpdateUserTitle operation middleware func (siw *ServerInterfaceWrapper) UpdateUserTitle(c *gin.Context) { var err error // ------------- Path parameter "user_id" ------------- var userId int64 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 } for _, middleware := range siw.HandlerMiddlewares { middleware(c) if c.IsAborted() { return } } siw.Handler.UpdateUserTitle(c, userId) } // AddUserTitle operation middleware func (siw *ServerInterfaceWrapper) AddUserTitle(c *gin.Context) { var err error // ------------- Path parameter "user_id" ------------- var userId int64 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 } for _, middleware := range siw.HandlerMiddlewares { middleware(c) if c.IsAborted() { return } } siw.Handler.AddUserTitle(c, userId) } // 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+"/titles", wrapper.GetTitles) router.GET(options.BaseURL+"/titles/:title_id", wrapper.GetTitle) router.GET(options.BaseURL+"/users/:user_id", wrapper.GetUsersId) router.PATCH(options.BaseURL+"/users/:user_id", wrapper.UpdateUser) router.DELETE(options.BaseURL+"/users/:user_id/titles", wrapper.DeleteUserTitle) router.GET(options.BaseURL+"/users/:user_id/titles", wrapper.GetUsersUserIdTitles) router.PATCH(options.BaseURL+"/users/:user_id/titles", wrapper.UpdateUserTitle) router.POST(options.BaseURL+"/users/:user_id/titles", wrapper.AddUserTitle) } type GetTitlesRequestObject struct { Params GetTitlesParams } type GetTitlesResponseObject interface { VisitGetTitlesResponse(w http.ResponseWriter) error } type GetTitles200JSONResponse struct { Cursor CursorObj `json:"cursor"` // Data List of titles Data []Title `json:"data"` } func (response GetTitles200JSONResponse) VisitGetTitlesResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type GetTitles204Response struct { } func (response GetTitles204Response) VisitGetTitlesResponse(w http.ResponseWriter) error { w.WriteHeader(204) return nil } type GetTitles400Response struct { } func (response GetTitles400Response) VisitGetTitlesResponse(w http.ResponseWriter) error { w.WriteHeader(400) return nil } type GetTitles500Response struct { } func (response GetTitles500Response) VisitGetTitlesResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } type GetTitleRequestObject struct { TitleId int64 `json:"title_id"` 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 } type GetTitle400Response struct { } func (response GetTitle400Response) VisitGetTitleResponse(w http.ResponseWriter) error { w.WriteHeader(400) return nil } type GetTitle404Response struct { } func (response GetTitle404Response) VisitGetTitleResponse(w http.ResponseWriter) error { w.WriteHeader(404) return nil } type GetTitle500Response struct { } func (response GetTitle500Response) VisitGetTitleResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } type GetUsersIdRequestObject struct { UserId string `json:"user_id"` Params GetUsersIdParams } type GetUsersIdResponseObject interface { VisitGetUsersIdResponse(w http.ResponseWriter) error } type GetUsersId200JSONResponse User func (response GetUsersId200JSONResponse) VisitGetUsersIdResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type GetUsersId400Response struct { } func (response GetUsersId400Response) VisitGetUsersIdResponse(w http.ResponseWriter) error { w.WriteHeader(400) return nil } type GetUsersId404Response struct { } func (response GetUsersId404Response) VisitGetUsersIdResponse(w http.ResponseWriter) error { w.WriteHeader(404) return nil } type GetUsersId500Response struct { } func (response GetUsersId500Response) VisitGetUsersIdResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } type UpdateUserRequestObject struct { UserId int64 `json:"user_id"` Body *UpdateUserJSONRequestBody } type UpdateUserResponseObject interface { VisitUpdateUserResponse(w http.ResponseWriter) error } type UpdateUser200JSONResponse User func (response UpdateUser200JSONResponse) VisitUpdateUserResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type UpdateUser400Response struct { } func (response UpdateUser400Response) VisitUpdateUserResponse(w http.ResponseWriter) error { w.WriteHeader(400) return nil } type UpdateUser401Response struct { } func (response UpdateUser401Response) VisitUpdateUserResponse(w http.ResponseWriter) error { w.WriteHeader(401) return nil } type UpdateUser403Response struct { } func (response UpdateUser403Response) VisitUpdateUserResponse(w http.ResponseWriter) error { w.WriteHeader(403) return nil } type UpdateUser404Response struct { } func (response UpdateUser404Response) VisitUpdateUserResponse(w http.ResponseWriter) error { w.WriteHeader(404) return nil } type UpdateUser409Response struct { } func (response UpdateUser409Response) VisitUpdateUserResponse(w http.ResponseWriter) error { w.WriteHeader(409) return nil } type UpdateUser422Response struct { } func (response UpdateUser422Response) VisitUpdateUserResponse(w http.ResponseWriter) error { w.WriteHeader(422) return nil } type UpdateUser500Response struct { } func (response UpdateUser500Response) VisitUpdateUserResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } type DeleteUserTitleRequestObject struct { UserId int64 `json:"user_id"` Params DeleteUserTitleParams } type DeleteUserTitleResponseObject interface { VisitDeleteUserTitleResponse(w http.ResponseWriter) error } type DeleteUserTitle200Response struct { } func (response DeleteUserTitle200Response) VisitDeleteUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(200) return nil } type DeleteUserTitle401Response struct { } func (response DeleteUserTitle401Response) VisitDeleteUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(401) return nil } type DeleteUserTitle403Response struct { } func (response DeleteUserTitle403Response) VisitDeleteUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(403) return nil } type DeleteUserTitle404Response struct { } func (response DeleteUserTitle404Response) VisitDeleteUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(404) return nil } type DeleteUserTitle500Response struct { } func (response DeleteUserTitle500Response) VisitDeleteUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } type GetUsersUserIdTitlesRequestObject struct { UserId string `json:"user_id"` Params GetUsersUserIdTitlesParams } type GetUsersUserIdTitlesResponseObject interface { VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error } type GetUsersUserIdTitles200JSONResponse struct { Cursor CursorObj `json:"cursor"` Data []UserTitle `json:"data"` } func (response GetUsersUserIdTitles200JSONResponse) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type GetUsersUserIdTitles204Response struct { } func (response GetUsersUserIdTitles204Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { w.WriteHeader(204) return nil } type GetUsersUserIdTitles400Response struct { } func (response GetUsersUserIdTitles400Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { w.WriteHeader(400) return nil } type GetUsersUserIdTitles404Response struct { } func (response GetUsersUserIdTitles404Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { w.WriteHeader(404) return nil } type GetUsersUserIdTitles500Response struct { } func (response GetUsersUserIdTitles500Response) VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } type UpdateUserTitleRequestObject struct { UserId int64 `json:"user_id"` Body *UpdateUserTitleJSONRequestBody } type UpdateUserTitleResponseObject interface { VisitUpdateUserTitleResponse(w http.ResponseWriter) error } type UpdateUserTitle200JSONResponse UserTitleMini func (response UpdateUserTitle200JSONResponse) VisitUpdateUserTitleResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type UpdateUserTitle400Response struct { } func (response UpdateUserTitle400Response) VisitUpdateUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(400) return nil } type UpdateUserTitle401Response struct { } func (response UpdateUserTitle401Response) VisitUpdateUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(401) return nil } type UpdateUserTitle403Response struct { } func (response UpdateUserTitle403Response) VisitUpdateUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(403) return nil } type UpdateUserTitle404Response struct { } func (response UpdateUserTitle404Response) VisitUpdateUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(404) return nil } type UpdateUserTitle500Response struct { } func (response UpdateUserTitle500Response) VisitUpdateUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } type AddUserTitleRequestObject struct { UserId int64 `json:"user_id"` Body *AddUserTitleJSONRequestBody } type AddUserTitleResponseObject interface { VisitAddUserTitleResponse(w http.ResponseWriter) error } type AddUserTitle200JSONResponse UserTitleMini func (response AddUserTitle200JSONResponse) VisitAddUserTitleResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type AddUserTitle400Response struct { } func (response AddUserTitle400Response) VisitAddUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(400) return nil } type AddUserTitle401Response struct { } func (response AddUserTitle401Response) VisitAddUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(401) return nil } type AddUserTitle403Response struct { } func (response AddUserTitle403Response) VisitAddUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(403) return nil } type AddUserTitle404Response struct { } func (response AddUserTitle404Response) VisitAddUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(404) return nil } type AddUserTitle409Response struct { } func (response AddUserTitle409Response) VisitAddUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(409) return nil } type AddUserTitle500Response struct { } func (response AddUserTitle500Response) VisitAddUserTitleResponse(w http.ResponseWriter) error { w.WriteHeader(500) return nil } // StrictServerInterface represents all server handlers. type StrictServerInterface interface { // Get titles // (GET /titles) GetTitles(ctx context.Context, request GetTitlesRequestObject) (GetTitlesResponseObject, error) // Get title description // (GET /titles/{title_id}) GetTitle(ctx context.Context, request GetTitleRequestObject) (GetTitleResponseObject, error) // Get user info // (GET /users/{user_id}) GetUsersId(ctx context.Context, request GetUsersIdRequestObject) (GetUsersIdResponseObject, error) // Partially update a user account // (PATCH /users/{user_id}) UpdateUser(ctx context.Context, request UpdateUserRequestObject) (UpdateUserResponseObject, error) // Delete a usertitle // (DELETE /users/{user_id}/titles) DeleteUserTitle(ctx context.Context, request DeleteUserTitleRequestObject) (DeleteUserTitleResponseObject, error) // Get user titles // (GET /users/{user_id}/titles) GetUsersUserIdTitles(ctx context.Context, request GetUsersUserIdTitlesRequestObject) (GetUsersUserIdTitlesResponseObject, error) // Update a usertitle // (PATCH /users/{user_id}/titles) UpdateUserTitle(ctx context.Context, request UpdateUserTitleRequestObject) (UpdateUserTitleResponseObject, error) // Add a title to a user // (POST /users/{user_id}/titles) AddUserTitle(ctx context.Context, request AddUserTitleRequestObject) (AddUserTitleResponseObject, 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 } // GetTitles operation middleware func (sh *strictHandler) GetTitles(ctx *gin.Context, params GetTitlesParams) { var request GetTitlesRequestObject request.Params = params handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { return sh.ssi.GetTitles(ctx, request.(GetTitlesRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "GetTitles") } response, err := handler(ctx, request) if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) } else if validResponse, ok := response.(GetTitlesResponseObject); ok { if err := validResponse.VisitGetTitlesResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { ctx.Error(fmt.Errorf("unexpected response type: %T", response)) } } // GetTitle operation middleware func (sh *strictHandler) GetTitle(ctx *gin.Context, titleId int64, params GetTitleParams) { var request GetTitleRequestObject request.TitleId = titleId 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)) } } // GetUsersId operation middleware func (sh *strictHandler) GetUsersId(ctx *gin.Context, userId string, params GetUsersIdParams) { var request GetUsersIdRequestObject request.UserId = userId request.Params = params handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { return sh.ssi.GetUsersId(ctx, request.(GetUsersIdRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "GetUsersId") } response, err := handler(ctx, request) if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) } else if validResponse, ok := response.(GetUsersIdResponseObject); ok { if err := validResponse.VisitGetUsersIdResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { ctx.Error(fmt.Errorf("unexpected response type: %T", response)) } } // UpdateUser operation middleware func (sh *strictHandler) UpdateUser(ctx *gin.Context, userId int64) { var request UpdateUserRequestObject request.UserId = userId var body UpdateUserJSONRequestBody 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.UpdateUser(ctx, request.(UpdateUserRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "UpdateUser") } response, err := handler(ctx, request) if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) } else if validResponse, ok := response.(UpdateUserResponseObject); ok { if err := validResponse.VisitUpdateUserResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { ctx.Error(fmt.Errorf("unexpected response type: %T", response)) } } // DeleteUserTitle operation middleware func (sh *strictHandler) DeleteUserTitle(ctx *gin.Context, userId int64, params DeleteUserTitleParams) { var request DeleteUserTitleRequestObject request.UserId = userId request.Params = params handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { return sh.ssi.DeleteUserTitle(ctx, request.(DeleteUserTitleRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "DeleteUserTitle") } response, err := handler(ctx, request) if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) } else if validResponse, ok := response.(DeleteUserTitleResponseObject); ok { if err := validResponse.VisitDeleteUserTitleResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { ctx.Error(fmt.Errorf("unexpected response type: %T", response)) } } // GetUsersUserIdTitles operation middleware func (sh *strictHandler) GetUsersUserIdTitles(ctx *gin.Context, userId string, params GetUsersUserIdTitlesParams) { var request GetUsersUserIdTitlesRequestObject request.UserId = userId request.Params = params handler := func(ctx *gin.Context, request interface{}) (interface{}, error) { return sh.ssi.GetUsersUserIdTitles(ctx, request.(GetUsersUserIdTitlesRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "GetUsersUserIdTitles") } response, err := handler(ctx, request) if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) } else if validResponse, ok := response.(GetUsersUserIdTitlesResponseObject); ok { if err := validResponse.VisitGetUsersUserIdTitlesResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { ctx.Error(fmt.Errorf("unexpected response type: %T", response)) } } // UpdateUserTitle operation middleware func (sh *strictHandler) UpdateUserTitle(ctx *gin.Context, userId int64) { var request UpdateUserTitleRequestObject request.UserId = userId var body UpdateUserTitleJSONRequestBody 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.UpdateUserTitle(ctx, request.(UpdateUserTitleRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "UpdateUserTitle") } response, err := handler(ctx, request) if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) } else if validResponse, ok := response.(UpdateUserTitleResponseObject); ok { if err := validResponse.VisitUpdateUserTitleResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { ctx.Error(fmt.Errorf("unexpected response type: %T", response)) } } // AddUserTitle operation middleware func (sh *strictHandler) AddUserTitle(ctx *gin.Context, userId int64) { var request AddUserTitleRequestObject request.UserId = userId var body AddUserTitleJSONRequestBody 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.AddUserTitle(ctx, request.(AddUserTitleRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "AddUserTitle") } response, err := handler(ctx, request) if err != nil { ctx.Error(err) ctx.Status(http.StatusInternalServerError) } else if validResponse, ok := response.(AddUserTitleResponseObject); ok { if err := validResponse.VisitAddUserTitleResponse(ctx.Writer); err != nil { ctx.Error(err) } } else if response != nil { ctx.Error(fmt.Errorf("unexpected response type: %T", response)) } }