// 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 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" ) // Image defines model for Image. type Image struct { Id *int64 `json:"id,omitempty"` ImagePath *string `json:"image_path,omitempty"` StorageType *string `json:"storage_type,omitempty"` } // 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:"-"` } // 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"` // 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"` TitleId int64 `json:"title_id"` 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 { Word *string `form:"word,omitempty" json:"word,omitempty"` 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"` } // GetUsersUserIdTitlesParams defines parameters for GetUsersUserIdTitles. type GetUsersUserIdTitlesParams struct { Cursor *Cursor `form:"cursor,omitempty" json:"cursor,omitempty"` 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"` } // 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_id"]; found { err = json.Unmarshal(raw, &a.TitleId) if err != nil { return fmt.Errorf("error reading 'title_id': %w", err) } delete(object, "title_id") } 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) } object["title_id"], err = json.Marshal(a.TitleId) if err != nil { return nil, fmt.Errorf("error marshaling 'title_id': %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) // Get user titles // (GET /users/{user_id}/titles/) GetUsersUserIdTitles(c *gin.Context, userId string, params GetUsersUserIdTitlesParams) } // 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 "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", true, 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) } // 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(), ¶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.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(), ¶ms.Fields) if err != nil { siw.ErrorHandler(c, fmt.Errorf("Invalid format for parameter fields: %w", err), http.StatusBadRequest) return } for _, middleware := range siw.HandlerMiddlewares { middleware(c) if c.IsAborted() { return } } siw.Handler.GetUsersUserId(c, userId, params) } // 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 "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.GetUsersUserIdTitles(c, userId, params) } // GinServerOptions provides options for the Gin server. type GinServerOptions struct { BaseURL string Middlewares []MiddlewareFunc ErrorHandler func(*gin.Context, error, int) } // RegisterHandlers creates http.Handler with routing matching OpenAPI spec. func RegisterHandlers(router gin.IRouter, si ServerInterface) { RegisterHandlersWithOptions(router, si, GinServerOptions{}) } // RegisterHandlersWithOptions creates http.Handler with additional options func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options GinServerOptions) { errorHandler := options.ErrorHandler if errorHandler == nil { errorHandler = func(c *gin.Context, err error, statusCode int) { c.JSON(statusCode, gin.H{"msg": err.Error()}) } } wrapper := ServerInterfaceWrapper{ Handler: si, HandlerMiddlewares: options.Middlewares, ErrorHandler: errorHandler, } router.GET(options.BaseURL+"/titles", wrapper.GetTitles) router.GET(options.BaseURL+"/titles/:title_id", wrapper.GetTitlesTitleId) router.GET(options.BaseURL+"/users/:user_id", wrapper.GetUsersUserId) router.GET(options.BaseURL+"/users/:user_id/titles/", wrapper.GetUsersUserIdTitles) } type GetTitlesRequestObject struct { Params GetTitlesParams } type GetTitlesResponseObject interface { VisitGetTitlesResponse(w http.ResponseWriter) error } type GetTitles200JSONResponse []Title 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 GetUsersUserIdTitlesRequestObject struct { UserId string `json:"user_id"` Params GetUsersUserIdTitlesParams } type GetUsersUserIdTitlesResponseObject interface { VisitGetUsersUserIdTitlesResponse(w http.ResponseWriter) error } type GetUsersUserIdTitles200JSONResponse []UserTitle 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 } // 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) // Get user titles // (GET /users/{user_id}/titles/) GetUsersUserIdTitles(ctx context.Context, request GetUsersUserIdTitlesRequestObject) (GetUsersUserIdTitlesResponseObject, 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)) } } // 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)) } }