// Package api provides primitives to interact with the openapi HTTP API. // // Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.3.0 DO NOT EDIT. package api import ( "bytes" "compress/gzip" "context" "encoding/base64" "encoding/json" "fmt" "net/http" "net/url" "path" "strings" "github.com/getkin/kin-openapi/openapi3" "github.com/labstack/echo/v4" "github.com/oapi-codegen/nullable" "github.com/oapi-codegen/runtime" strictecho "github.com/oapi-codegen/runtime/strictmiddleware/echo" ) // Defines values for GameState. const ( GameStateClosed GameState = "closed" GameStateFinished GameState = "finished" GameStateGaming GameState = "gaming" GameStatePrepare GameState = "prepare" GameStateStarting GameState = "starting" GameStateWaitingEntries GameState = "waiting_entries" GameStateWaitingStart GameState = "waiting_start" ) // Defines values for GamePlayerMessageS2CExecResultPayloadStatus. const ( GamePlayerMessageS2CExecResultPayloadStatusSuccess GamePlayerMessageS2CExecResultPayloadStatus = "success" ) // Defines values for GameWatcherMessageS2CExecResultPayloadStatus. const ( GameWatcherMessageS2CExecResultPayloadStatusSuccess GameWatcherMessageS2CExecResultPayloadStatus = "success" ) // Defines values for AdminPutGameJSONBodyState. const ( AdminPutGameJSONBodyStateClosed AdminPutGameJSONBodyState = "closed" AdminPutGameJSONBodyStateFinished AdminPutGameJSONBodyState = "finished" AdminPutGameJSONBodyStateGaming AdminPutGameJSONBodyState = "gaming" AdminPutGameJSONBodyStatePrepare AdminPutGameJSONBodyState = "prepare" AdminPutGameJSONBodyStateStarting AdminPutGameJSONBodyState = "starting" AdminPutGameJSONBodyStateWaitingEntries AdminPutGameJSONBodyState = "waiting_entries" AdminPutGameJSONBodyStateWaitingStart AdminPutGameJSONBodyState = "waiting_start" ) // Error defines model for Error. type Error struct { Message string `json:"message"` } // Game defines model for Game. type Game struct { DisplayName string `json:"display_name"` DurationSeconds int `json:"duration_seconds"` GameID int `json:"game_id"` Problem *Problem `json:"problem,omitempty"` StartedAt *int `json:"started_at,omitempty"` State GameState `json:"state"` } // GameState defines model for Game.State. type GameState string // GamePlayerMessage defines model for GamePlayerMessage. type GamePlayerMessage struct { union json.RawMessage } // GamePlayerMessageC2S defines model for GamePlayerMessageC2S. type GamePlayerMessageC2S struct { union json.RawMessage } // GamePlayerMessageC2SCode defines model for GamePlayerMessageC2SCode. type GamePlayerMessageC2SCode struct { Data GamePlayerMessageC2SCodePayload `json:"data"` Type string `json:"type"` } // GamePlayerMessageC2SCodePayload defines model for GamePlayerMessageC2SCodePayload. type GamePlayerMessageC2SCodePayload struct { Code string `json:"code"` } // GamePlayerMessageC2SEntry defines model for GamePlayerMessageC2SEntry. type GamePlayerMessageC2SEntry struct { Type string `json:"type"` } // GamePlayerMessageC2SReady defines model for GamePlayerMessageC2SReady. type GamePlayerMessageC2SReady struct { Type string `json:"type"` } // GamePlayerMessageC2SSubmit defines model for GamePlayerMessageC2SSubmit. type GamePlayerMessageC2SSubmit struct { Data GamePlayerMessageC2SSubmitPayload `json:"data"` Type string `json:"type"` } // GamePlayerMessageC2SSubmitPayload defines model for GamePlayerMessageC2SSubmitPayload. type GamePlayerMessageC2SSubmitPayload struct { Code string `json:"code"` } // GamePlayerMessageS2C defines model for GamePlayerMessageS2C. type GamePlayerMessageS2C struct { union json.RawMessage } // GamePlayerMessageS2CExecResult defines model for GamePlayerMessageS2CExecResult. type GamePlayerMessageS2CExecResult struct { Data GamePlayerMessageS2CExecResultPayload `json:"data"` Type string `json:"type"` } // GamePlayerMessageS2CExecResultPayload defines model for GamePlayerMessageS2CExecResultPayload. type GamePlayerMessageS2CExecResultPayload struct { Score nullable.Nullable[int] `json:"score"` Status GamePlayerMessageS2CExecResultPayloadStatus `json:"status"` } // GamePlayerMessageS2CExecResultPayloadStatus defines model for GamePlayerMessageS2CExecResultPayload.Status. type GamePlayerMessageS2CExecResultPayloadStatus string // GamePlayerMessageS2CPrepare defines model for GamePlayerMessageS2CPrepare. type GamePlayerMessageS2CPrepare struct { Data GamePlayerMessageS2CPreparePayload `json:"data"` Type string `json:"type"` } // GamePlayerMessageS2CPreparePayload defines model for GamePlayerMessageS2CPreparePayload. type GamePlayerMessageS2CPreparePayload struct { Problem Problem `json:"problem"` } // GamePlayerMessageS2CStart defines model for GamePlayerMessageS2CStart. type GamePlayerMessageS2CStart struct { Data GamePlayerMessageS2CStartPayload `json:"data"` Type string `json:"type"` } // GamePlayerMessageS2CStartPayload defines model for GamePlayerMessageS2CStartPayload. type GamePlayerMessageS2CStartPayload struct { StartAt int `json:"start_at"` } // GameWatcherMessage defines model for GameWatcherMessage. type GameWatcherMessage struct { union json.RawMessage } // GameWatcherMessageS2C defines model for GameWatcherMessageS2C. type GameWatcherMessageS2C struct { union json.RawMessage } // GameWatcherMessageS2CCode defines model for GameWatcherMessageS2CCode. type GameWatcherMessageS2CCode struct { Data GameWatcherMessageS2CCodePayload `json:"data"` Type string `json:"type"` } // GameWatcherMessageS2CCodePayload defines model for GameWatcherMessageS2CCodePayload. type GameWatcherMessageS2CCodePayload struct { Code string `json:"code"` PlayerID int `json:"player_id"` } // GameWatcherMessageS2CExecResult defines model for GameWatcherMessageS2CExecResult. type GameWatcherMessageS2CExecResult struct { Data GameWatcherMessageS2CExecResultPayload `json:"data"` Type string `json:"type"` } // GameWatcherMessageS2CExecResultPayload defines model for GameWatcherMessageS2CExecResultPayload. type GameWatcherMessageS2CExecResultPayload struct { PlayerID int `json:"player_id"` Score nullable.Nullable[int] `json:"score"` Status GameWatcherMessageS2CExecResultPayloadStatus `json:"status"` Stderr string `json:"stderr"` Stdout string `json:"stdout"` } // GameWatcherMessageS2CExecResultPayloadStatus defines model for GameWatcherMessageS2CExecResultPayload.Status. type GameWatcherMessageS2CExecResultPayloadStatus string // GameWatcherMessageS2CStart defines model for GameWatcherMessageS2CStart. type GameWatcherMessageS2CStart struct { Data GameWatcherMessageS2CStartPayload `json:"data"` Type string `json:"type"` } // GameWatcherMessageS2CStartPayload defines model for GameWatcherMessageS2CStartPayload. type GameWatcherMessageS2CStartPayload struct { StartAt int `json:"start_at"` } // Problem defines model for Problem. type Problem struct { Description string `json:"description"` ProblemID int `json:"problem_id"` Title string `json:"title"` } // User defines model for User. type User struct { DisplayName string `json:"display_name"` IconPath *string `json:"icon_path,omitempty"` IsAdmin bool `json:"is_admin"` UserID int `json:"user_id"` Username string `json:"username"` } // HeaderAuthorization defines model for header_authorization. type HeaderAuthorization = string // PathGameID defines model for path_game_id. type PathGameID = int // BadRequest defines model for BadRequest. type BadRequest = Error // Forbidden defines model for Forbidden. type Forbidden = Error // NotFound defines model for NotFound. type NotFound = Error // Unauthorized defines model for Unauthorized. type Unauthorized = Error // AdminGetGamesParams defines parameters for AdminGetGames. type AdminGetGamesParams struct { Authorization HeaderAuthorization `json:"Authorization"` } // AdminGetGameParams defines parameters for AdminGetGame. type AdminGetGameParams struct { Authorization HeaderAuthorization `json:"Authorization"` } // AdminPutGameJSONBody defines parameters for AdminPutGame. type AdminPutGameJSONBody struct { DisplayName *string `json:"display_name,omitempty"` DurationSeconds *int `json:"duration_seconds,omitempty"` ProblemID nullable.Nullable[int] `json:"problem_id,omitempty"` StartedAt nullable.Nullable[int] `json:"started_at,omitempty"` State *AdminPutGameJSONBodyState `json:"state,omitempty"` } // AdminPutGameParams defines parameters for AdminPutGame. type AdminPutGameParams struct { Authorization HeaderAuthorization `json:"Authorization"` } // AdminPutGameJSONBodyState defines parameters for AdminPutGame. type AdminPutGameJSONBodyState string // AdminGetUsersParams defines parameters for AdminGetUsers. type AdminGetUsersParams struct { Authorization HeaderAuthorization `json:"Authorization"` } // GetGamesParams defines parameters for GetGames. type GetGamesParams struct { Authorization HeaderAuthorization `json:"Authorization"` } // GetGameParams defines parameters for GetGame. type GetGameParams struct { Authorization HeaderAuthorization `json:"Authorization"` } // PostLoginJSONBody defines parameters for PostLogin. type PostLoginJSONBody struct { Password string `json:"password"` Username string `json:"username"` } // GetTokenParams defines parameters for GetToken. type GetTokenParams struct { Authorization HeaderAuthorization `json:"Authorization"` } // AdminPutGameJSONRequestBody defines body for AdminPutGame for application/json ContentType. type AdminPutGameJSONRequestBody AdminPutGameJSONBody // PostLoginJSONRequestBody defines body for PostLogin for application/json ContentType. type PostLoginJSONRequestBody PostLoginJSONBody // AsGamePlayerMessageS2C returns the union data inside the GamePlayerMessage as a GamePlayerMessageS2C func (t GamePlayerMessage) AsGamePlayerMessageS2C() (GamePlayerMessageS2C, error) { var body GamePlayerMessageS2C err := json.Unmarshal(t.union, &body) return body, err } // FromGamePlayerMessageS2C overwrites any union data inside the GamePlayerMessage as the provided GamePlayerMessageS2C func (t *GamePlayerMessage) FromGamePlayerMessageS2C(v GamePlayerMessageS2C) error { b, err := json.Marshal(v) t.union = b return err } // MergeGamePlayerMessageS2C performs a merge with any union data inside the GamePlayerMessage, using the provided GamePlayerMessageS2C func (t *GamePlayerMessage) MergeGamePlayerMessageS2C(v GamePlayerMessageS2C) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } // AsGamePlayerMessageC2S returns the union data inside the GamePlayerMessage as a GamePlayerMessageC2S func (t GamePlayerMessage) AsGamePlayerMessageC2S() (GamePlayerMessageC2S, error) { var body GamePlayerMessageC2S err := json.Unmarshal(t.union, &body) return body, err } // FromGamePlayerMessageC2S overwrites any union data inside the GamePlayerMessage as the provided GamePlayerMessageC2S func (t *GamePlayerMessage) FromGamePlayerMessageC2S(v GamePlayerMessageC2S) error { b, err := json.Marshal(v) t.union = b return err } // MergeGamePlayerMessageC2S performs a merge with any union data inside the GamePlayerMessage, using the provided GamePlayerMessageC2S func (t *GamePlayerMessage) MergeGamePlayerMessageC2S(v GamePlayerMessageC2S) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } func (t GamePlayerMessage) MarshalJSON() ([]byte, error) { b, err := t.union.MarshalJSON() return b, err } func (t *GamePlayerMessage) UnmarshalJSON(b []byte) error { err := t.union.UnmarshalJSON(b) return err } // AsGamePlayerMessageC2SEntry returns the union data inside the GamePlayerMessageC2S as a GamePlayerMessageC2SEntry func (t GamePlayerMessageC2S) AsGamePlayerMessageC2SEntry() (GamePlayerMessageC2SEntry, error) { var body GamePlayerMessageC2SEntry err := json.Unmarshal(t.union, &body) return body, err } // FromGamePlayerMessageC2SEntry overwrites any union data inside the GamePlayerMessageC2S as the provided GamePlayerMessageC2SEntry func (t *GamePlayerMessageC2S) FromGamePlayerMessageC2SEntry(v GamePlayerMessageC2SEntry) error { b, err := json.Marshal(v) t.union = b return err } // MergeGamePlayerMessageC2SEntry performs a merge with any union data inside the GamePlayerMessageC2S, using the provided GamePlayerMessageC2SEntry func (t *GamePlayerMessageC2S) MergeGamePlayerMessageC2SEntry(v GamePlayerMessageC2SEntry) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } // AsGamePlayerMessageC2SReady returns the union data inside the GamePlayerMessageC2S as a GamePlayerMessageC2SReady func (t GamePlayerMessageC2S) AsGamePlayerMessageC2SReady() (GamePlayerMessageC2SReady, error) { var body GamePlayerMessageC2SReady err := json.Unmarshal(t.union, &body) return body, err } // FromGamePlayerMessageC2SReady overwrites any union data inside the GamePlayerMessageC2S as the provided GamePlayerMessageC2SReady func (t *GamePlayerMessageC2S) FromGamePlayerMessageC2SReady(v GamePlayerMessageC2SReady) error { b, err := json.Marshal(v) t.union = b return err } // MergeGamePlayerMessageC2SReady performs a merge with any union data inside the GamePlayerMessageC2S, using the provided GamePlayerMessageC2SReady func (t *GamePlayerMessageC2S) MergeGamePlayerMessageC2SReady(v GamePlayerMessageC2SReady) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } // AsGamePlayerMessageC2SCode returns the union data inside the GamePlayerMessageC2S as a GamePlayerMessageC2SCode func (t GamePlayerMessageC2S) AsGamePlayerMessageC2SCode() (GamePlayerMessageC2SCode, error) { var body GamePlayerMessageC2SCode err := json.Unmarshal(t.union, &body) return body, err } // FromGamePlayerMessageC2SCode overwrites any union data inside the GamePlayerMessageC2S as the provided GamePlayerMessageC2SCode func (t *GamePlayerMessageC2S) FromGamePlayerMessageC2SCode(v GamePlayerMessageC2SCode) error { b, err := json.Marshal(v) t.union = b return err } // MergeGamePlayerMessageC2SCode performs a merge with any union data inside the GamePlayerMessageC2S, using the provided GamePlayerMessageC2SCode func (t *GamePlayerMessageC2S) MergeGamePlayerMessageC2SCode(v GamePlayerMessageC2SCode) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } // AsGamePlayerMessageC2SSubmit returns the union data inside the GamePlayerMessageC2S as a GamePlayerMessageC2SSubmit func (t GamePlayerMessageC2S) AsGamePlayerMessageC2SSubmit() (GamePlayerMessageC2SSubmit, error) { var body GamePlayerMessageC2SSubmit err := json.Unmarshal(t.union, &body) return body, err } // FromGamePlayerMessageC2SSubmit overwrites any union data inside the GamePlayerMessageC2S as the provided GamePlayerMessageC2SSubmit func (t *GamePlayerMessageC2S) FromGamePlayerMessageC2SSubmit(v GamePlayerMessageC2SSubmit) error { b, err := json.Marshal(v) t.union = b return err } // MergeGamePlayerMessageC2SSubmit performs a merge with any union data inside the GamePlayerMessageC2S, using the provided GamePlayerMessageC2SSubmit func (t *GamePlayerMessageC2S) MergeGamePlayerMessageC2SSubmit(v GamePlayerMessageC2SSubmit) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } func (t GamePlayerMessageC2S) MarshalJSON() ([]byte, error) { b, err := t.union.MarshalJSON() return b, err } func (t *GamePlayerMessageC2S) UnmarshalJSON(b []byte) error { err := t.union.UnmarshalJSON(b) return err } // AsGamePlayerMessageS2CPrepare returns the union data inside the GamePlayerMessageS2C as a GamePlayerMessageS2CPrepare func (t GamePlayerMessageS2C) AsGamePlayerMessageS2CPrepare() (GamePlayerMessageS2CPrepare, error) { var body GamePlayerMessageS2CPrepare err := json.Unmarshal(t.union, &body) return body, err } // FromGamePlayerMessageS2CPrepare overwrites any union data inside the GamePlayerMessageS2C as the provided GamePlayerMessageS2CPrepare func (t *GamePlayerMessageS2C) FromGamePlayerMessageS2CPrepare(v GamePlayerMessageS2CPrepare) error { b, err := json.Marshal(v) t.union = b return err } // MergeGamePlayerMessageS2CPrepare performs a merge with any union data inside the GamePlayerMessageS2C, using the provided GamePlayerMessageS2CPrepare func (t *GamePlayerMessageS2C) MergeGamePlayerMessageS2CPrepare(v GamePlayerMessageS2CPrepare) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } // AsGamePlayerMessageS2CStart returns the union data inside the GamePlayerMessageS2C as a GamePlayerMessageS2CStart func (t GamePlayerMessageS2C) AsGamePlayerMessageS2CStart() (GamePlayerMessageS2CStart, error) { var body GamePlayerMessageS2CStart err := json.Unmarshal(t.union, &body) return body, err } // FromGamePlayerMessageS2CStart overwrites any union data inside the GamePlayerMessageS2C as the provided GamePlayerMessageS2CStart func (t *GamePlayerMessageS2C) FromGamePlayerMessageS2CStart(v GamePlayerMessageS2CStart) error { b, err := json.Marshal(v) t.union = b return err } // MergeGamePlayerMessageS2CStart performs a merge with any union data inside the GamePlayerMessageS2C, using the provided GamePlayerMessageS2CStart func (t *GamePlayerMessageS2C) MergeGamePlayerMessageS2CStart(v GamePlayerMessageS2CStart) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } // AsGamePlayerMessageS2CExecResult returns the union data inside the GamePlayerMessageS2C as a GamePlayerMessageS2CExecResult func (t GamePlayerMessageS2C) AsGamePlayerMessageS2CExecResult() (GamePlayerMessageS2CExecResult, error) { var body GamePlayerMessageS2CExecResult err := json.Unmarshal(t.union, &body) return body, err } // FromGamePlayerMessageS2CExecResult overwrites any union data inside the GamePlayerMessageS2C as the provided GamePlayerMessageS2CExecResult func (t *GamePlayerMessageS2C) FromGamePlayerMessageS2CExecResult(v GamePlayerMessageS2CExecResult) error { b, err := json.Marshal(v) t.union = b return err } // MergeGamePlayerMessageS2CExecResult performs a merge with any union data inside the GamePlayerMessageS2C, using the provided GamePlayerMessageS2CExecResult func (t *GamePlayerMessageS2C) MergeGamePlayerMessageS2CExecResult(v GamePlayerMessageS2CExecResult) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } func (t GamePlayerMessageS2C) MarshalJSON() ([]byte, error) { b, err := t.union.MarshalJSON() return b, err } func (t *GamePlayerMessageS2C) UnmarshalJSON(b []byte) error { err := t.union.UnmarshalJSON(b) return err } // AsGameWatcherMessageS2C returns the union data inside the GameWatcherMessage as a GameWatcherMessageS2C func (t GameWatcherMessage) AsGameWatcherMessageS2C() (GameWatcherMessageS2C, error) { var body GameWatcherMessageS2C err := json.Unmarshal(t.union, &body) return body, err } // FromGameWatcherMessageS2C overwrites any union data inside the GameWatcherMessage as the provided GameWatcherMessageS2C func (t *GameWatcherMessage) FromGameWatcherMessageS2C(v GameWatcherMessageS2C) error { b, err := json.Marshal(v) t.union = b return err } // MergeGameWatcherMessageS2C performs a merge with any union data inside the GameWatcherMessage, using the provided GameWatcherMessageS2C func (t *GameWatcherMessage) MergeGameWatcherMessageS2C(v GameWatcherMessageS2C) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } func (t GameWatcherMessage) MarshalJSON() ([]byte, error) { b, err := t.union.MarshalJSON() return b, err } func (t *GameWatcherMessage) UnmarshalJSON(b []byte) error { err := t.union.UnmarshalJSON(b) return err } // AsGameWatcherMessageS2CStart returns the union data inside the GameWatcherMessageS2C as a GameWatcherMessageS2CStart func (t GameWatcherMessageS2C) AsGameWatcherMessageS2CStart() (GameWatcherMessageS2CStart, error) { var body GameWatcherMessageS2CStart err := json.Unmarshal(t.union, &body) return body, err } // FromGameWatcherMessageS2CStart overwrites any union data inside the GameWatcherMessageS2C as the provided GameWatcherMessageS2CStart func (t *GameWatcherMessageS2C) FromGameWatcherMessageS2CStart(v GameWatcherMessageS2CStart) error { b, err := json.Marshal(v) t.union = b return err } // MergeGameWatcherMessageS2CStart performs a merge with any union data inside the GameWatcherMessageS2C, using the provided GameWatcherMessageS2CStart func (t *GameWatcherMessageS2C) MergeGameWatcherMessageS2CStart(v GameWatcherMessageS2CStart) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } // AsGameWatcherMessageS2CCode returns the union data inside the GameWatcherMessageS2C as a GameWatcherMessageS2CCode func (t GameWatcherMessageS2C) AsGameWatcherMessageS2CCode() (GameWatcherMessageS2CCode, error) { var body GameWatcherMessageS2CCode err := json.Unmarshal(t.union, &body) return body, err } // FromGameWatcherMessageS2CCode overwrites any union data inside the GameWatcherMessageS2C as the provided GameWatcherMessageS2CCode func (t *GameWatcherMessageS2C) FromGameWatcherMessageS2CCode(v GameWatcherMessageS2CCode) error { b, err := json.Marshal(v) t.union = b return err } // MergeGameWatcherMessageS2CCode performs a merge with any union data inside the GameWatcherMessageS2C, using the provided GameWatcherMessageS2CCode func (t *GameWatcherMessageS2C) MergeGameWatcherMessageS2CCode(v GameWatcherMessageS2CCode) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } // AsGameWatcherMessageS2CExecResult returns the union data inside the GameWatcherMessageS2C as a GameWatcherMessageS2CExecResult func (t GameWatcherMessageS2C) AsGameWatcherMessageS2CExecResult() (GameWatcherMessageS2CExecResult, error) { var body GameWatcherMessageS2CExecResult err := json.Unmarshal(t.union, &body) return body, err } // FromGameWatcherMessageS2CExecResult overwrites any union data inside the GameWatcherMessageS2C as the provided GameWatcherMessageS2CExecResult func (t *GameWatcherMessageS2C) FromGameWatcherMessageS2CExecResult(v GameWatcherMessageS2CExecResult) error { b, err := json.Marshal(v) t.union = b return err } // MergeGameWatcherMessageS2CExecResult performs a merge with any union data inside the GameWatcherMessageS2C, using the provided GameWatcherMessageS2CExecResult func (t *GameWatcherMessageS2C) MergeGameWatcherMessageS2CExecResult(v GameWatcherMessageS2CExecResult) error { b, err := json.Marshal(v) if err != nil { return err } merged, err := runtime.JSONMerge(t.union, b) t.union = merged return err } func (t GameWatcherMessageS2C) MarshalJSON() ([]byte, error) { b, err := t.union.MarshalJSON() return b, err } func (t *GameWatcherMessageS2C) UnmarshalJSON(b []byte) error { err := t.union.UnmarshalJSON(b) return err } // ServerInterface represents all server handlers. type ServerInterface interface { // List games // (GET /admin/games) AdminGetGames(ctx echo.Context, params AdminGetGamesParams) error // Get a game // (GET /admin/games/{game_id}) AdminGetGame(ctx echo.Context, gameID PathGameID, params AdminGetGameParams) error // Update a game // (PUT /admin/games/{game_id}) AdminPutGame(ctx echo.Context, gameID PathGameID, params AdminPutGameParams) error // List all users // (GET /admin/users) AdminGetUsers(ctx echo.Context, params AdminGetUsersParams) error // List games // (GET /games) GetGames(ctx echo.Context, params GetGamesParams) error // Get a game // (GET /games/{game_id}) GetGame(ctx echo.Context, gameID PathGameID, params GetGameParams) error // User login // (POST /login) PostLogin(ctx echo.Context) error // Get a short-lived access token // (GET /token) GetToken(ctx echo.Context, params GetTokenParams) error } // ServerInterfaceWrapper converts echo contexts to parameters. type ServerInterfaceWrapper struct { Handler ServerInterface } // AdminGetGames converts echo context to params. func (w *ServerInterfaceWrapper) AdminGetGames(ctx echo.Context) error { var err error // Parameter object where we will unmarshal all parameters from the context var params AdminGetGamesParams headers := ctx.Request().Header // ------------- Required header parameter "Authorization" ------------- if valueList, found := headers[http.CanonicalHeaderKey("Authorization")]; found { var Authorization HeaderAuthorization n := len(valueList) if n != 1 { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for Authorization, got %d", n)) } err = runtime.BindStyledParameterWithOptions("simple", "Authorization", valueList[0], &Authorization, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter Authorization: %s", err)) } params.Authorization = Authorization } else { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Header parameter Authorization is required, but not found")) } // Invoke the callback with all the unmarshaled arguments err = w.Handler.AdminGetGames(ctx, params) return err } // AdminGetGame converts echo context to params. func (w *ServerInterfaceWrapper) AdminGetGame(ctx echo.Context) error { var err error // ------------- Path parameter "game_id" ------------- var gameID PathGameID err = runtime.BindStyledParameterWithOptions("simple", "game_id", ctx.Param("game_id"), &gameID, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter game_id: %s", err)) } // Parameter object where we will unmarshal all parameters from the context var params AdminGetGameParams headers := ctx.Request().Header // ------------- Required header parameter "Authorization" ------------- if valueList, found := headers[http.CanonicalHeaderKey("Authorization")]; found { var Authorization HeaderAuthorization n := len(valueList) if n != 1 { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for Authorization, got %d", n)) } err = runtime.BindStyledParameterWithOptions("simple", "Authorization", valueList[0], &Authorization, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter Authorization: %s", err)) } params.Authorization = Authorization } else { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Header parameter Authorization is required, but not found")) } // Invoke the callback with all the unmarshaled arguments err = w.Handler.AdminGetGame(ctx, gameID, params) return err } // AdminPutGame converts echo context to params. func (w *ServerInterfaceWrapper) AdminPutGame(ctx echo.Context) error { var err error // ------------- Path parameter "game_id" ------------- var gameID PathGameID err = runtime.BindStyledParameterWithOptions("simple", "game_id", ctx.Param("game_id"), &gameID, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter game_id: %s", err)) } // Parameter object where we will unmarshal all parameters from the context var params AdminPutGameParams headers := ctx.Request().Header // ------------- Required header parameter "Authorization" ------------- if valueList, found := headers[http.CanonicalHeaderKey("Authorization")]; found { var Authorization HeaderAuthorization n := len(valueList) if n != 1 { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for Authorization, got %d", n)) } err = runtime.BindStyledParameterWithOptions("simple", "Authorization", valueList[0], &Authorization, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter Authorization: %s", err)) } params.Authorization = Authorization } else { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Header parameter Authorization is required, but not found")) } // Invoke the callback with all the unmarshaled arguments err = w.Handler.AdminPutGame(ctx, gameID, params) return err } // AdminGetUsers converts echo context to params. func (w *ServerInterfaceWrapper) AdminGetUsers(ctx echo.Context) error { var err error // Parameter object where we will unmarshal all parameters from the context var params AdminGetUsersParams headers := ctx.Request().Header // ------------- Required header parameter "Authorization" ------------- if valueList, found := headers[http.CanonicalHeaderKey("Authorization")]; found { var Authorization HeaderAuthorization n := len(valueList) if n != 1 { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for Authorization, got %d", n)) } err = runtime.BindStyledParameterWithOptions("simple", "Authorization", valueList[0], &Authorization, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter Authorization: %s", err)) } params.Authorization = Authorization } else { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Header parameter Authorization is required, but not found")) } // Invoke the callback with all the unmarshaled arguments err = w.Handler.AdminGetUsers(ctx, params) return err } // GetGames converts echo context to params. func (w *ServerInterfaceWrapper) GetGames(ctx echo.Context) error { var err error // Parameter object where we will unmarshal all parameters from the context var params GetGamesParams headers := ctx.Request().Header // ------------- Required header parameter "Authorization" ------------- if valueList, found := headers[http.CanonicalHeaderKey("Authorization")]; found { var Authorization HeaderAuthorization n := len(valueList) if n != 1 { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for Authorization, got %d", n)) } err = runtime.BindStyledParameterWithOptions("simple", "Authorization", valueList[0], &Authorization, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter Authorization: %s", err)) } params.Authorization = Authorization } else { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Header parameter Authorization is required, but not found")) } // Invoke the callback with all the unmarshaled arguments err = w.Handler.GetGames(ctx, params) return err } // GetGame converts echo context to params. func (w *ServerInterfaceWrapper) GetGame(ctx echo.Context) error { var err error // ------------- Path parameter "game_id" ------------- var gameID PathGameID err = runtime.BindStyledParameterWithOptions("simple", "game_id", ctx.Param("game_id"), &gameID, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter game_id: %s", err)) } // Parameter object where we will unmarshal all parameters from the context var params GetGameParams headers := ctx.Request().Header // ------------- Required header parameter "Authorization" ------------- if valueList, found := headers[http.CanonicalHeaderKey("Authorization")]; found { var Authorization HeaderAuthorization n := len(valueList) if n != 1 { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for Authorization, got %d", n)) } err = runtime.BindStyledParameterWithOptions("simple", "Authorization", valueList[0], &Authorization, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter Authorization: %s", err)) } params.Authorization = Authorization } else { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Header parameter Authorization is required, but not found")) } // Invoke the callback with all the unmarshaled arguments err = w.Handler.GetGame(ctx, gameID, params) return err } // PostLogin converts echo context to params. func (w *ServerInterfaceWrapper) PostLogin(ctx echo.Context) error { var err error // Invoke the callback with all the unmarshaled arguments err = w.Handler.PostLogin(ctx) return err } // GetToken converts echo context to params. func (w *ServerInterfaceWrapper) GetToken(ctx echo.Context) error { var err error // Parameter object where we will unmarshal all parameters from the context var params GetTokenParams headers := ctx.Request().Header // ------------- Required header parameter "Authorization" ------------- if valueList, found := headers[http.CanonicalHeaderKey("Authorization")]; found { var Authorization HeaderAuthorization n := len(valueList) if n != 1 { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Expected one value for Authorization, got %d", n)) } err = runtime.BindStyledParameterWithOptions("simple", "Authorization", valueList[0], &Authorization, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true}) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter Authorization: %s", err)) } params.Authorization = Authorization } else { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Header parameter Authorization is required, but not found")) } // Invoke the callback with all the unmarshaled arguments err = w.Handler.GetToken(ctx, params) return err } // This is a simple interface which specifies echo.Route addition functions which // are present on both echo.Echo and echo.Group, since we want to allow using // either of them for path registration type EchoRouter interface { CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route } // RegisterHandlers adds each server route to the EchoRouter. func RegisterHandlers(router EchoRouter, si ServerInterface) { RegisterHandlersWithBaseURL(router, si, "") } // Registers handlers, and prepends BaseURL to the paths, so that the paths // can be served under a prefix. func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) { wrapper := ServerInterfaceWrapper{ Handler: si, } router.GET(baseURL+"/admin/games", wrapper.AdminGetGames) router.GET(baseURL+"/admin/games/:game_id", wrapper.AdminGetGame) router.PUT(baseURL+"/admin/games/:game_id", wrapper.AdminPutGame) router.GET(baseURL+"/admin/users", wrapper.AdminGetUsers) router.GET(baseURL+"/games", wrapper.GetGames) router.GET(baseURL+"/games/:game_id", wrapper.GetGame) router.POST(baseURL+"/login", wrapper.PostLogin) router.GET(baseURL+"/token", wrapper.GetToken) } type BadRequestJSONResponse Error type ForbiddenJSONResponse Error type NotFoundJSONResponse Error type UnauthorizedJSONResponse Error type AdminGetGamesRequestObject struct { Params AdminGetGamesParams } type AdminGetGamesResponseObject interface { VisitAdminGetGamesResponse(w http.ResponseWriter) error } type AdminGetGames200JSONResponse struct { Games []Game `json:"games"` } func (response AdminGetGames200JSONResponse) VisitAdminGetGamesResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type AdminGetGames401JSONResponse struct{ UnauthorizedJSONResponse } func (response AdminGetGames401JSONResponse) VisitAdminGetGamesResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(401) return json.NewEncoder(w).Encode(response) } type AdminGetGames403JSONResponse struct{ ForbiddenJSONResponse } func (response AdminGetGames403JSONResponse) VisitAdminGetGamesResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(403) return json.NewEncoder(w).Encode(response) } type AdminGetGameRequestObject struct { GameID PathGameID `json:"game_id"` Params AdminGetGameParams } type AdminGetGameResponseObject interface { VisitAdminGetGameResponse(w http.ResponseWriter) error } type AdminGetGame200JSONResponse struct { Game Game `json:"game"` } func (response AdminGetGame200JSONResponse) VisitAdminGetGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type AdminGetGame401JSONResponse struct{ UnauthorizedJSONResponse } func (response AdminGetGame401JSONResponse) VisitAdminGetGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(401) return json.NewEncoder(w).Encode(response) } type AdminGetGame403JSONResponse struct{ ForbiddenJSONResponse } func (response AdminGetGame403JSONResponse) VisitAdminGetGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(403) return json.NewEncoder(w).Encode(response) } type AdminGetGame404JSONResponse struct{ NotFoundJSONResponse } func (response AdminGetGame404JSONResponse) VisitAdminGetGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(404) return json.NewEncoder(w).Encode(response) } type AdminPutGameRequestObject struct { GameID PathGameID `json:"game_id"` Params AdminPutGameParams Body *AdminPutGameJSONRequestBody } type AdminPutGameResponseObject interface { VisitAdminPutGameResponse(w http.ResponseWriter) error } type AdminPutGame204Response struct { } func (response AdminPutGame204Response) VisitAdminPutGameResponse(w http.ResponseWriter) error { w.WriteHeader(204) return nil } type AdminPutGame400JSONResponse struct{ BadRequestJSONResponse } func (response AdminPutGame400JSONResponse) VisitAdminPutGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(400) return json.NewEncoder(w).Encode(response) } type AdminPutGame401JSONResponse struct{ UnauthorizedJSONResponse } func (response AdminPutGame401JSONResponse) VisitAdminPutGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(401) return json.NewEncoder(w).Encode(response) } type AdminPutGame403JSONResponse struct{ ForbiddenJSONResponse } func (response AdminPutGame403JSONResponse) VisitAdminPutGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(403) return json.NewEncoder(w).Encode(response) } type AdminPutGame404JSONResponse struct{ NotFoundJSONResponse } func (response AdminPutGame404JSONResponse) VisitAdminPutGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(404) return json.NewEncoder(w).Encode(response) } type AdminGetUsersRequestObject struct { Params AdminGetUsersParams } type AdminGetUsersResponseObject interface { VisitAdminGetUsersResponse(w http.ResponseWriter) error } type AdminGetUsers200JSONResponse struct { Users []User `json:"users"` } func (response AdminGetUsers200JSONResponse) VisitAdminGetUsersResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type AdminGetUsers401JSONResponse struct{ UnauthorizedJSONResponse } func (response AdminGetUsers401JSONResponse) VisitAdminGetUsersResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(401) return json.NewEncoder(w).Encode(response) } type AdminGetUsers403JSONResponse struct{ ForbiddenJSONResponse } func (response AdminGetUsers403JSONResponse) VisitAdminGetUsersResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(403) return json.NewEncoder(w).Encode(response) } type GetGamesRequestObject struct { Params GetGamesParams } type GetGamesResponseObject interface { VisitGetGamesResponse(w http.ResponseWriter) error } type GetGames200JSONResponse struct { Games []Game `json:"games"` } func (response GetGames200JSONResponse) VisitGetGamesResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type GetGames401JSONResponse struct{ UnauthorizedJSONResponse } func (response GetGames401JSONResponse) VisitGetGamesResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(401) return json.NewEncoder(w).Encode(response) } type GetGames403JSONResponse struct{ ForbiddenJSONResponse } func (response GetGames403JSONResponse) VisitGetGamesResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(403) return json.NewEncoder(w).Encode(response) } type GetGameRequestObject struct { GameID PathGameID `json:"game_id"` Params GetGameParams } type GetGameResponseObject interface { VisitGetGameResponse(w http.ResponseWriter) error } type GetGame200JSONResponse struct { Game Game `json:"game"` } func (response GetGame200JSONResponse) VisitGetGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type GetGame401JSONResponse struct{ UnauthorizedJSONResponse } func (response GetGame401JSONResponse) VisitGetGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(401) return json.NewEncoder(w).Encode(response) } type GetGame403JSONResponse struct{ ForbiddenJSONResponse } func (response GetGame403JSONResponse) VisitGetGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(403) return json.NewEncoder(w).Encode(response) } type GetGame404JSONResponse struct{ NotFoundJSONResponse } func (response GetGame404JSONResponse) VisitGetGameResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(404) return json.NewEncoder(w).Encode(response) } type PostLoginRequestObject struct { Body *PostLoginJSONRequestBody } type PostLoginResponseObject interface { VisitPostLoginResponse(w http.ResponseWriter) error } type PostLogin200JSONResponse struct { Token string `json:"token"` } func (response PostLogin200JSONResponse) VisitPostLoginResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type PostLogin401JSONResponse struct{ UnauthorizedJSONResponse } func (response PostLogin401JSONResponse) VisitPostLoginResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(401) return json.NewEncoder(w).Encode(response) } type GetTokenRequestObject struct { Params GetTokenParams } type GetTokenResponseObject interface { VisitGetTokenResponse(w http.ResponseWriter) error } type GetToken200JSONResponse struct { Token string `json:"token"` } func (response GetToken200JSONResponse) VisitGetTokenResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(200) return json.NewEncoder(w).Encode(response) } type GetToken401JSONResponse struct{ UnauthorizedJSONResponse } func (response GetToken401JSONResponse) VisitGetTokenResponse(w http.ResponseWriter) error { w.Header().Set("Content-Type", "application/json") w.WriteHeader(401) return json.NewEncoder(w).Encode(response) } // StrictServerInterface represents all server handlers. type StrictServerInterface interface { // List games // (GET /admin/games) AdminGetGames(ctx context.Context, request AdminGetGamesRequestObject) (AdminGetGamesResponseObject, error) // Get a game // (GET /admin/games/{game_id}) AdminGetGame(ctx context.Context, request AdminGetGameRequestObject) (AdminGetGameResponseObject, error) // Update a game // (PUT /admin/games/{game_id}) AdminPutGame(ctx context.Context, request AdminPutGameRequestObject) (AdminPutGameResponseObject, error) // List all users // (GET /admin/users) AdminGetUsers(ctx context.Context, request AdminGetUsersRequestObject) (AdminGetUsersResponseObject, error) // List games // (GET /games) GetGames(ctx context.Context, request GetGamesRequestObject) (GetGamesResponseObject, error) // Get a game // (GET /games/{game_id}) GetGame(ctx context.Context, request GetGameRequestObject) (GetGameResponseObject, error) // User login // (POST /login) PostLogin(ctx context.Context, request PostLoginRequestObject) (PostLoginResponseObject, error) // Get a short-lived access token // (GET /token) GetToken(ctx context.Context, request GetTokenRequestObject) (GetTokenResponseObject, error) } type StrictHandlerFunc = strictecho.StrictEchoHandlerFunc type StrictMiddlewareFunc = strictecho.StrictEchoMiddlewareFunc func NewStrictHandler(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc) ServerInterface { return &strictHandler{ssi: ssi, middlewares: middlewares} } type strictHandler struct { ssi StrictServerInterface middlewares []StrictMiddlewareFunc } // AdminGetGames operation middleware func (sh *strictHandler) AdminGetGames(ctx echo.Context, params AdminGetGamesParams) error { var request AdminGetGamesRequestObject request.Params = params handler := func(ctx echo.Context, request interface{}) (interface{}, error) { return sh.ssi.AdminGetGames(ctx.Request().Context(), request.(AdminGetGamesRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "AdminGetGames") } response, err := handler(ctx, request) if err != nil { return err } else if validResponse, ok := response.(AdminGetGamesResponseObject); ok { return validResponse.VisitAdminGetGamesResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // AdminGetGame operation middleware func (sh *strictHandler) AdminGetGame(ctx echo.Context, gameID PathGameID, params AdminGetGameParams) error { var request AdminGetGameRequestObject request.GameID = gameID request.Params = params handler := func(ctx echo.Context, request interface{}) (interface{}, error) { return sh.ssi.AdminGetGame(ctx.Request().Context(), request.(AdminGetGameRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "AdminGetGame") } response, err := handler(ctx, request) if err != nil { return err } else if validResponse, ok := response.(AdminGetGameResponseObject); ok { return validResponse.VisitAdminGetGameResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // AdminPutGame operation middleware func (sh *strictHandler) AdminPutGame(ctx echo.Context, gameID PathGameID, params AdminPutGameParams) error { var request AdminPutGameRequestObject request.GameID = gameID request.Params = params var body AdminPutGameJSONRequestBody if err := ctx.Bind(&body); err != nil { return err } request.Body = &body handler := func(ctx echo.Context, request interface{}) (interface{}, error) { return sh.ssi.AdminPutGame(ctx.Request().Context(), request.(AdminPutGameRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "AdminPutGame") } response, err := handler(ctx, request) if err != nil { return err } else if validResponse, ok := response.(AdminPutGameResponseObject); ok { return validResponse.VisitAdminPutGameResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // AdminGetUsers operation middleware func (sh *strictHandler) AdminGetUsers(ctx echo.Context, params AdminGetUsersParams) error { var request AdminGetUsersRequestObject request.Params = params handler := func(ctx echo.Context, request interface{}) (interface{}, error) { return sh.ssi.AdminGetUsers(ctx.Request().Context(), request.(AdminGetUsersRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "AdminGetUsers") } response, err := handler(ctx, request) if err != nil { return err } else if validResponse, ok := response.(AdminGetUsersResponseObject); ok { return validResponse.VisitAdminGetUsersResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // GetGames operation middleware func (sh *strictHandler) GetGames(ctx echo.Context, params GetGamesParams) error { var request GetGamesRequestObject request.Params = params handler := func(ctx echo.Context, request interface{}) (interface{}, error) { return sh.ssi.GetGames(ctx.Request().Context(), request.(GetGamesRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "GetGames") } response, err := handler(ctx, request) if err != nil { return err } else if validResponse, ok := response.(GetGamesResponseObject); ok { return validResponse.VisitGetGamesResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // GetGame operation middleware func (sh *strictHandler) GetGame(ctx echo.Context, gameID PathGameID, params GetGameParams) error { var request GetGameRequestObject request.GameID = gameID request.Params = params handler := func(ctx echo.Context, request interface{}) (interface{}, error) { return sh.ssi.GetGame(ctx.Request().Context(), request.(GetGameRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "GetGame") } response, err := handler(ctx, request) if err != nil { return err } else if validResponse, ok := response.(GetGameResponseObject); ok { return validResponse.VisitGetGameResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // PostLogin operation middleware func (sh *strictHandler) PostLogin(ctx echo.Context) error { var request PostLoginRequestObject var body PostLoginJSONRequestBody if err := ctx.Bind(&body); err != nil { return err } request.Body = &body handler := func(ctx echo.Context, request interface{}) (interface{}, error) { return sh.ssi.PostLogin(ctx.Request().Context(), request.(PostLoginRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "PostLogin") } response, err := handler(ctx, request) if err != nil { return err } else if validResponse, ok := response.(PostLoginResponseObject); ok { return validResponse.VisitPostLoginResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // GetToken operation middleware func (sh *strictHandler) GetToken(ctx echo.Context, params GetTokenParams) error { var request GetTokenRequestObject request.Params = params handler := func(ctx echo.Context, request interface{}) (interface{}, error) { return sh.ssi.GetToken(ctx.Request().Context(), request.(GetTokenRequestObject)) } for _, middleware := range sh.middlewares { handler = middleware(handler, "GetToken") } response, err := handler(ctx, request) if err != nil { return err } else if validResponse, ok := response.(GetTokenResponseObject); ok { return validResponse.VisitGetTokenResponse(ctx.Response()) } else if response != nil { return fmt.Errorf("unexpected response type: %T", response) } return nil } // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ "H4sIAAAAAAAC/+xZX2/bNhD/Kho3oBugxY4TFJ3f0qzNOnSdUTfYQxEYtHS2mUmkSlJNvELffSApS6ZF", "W7Sj/OnWPAS2xLv78e7Hu/PxC4pYmjEKVAo0/IIyzHEKErj+tgAcA5/gXC4YJ/9gSRhVzwlFw/IlChHF", "KaAhOrNWhYjDp5xwiNFQ8hxCJKIFpFiJy2WmBITkhM5RUYQow3IxmeMUJiSuDKiHtfrVWw/FhEqYA0eF", "Us1BZIwK0Bt6ieP38CkHIdW3iFEJVH/EWZaQSEPvXQuzy1rvDxxmaIi+79XO6pm3oveKc1aaikFEnGTG", "S8pWwEtjRYheMz4lcQz0/i3XpooQvWPyNctpfP9m3zEZzLSpIkSXdMUaeADTljX1upRQCo2Q4jZnGXBJ", "DBVSEALPQX2EW5xmiWLOG/oZJ6SOW+jgak2/j5WSq2ohm15DpAN+oXm7aTYmIkvwckLLt7VttT44bpoM", "UZxz7a2JgIjRWFhyJ8/7YYP4IVo7TNXSY9fCjLNpAmmb60flMuVbibmEeIKlpf2X0+fPX5y+6DvhCIml", "2S/NU+W5KGEC1Gm+wUQSOp8AlVz5qH6i7SCFEDLMAZWWlVP0/syHGaFELCBWMaidWanfHb86qRiAoR0f", "h+u3RXqU4CXwP2pSMQp/ztDw4263NkTHg3NUhHsKnQ/GqLhyIVFvDgdzPhi/opIvD0L0HnB8mOQ5i+Eg", "wXE+TYnc7gqtuHkksWzNPNu0jfAyYVhnPEMLnelUeUGZXj6MBmIYKbttXNRvQ4PGi2UbEBr7isrd1qci", "44TKH5/9BknCwuCG8ST+7tlPrci0Il9IhjANMDu8A1rCyz2+IAz39gHBtUSnIEo2dsY3o8+PccLYvg/O", "2TCeAutUzrxTxh2VFWbvnDMenI91lTpE8tUtRO9B5Mm2jGWv6YZHls52LolBNIRbiLjB0DmfnHAaOxUR", "4zapjlWbQfMkwVP11fwQcLcduVjvO0QeRSCE3S2sHrZtr1QXloB8d7iiV2cRLBX6ha9un7qP3QaQxgb3", "bS43IK3EfeGYs9iZm7U6PyevetXuXWyBaJ4M9XaPTrxJaCO+Dc1fWEaLA/taW1Y3tldOtXvn74a4fxJu", "iHo3mw1JV/52qz+YkU51Oxh5Y9ZrSnbWdO4E0WH9D8sD5fGzdTNPVHLh7rZhVwy7C5JXgV0PVccV1gNQ", "M1P7uj58vGqsNMTAuU2vLetYbidFZPGv1c/rlNoo+5X6Co93IO5YoNz6PEnWXYnaDeNBa9SobjA2XLo+", "H1ynwYcFEQERAQ5W3YUrEZlXXsdBEplsZLwSlWua5+5wDM+MJnu26dr0pQC+z2Txd7agwa8MXDslEaMT", "PWm3RHokxXMQvWu2oEfX2dwpKiY4Tont3xlORH34p4wlgPUcOheO9DI4cXlULW3uQkFp9efKypqSxkyv", "wt30rVJH6IzpYYGJKzpLplhyJkSgIHKKk+AGpsHZ6A0K0Wfgwoyg+0fHR32FnmVAcUbQEJ0c9Y/6yNxu", "6BD1tN3eHKcmZHPQh0JFUU8Z38TKnlpzAfJCrwqtK5ktvVG9pOe8simuNu5BBv3+XkN5m2kVfiIhFT6J", "q85NCHOOl85BrNgSEHvU/5YIGbBZYCSKEJ32j7dBqPbcsy8IlNBJu9DaPYqqKXmaYr5cQSjtF6EV1d6X", "cqRceMW3o/CGrXLWBds90MGPBI6ge8X8THv7wYKtJE7bJaqbNZsdFyADXAHO8m0UGOWPTgF9yfWSmVHp", "gdF/qAut7SXZq/FsubHya16fyA2W47zYd+JF43yfNnoiNDZt9ixPkmWQZzGWq9PSb+f+2kX613EqL/UG", "q4NZp23VJ7QX40u96ikW4wq/VzHWrWNbMTYq9ynGRuLxijFOkhUGFdndDda33uor6q18u6pvDdX/oqFS", "lEjY3PzozJhwMGHEhHyrl3TV4mRYiBvG442xZvn0eHDi6nHu+COWrshcmr46qOzfhYWS/Q0bs5Nb9Xe0", "9r99nKSV+FDSakcU3YBKBXXFuL1papd/ATwwxNEcqja3LZl80AueYoX4T8XFnG2xYFz+nJDPEAdYmwsM", "wKIoin8DAAD//5oSt8+jKgAA", } // GetSwagger returns the content of the embedded swagger specification file // or error if failed to decode func decodeSpec() ([]byte, error) { zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, "")) if err != nil { return nil, fmt.Errorf("error base64 decoding spec: %w", err) } zr, err := gzip.NewReader(bytes.NewReader(zipped)) if err != nil { return nil, fmt.Errorf("error decompressing spec: %w", err) } var buf bytes.Buffer _, err = buf.ReadFrom(zr) if err != nil { return nil, fmt.Errorf("error decompressing spec: %w", err) } return buf.Bytes(), nil } var rawSpec = decodeSpecCached() // a naive cached of a decoded swagger spec func decodeSpecCached() func() ([]byte, error) { data, err := decodeSpec() return func() ([]byte, error) { return data, err } } // Constructs a synthetic filesystem for resolving external references when loading openapi specifications. func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) { res := make(map[string]func() ([]byte, error)) if len(pathToFile) > 0 { res[pathToFile] = rawSpec } return res } // GetSwagger returns the Swagger specification corresponding to the generated code // in this file. The external references of Swagger specification are resolved. // The logic of resolving external references is tightly connected to "import-mapping" feature. // Externally referenced files must be embedded in the corresponding golang packages. // Urls can be supported but this task was out of the scope. func GetSwagger() (swagger *openapi3.T, err error) { resolvePath := PathToRawSpec("") loader := openapi3.NewLoader() loader.IsExternalRefsAllowed = true loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) { pathToFile := url.String() pathToFile = path.Clean(pathToFile) getSpec, ok := resolvePath[pathToFile] if !ok { err1 := fmt.Errorf("path not found: %s", pathToFile) return nil, err1 } return getSpec() } var specData []byte specData, err = rawSpec() if err != nil { return } swagger, err = loader.LoadFromData(specData) if err != nil { return } return }