nyanimedb/api/api.gen.go
Iron_Felix 4c7d03cddc
Some checks failed
Build and Deploy Go App / build (push) Failing after 2m37s
Build and Deploy Go App / deploy (push) Has been skipped
feat:
2025-11-25 03:20:39 +03:00

1578 lines
46 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 ImageStorageType.
const (
Local ImageStorageType = "local"
S3 ImageStorageType = "s3"
)
// Defines values for ReleaseSeason.
const (
Fall ReleaseSeason = "fall"
Spring ReleaseSeason = "spring"
Summer ReleaseSeason = "summer"
Winter ReleaseSeason = "winter"
)
// 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 *ImageStorageType `json:"storage_type,omitempty"`
}
// ImageStorageType Image storage type
type ImageStorageType string
// ReleaseSeason Title release season
type ReleaseSeason 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"`
AdditionalProperties map[string]interface{} `json:"-"`
}
// TitleSort Title sort order
type TitleSort string
// TitleStatus Title status
type TitleStatus string
// User defines model for User.
type User struct {
// AvatarId ID of the user avatar (references images table)
AvatarId *int64 `json:"avatar_id,omitempty"`
// 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"`
// 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"`
AdditionalProperties map[string]interface{} `json:"-"`
}
// 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"`
}
// GetTitlesTitleIdParams defines parameters for GetTitlesTitleId.
type GetTitlesTitleIdParams struct {
Fields *string `form:"fields,omitempty" json:"fields,omitempty"`
}
// GetUsersUserIdParams defines parameters for GetUsersUserId.
type GetUsersUserIdParams 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 `-`, 316 chars)
Nickname *string `json:"nickname,omitempty"`
// UserDesc User description / bio
UserDesc *string `json:"user_desc,omitempty"`
}
// 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"`
}
// UpdateUserJSONRequestBody defines body for UpdateUser for application/json ContentType.
type UpdateUserJSONRequestBody UpdateUserJSONBody
// AddUserTitleJSONRequestBody defines body for AddUserTitle for application/json ContentType.
type AddUserTitleJSONRequestBody = UserTitle
// Getter for additional properties for Title. Returns the specified
// element and whether it was found
func (a Title) Get(fieldName string) (value interface{}, found bool) {
if a.AdditionalProperties != nil {
value, found = a.AdditionalProperties[fieldName]
}
return
}
// Setter for additional properties for Title
func (a *Title) Set(fieldName string, value interface{}) {
if a.AdditionalProperties == nil {
a.AdditionalProperties = make(map[string]interface{})
}
a.AdditionalProperties[fieldName] = value
}
// Override default JSON handling for Title to handle AdditionalProperties
func (a *Title) UnmarshalJSON(b []byte) error {
object := make(map[string]json.RawMessage)
err := json.Unmarshal(b, &object)
if err != nil {
return err
}
if raw, found := object["episodes_aired"]; found {
err = json.Unmarshal(raw, &a.EpisodesAired)
if err != nil {
return fmt.Errorf("error reading 'episodes_aired': %w", err)
}
delete(object, "episodes_aired")
}
if raw, found := object["episodes_all"]; found {
err = json.Unmarshal(raw, &a.EpisodesAll)
if err != nil {
return fmt.Errorf("error reading 'episodes_all': %w", err)
}
delete(object, "episodes_all")
}
if raw, found := object["episodes_len"]; found {
err = json.Unmarshal(raw, &a.EpisodesLen)
if err != nil {
return fmt.Errorf("error reading 'episodes_len': %w", err)
}
delete(object, "episodes_len")
}
if raw, found := object["id"]; found {
err = json.Unmarshal(raw, &a.Id)
if err != nil {
return fmt.Errorf("error reading 'id': %w", err)
}
delete(object, "id")
}
if raw, found := object["poster"]; found {
err = json.Unmarshal(raw, &a.Poster)
if err != nil {
return fmt.Errorf("error reading 'poster': %w", err)
}
delete(object, "poster")
}
if raw, found := object["rating"]; found {
err = json.Unmarshal(raw, &a.Rating)
if err != nil {
return fmt.Errorf("error reading 'rating': %w", err)
}
delete(object, "rating")
}
if raw, found := object["rating_count"]; found {
err = json.Unmarshal(raw, &a.RatingCount)
if err != nil {
return fmt.Errorf("error reading 'rating_count': %w", err)
}
delete(object, "rating_count")
}
if raw, found := object["release_season"]; found {
err = json.Unmarshal(raw, &a.ReleaseSeason)
if err != nil {
return fmt.Errorf("error reading 'release_season': %w", err)
}
delete(object, "release_season")
}
if raw, found := object["release_year"]; found {
err = json.Unmarshal(raw, &a.ReleaseYear)
if err != nil {
return fmt.Errorf("error reading 'release_year': %w", err)
}
delete(object, "release_year")
}
if raw, found := object["studio"]; found {
err = json.Unmarshal(raw, &a.Studio)
if err != nil {
return fmt.Errorf("error reading 'studio': %w", err)
}
delete(object, "studio")
}
if raw, found := object["tags"]; found {
err = json.Unmarshal(raw, &a.Tags)
if err != nil {
return fmt.Errorf("error reading 'tags': %w", err)
}
delete(object, "tags")
}
if raw, found := object["title_names"]; found {
err = json.Unmarshal(raw, &a.TitleNames)
if err != nil {
return fmt.Errorf("error reading 'title_names': %w", err)
}
delete(object, "title_names")
}
if raw, found := object["title_status"]; found {
err = json.Unmarshal(raw, &a.TitleStatus)
if err != nil {
return fmt.Errorf("error reading 'title_status': %w", err)
}
delete(object, "title_status")
}
if len(object) != 0 {
a.AdditionalProperties = make(map[string]interface{})
for fieldName, fieldBuf := range object {
var fieldVal interface{}
err := json.Unmarshal(fieldBuf, &fieldVal)
if err != nil {
return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err)
}
a.AdditionalProperties[fieldName] = fieldVal
}
}
return nil
}
// Override default JSON handling for Title to handle AdditionalProperties
func (a Title) MarshalJSON() ([]byte, error) {
var err error
object := make(map[string]json.RawMessage)
if a.EpisodesAired != nil {
object["episodes_aired"], err = json.Marshal(a.EpisodesAired)
if err != nil {
return nil, fmt.Errorf("error marshaling 'episodes_aired': %w", err)
}
}
if a.EpisodesAll != nil {
object["episodes_all"], err = json.Marshal(a.EpisodesAll)
if err != nil {
return nil, fmt.Errorf("error marshaling 'episodes_all': %w", err)
}
}
if a.EpisodesLen != nil {
object["episodes_len"], err = json.Marshal(a.EpisodesLen)
if err != nil {
return nil, fmt.Errorf("error marshaling 'episodes_len': %w", err)
}
}
object["id"], err = json.Marshal(a.Id)
if err != nil {
return nil, fmt.Errorf("error marshaling 'id': %w", err)
}
if a.Poster != nil {
object["poster"], err = json.Marshal(a.Poster)
if err != nil {
return nil, fmt.Errorf("error marshaling 'poster': %w", err)
}
}
if a.Rating != nil {
object["rating"], err = json.Marshal(a.Rating)
if err != nil {
return nil, fmt.Errorf("error marshaling 'rating': %w", err)
}
}
if a.RatingCount != nil {
object["rating_count"], err = json.Marshal(a.RatingCount)
if err != nil {
return nil, fmt.Errorf("error marshaling 'rating_count': %w", err)
}
}
if a.ReleaseSeason != nil {
object["release_season"], err = json.Marshal(a.ReleaseSeason)
if err != nil {
return nil, fmt.Errorf("error marshaling 'release_season': %w", err)
}
}
if a.ReleaseYear != nil {
object["release_year"], err = json.Marshal(a.ReleaseYear)
if err != nil {
return nil, fmt.Errorf("error marshaling 'release_year': %w", err)
}
}
if a.Studio != nil {
object["studio"], err = json.Marshal(a.Studio)
if err != nil {
return nil, fmt.Errorf("error marshaling 'studio': %w", err)
}
}
object["tags"], err = json.Marshal(a.Tags)
if err != nil {
return nil, fmt.Errorf("error marshaling 'tags': %w", err)
}
object["title_names"], err = json.Marshal(a.TitleNames)
if err != nil {
return nil, fmt.Errorf("error marshaling 'title_names': %w", err)
}
if a.TitleStatus != nil {
object["title_status"], err = json.Marshal(a.TitleStatus)
if err != nil {
return nil, fmt.Errorf("error marshaling 'title_status': %w", err)
}
}
for fieldName, field := range a.AdditionalProperties {
object[fieldName], err = json.Marshal(field)
if err != nil {
return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err)
}
}
return json.Marshal(object)
}
// Getter for additional properties for UserTitle. Returns the specified
// element and whether it was found
func (a UserTitle) Get(fieldName string) (value interface{}, found bool) {
if a.AdditionalProperties != nil {
value, found = a.AdditionalProperties[fieldName]
}
return
}
// Setter for additional properties for UserTitle
func (a *UserTitle) Set(fieldName string, value interface{}) {
if a.AdditionalProperties == nil {
a.AdditionalProperties = make(map[string]interface{})
}
a.AdditionalProperties[fieldName] = value
}
// Override default JSON handling for UserTitle to handle AdditionalProperties
func (a *UserTitle) UnmarshalJSON(b []byte) error {
object := make(map[string]json.RawMessage)
err := json.Unmarshal(b, &object)
if err != nil {
return err
}
if raw, found := object["ctime"]; found {
err = json.Unmarshal(raw, &a.Ctime)
if err != nil {
return fmt.Errorf("error reading 'ctime': %w", err)
}
delete(object, "ctime")
}
if raw, found := object["rate"]; found {
err = json.Unmarshal(raw, &a.Rate)
if err != nil {
return fmt.Errorf("error reading 'rate': %w", err)
}
delete(object, "rate")
}
if raw, found := object["review_id"]; found {
err = json.Unmarshal(raw, &a.ReviewId)
if err != nil {
return fmt.Errorf("error reading 'review_id': %w", err)
}
delete(object, "review_id")
}
if raw, found := object["status"]; found {
err = json.Unmarshal(raw, &a.Status)
if err != nil {
return fmt.Errorf("error reading 'status': %w", err)
}
delete(object, "status")
}
if raw, found := object["title"]; found {
err = json.Unmarshal(raw, &a.Title)
if err != nil {
return fmt.Errorf("error reading 'title': %w", err)
}
delete(object, "title")
}
if raw, found := object["user_id"]; found {
err = json.Unmarshal(raw, &a.UserId)
if err != nil {
return fmt.Errorf("error reading 'user_id': %w", err)
}
delete(object, "user_id")
}
if len(object) != 0 {
a.AdditionalProperties = make(map[string]interface{})
for fieldName, fieldBuf := range object {
var fieldVal interface{}
err := json.Unmarshal(fieldBuf, &fieldVal)
if err != nil {
return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err)
}
a.AdditionalProperties[fieldName] = fieldVal
}
}
return nil
}
// Override default JSON handling for UserTitle to handle AdditionalProperties
func (a UserTitle) MarshalJSON() ([]byte, error) {
var err error
object := make(map[string]json.RawMessage)
if a.Ctime != nil {
object["ctime"], err = json.Marshal(a.Ctime)
if err != nil {
return nil, fmt.Errorf("error marshaling 'ctime': %w", err)
}
}
if a.Rate != nil {
object["rate"], err = json.Marshal(a.Rate)
if err != nil {
return nil, fmt.Errorf("error marshaling 'rate': %w", err)
}
}
if a.ReviewId != nil {
object["review_id"], err = json.Marshal(a.ReviewId)
if err != nil {
return nil, fmt.Errorf("error marshaling 'review_id': %w", err)
}
}
object["status"], err = json.Marshal(a.Status)
if err != nil {
return nil, fmt.Errorf("error marshaling 'status': %w", err)
}
if a.Title != nil {
object["title"], err = json.Marshal(a.Title)
if err != nil {
return nil, fmt.Errorf("error marshaling 'title': %w", err)
}
}
object["user_id"], err = json.Marshal(a.UserId)
if err != nil {
return nil, fmt.Errorf("error marshaling 'user_id': %w", err)
}
for fieldName, field := range a.AdditionalProperties {
object[fieldName], err = json.Marshal(field)
if err != nil {
return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err)
}
}
return json.Marshal(object)
}
// 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})
GetTitlesTitleId(c *gin.Context, titleId int64, params GetTitlesTitleIdParams)
// Get user info
// (GET /users/{user_id})
GetUsersUserId(c *gin.Context, userId string, params GetUsersUserIdParams)
// Partially update a user account
// (PATCH /users/{user_id})
UpdateUser(c *gin.Context, userId int64)
// Get user titles
// (GET /users/{user_id}/titles)
GetUsersUserIdTitles(c *gin.Context, userId string, params GetUsersUserIdTitlesParams)
// 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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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)
}
// GetTitlesTitleId operation middleware
func (siw *ServerInterfaceWrapper) GetTitlesTitleId(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 GetTitlesTitleIdParams
// ------------- Optional query parameter "fields" -------------
err = runtime.BindQueryParameter("form", true, false, "fields", c.Request.URL.Query(), &params.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.GetTitlesTitleId(c, titleId, params)
}
// 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(), &params.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)
}
// 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)
}
// 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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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(), &params.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)
}
// 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.GetTitlesTitleId)
router.GET(options.BaseURL+"/users/:user_id", wrapper.GetUsersUserId)
router.PATCH(options.BaseURL+"/users/:user_id", wrapper.UpdateUser)
router.GET(options.BaseURL+"/users/:user_id/titles", wrapper.GetUsersUserIdTitles)
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 GetTitlesTitleIdRequestObject struct {
TitleId int64 `json:"title_id"`
Params GetTitlesTitleIdParams
}
type GetTitlesTitleIdResponseObject interface {
VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error
}
type GetTitlesTitleId200JSONResponse Title
func (response GetTitlesTitleId200JSONResponse) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(200)
return json.NewEncoder(w).Encode(response)
}
type GetTitlesTitleId204Response struct {
}
func (response GetTitlesTitleId204Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.WriteHeader(204)
return nil
}
type GetTitlesTitleId400Response struct {
}
func (response GetTitlesTitleId400Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.WriteHeader(400)
return nil
}
type GetTitlesTitleId404Response struct {
}
func (response GetTitlesTitleId404Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.WriteHeader(404)
return nil
}
type GetTitlesTitleId500Response struct {
}
func (response GetTitlesTitleId500Response) VisitGetTitlesTitleIdResponse(w http.ResponseWriter) error {
w.WriteHeader(500)
return nil
}
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 GetUsersUserId400Response struct {
}
func (response GetUsersUserId400Response) VisitGetUsersUserIdResponse(w http.ResponseWriter) error {
w.WriteHeader(400)
return nil
}
type GetUsersUserId404Response struct {
}
func (response GetUsersUserId404Response) VisitGetUsersUserIdResponse(w http.ResponseWriter) error {
w.WriteHeader(404)
return nil
}
type GetUsersUserId500Response struct {
}
func (response GetUsersUserId500Response) VisitGetUsersUserIdResponse(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 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 GetUsersUserIdTitles500Response struct {
}
func (response GetUsersUserIdTitles500Response) VisitGetUsersUserIdTitlesResponse(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 struct {
Data *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"`
} `json:"data,omitempty"`
}
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})
GetTitlesTitleId(ctx context.Context, request GetTitlesTitleIdRequestObject) (GetTitlesTitleIdResponseObject, error)
// Get user info
// (GET /users/{user_id})
GetUsersUserId(ctx context.Context, request GetUsersUserIdRequestObject) (GetUsersUserIdResponseObject, error)
// Partially update a user account
// (PATCH /users/{user_id})
UpdateUser(ctx context.Context, request UpdateUserRequestObject) (UpdateUserResponseObject, error)
// Get user titles
// (GET /users/{user_id}/titles)
GetUsersUserIdTitles(ctx context.Context, request GetUsersUserIdTitlesRequestObject) (GetUsersUserIdTitlesResponseObject, 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))
}
}
// GetTitlesTitleId operation middleware
func (sh *strictHandler) GetTitlesTitleId(ctx *gin.Context, titleId int64, params GetTitlesTitleIdParams) {
var request GetTitlesTitleIdRequestObject
request.TitleId = titleId
request.Params = params
handler := func(ctx *gin.Context, request interface{}) (interface{}, error) {
return sh.ssi.GetTitlesTitleId(ctx, request.(GetTitlesTitleIdRequestObject))
}
for _, middleware := range sh.middlewares {
handler = middleware(handler, "GetTitlesTitleId")
}
response, err := handler(ctx, request)
if err != nil {
ctx.Error(err)
ctx.Status(http.StatusInternalServerError)
} else if validResponse, ok := response.(GetTitlesTitleIdResponseObject); ok {
if err := validResponse.VisitGetTitlesTitleIdResponse(ctx.Writer); err != nil {
ctx.Error(err)
}
} else if response != nil {
ctx.Error(fmt.Errorf("unexpected response type: %T", response))
}
}
// 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))
}
}
// 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))
}
}
// 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))
}
}
// 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))
}
}