From 5c0d18c0158a6949838fa7daba58e7461fefeb9a Mon Sep 17 00:00:00 2001 From: Vyacheslav1557 Date: Sun, 2 Mar 2025 00:14:16 +0500 Subject: [PATCH 1/2] fix(tester): extend GetContestResponse --- tester/v1/tester.go | 497 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 497 insertions(+) create mode 100644 tester/v1/tester.go diff --git a/tester/v1/tester.go b/tester/v1/tester.go new file mode 100644 index 0000000..4696a8c --- /dev/null +++ b/tester/v1/tester.go @@ -0,0 +1,497 @@ +// Package testerv1 provides primitives to interact with the openapi HTTP API. +// +// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.1 DO NOT EDIT. +package testerv1 + +import ( + "fmt" + "net/url" + "time" + + "github.com/gofiber/fiber/v2" + "github.com/oapi-codegen/runtime" +) + +const ( + BearerAuthScopes = "bearerAuth.Scopes" +) + +// AddParticipantResponse defines model for AddParticipantResponse. +type AddParticipantResponse struct { + Id int32 `json:"id"` +} + +// AddTaskResponse defines model for AddTaskResponse. +type AddTaskResponse struct { + Id int32 `json:"id"` +} + +// BestSolution defines model for BestSolution. +type BestSolution struct { + CreatedAt time.Time `json:"created_at"` + Id int32 `json:"id"` + Language int32 `json:"language"` + ParticipantId int32 `json:"participant_id"` + Penalty int32 `json:"penalty"` + Score int32 `json:"score"` + State int32 `json:"state"` + TaskId int32 `json:"task_id"` + TotalScore int32 `json:"total_score"` + UpdatedAt time.Time `json:"updated_at"` +} + +// Contest defines model for Contest. +type Contest struct { + CreatedAt time.Time `json:"created_at"` + Id int32 `json:"id"` + Title string `json:"title"` + UpdatedAt time.Time `json:"updated_at"` +} + +// CreateContestResponse defines model for CreateContestResponse. +type CreateContestResponse struct { + Id int32 `json:"id"` +} + +// CreateProblemResponse defines model for CreateProblemResponse. +type CreateProblemResponse struct { + Id int32 `json:"id"` +} + +// GetContestResponse defines model for GetContestResponse. +type GetContestResponse struct { + Contest Contest `json:"contest"` + Tasks []struct { + BestSolution BestSolution `json:"best_solution"` + Task RichTask `json:"task"` + } `json:"tasks"` +} + +// GetProblemResponse defines model for GetProblemResponse. +type GetProblemResponse struct { + Problem Problem `json:"problem"` +} + +// ListContestsResponse defines model for ListContestsResponse. +type ListContestsResponse struct { + Contests []Contest `json:"contests"` +} + +// ListProblemsResponse defines model for ListProblemsResponse. +type ListProblemsResponse struct { + Problems []Problem `json:"problems"` +} + +// Problem defines model for Problem. +type Problem struct { + CreatedAt time.Time `json:"created_at"` + Id int32 `json:"id"` + InputFormat string `json:"input_format"` + LatexSummary string `json:"latex_summary"` + Legend string `json:"legend"` + MemoryLimit int32 `json:"memory_limit"` + Notes string `json:"notes"` + OutputFormat string `json:"output_format"` + TimeLimit int32 `json:"time_limit"` + Title string `json:"title"` + Tutorial string `json:"tutorial"` + UpdatedAt time.Time `json:"updated_at"` +} + +// RichTask defines model for RichTask. +type RichTask struct { + CreatedAt time.Time `json:"created_at"` + Id int32 `json:"id"` + MemoryLimit int32 `json:"memory_limit"` + Position int32 `json:"position"` + ProblemId int32 `json:"problem_id"` + TimeLimit int32 `json:"time_limit"` + Title string `json:"title"` + UpdatedAt time.Time `json:"updated_at"` +} + +// DeleteParticipantParams defines parameters for DeleteParticipant. +type DeleteParticipantParams struct { + ParticipantId int32 `form:"participant_id" json:"participant_id"` +} + +// AddParticipantParams defines parameters for AddParticipant. +type AddParticipantParams struct { + UserId int32 `form:"user_id" json:"user_id"` +} + +// DeleteTaskParams defines parameters for DeleteTask. +type DeleteTaskParams struct { + TaskId int32 `form:"task_id" json:"task_id"` +} + +// AddTaskParams defines parameters for AddTask. +type AddTaskParams struct { + ProblemId int32 `form:"problem_id" json:"problem_id"` +} + +// ServerInterface represents all server handlers. +type ServerInterface interface { + + // (GET /contests) + ListContests(c *fiber.Ctx) error + + // (POST /contests) + CreateContest(c *fiber.Ctx) error + + // (DELETE /contests/{id}) + DeleteContest(c *fiber.Ctx, id int32) error + + // (GET /contests/{id}) + GetContest(c *fiber.Ctx, id int32) error + + // (DELETE /contests/{id}/participants) + DeleteParticipant(c *fiber.Ctx, id int32, params DeleteParticipantParams) error + + // (POST /contests/{id}/participants) + AddParticipant(c *fiber.Ctx, id int32, params AddParticipantParams) error + + // (DELETE /contests/{id}/tasks) + DeleteTask(c *fiber.Ctx, id int32, params DeleteTaskParams) error + + // (POST /contests/{id}/tasks) + AddTask(c *fiber.Ctx, id int32, params AddTaskParams) error + + // (GET /problems) + ListProblems(c *fiber.Ctx) error + + // (POST /problems) + CreateProblem(c *fiber.Ctx) error + + // (DELETE /problems/{id}) + DeleteProblem(c *fiber.Ctx, id int32) error + + // (GET /problems/{id}) + GetProblem(c *fiber.Ctx, id int32) error +} + +// ServerInterfaceWrapper converts contexts to parameters. +type ServerInterfaceWrapper struct { + Handler ServerInterface +} + +type MiddlewareFunc fiber.Handler + +// ListContests operation middleware +func (siw *ServerInterfaceWrapper) ListContests(c *fiber.Ctx) error { + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + return siw.Handler.ListContests(c) +} + +// CreateContest operation middleware +func (siw *ServerInterfaceWrapper) CreateContest(c *fiber.Ctx) error { + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + return siw.Handler.CreateContest(c) +} + +// DeleteContest operation middleware +func (siw *ServerInterfaceWrapper) DeleteContest(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "id" ------------- + var id int32 + + err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) + } + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + return siw.Handler.DeleteContest(c, id) +} + +// GetContest operation middleware +func (siw *ServerInterfaceWrapper) GetContest(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "id" ------------- + var id int32 + + err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) + } + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + return siw.Handler.GetContest(c, id) +} + +// DeleteParticipant operation middleware +func (siw *ServerInterfaceWrapper) DeleteParticipant(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "id" ------------- + var id int32 + + err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) + } + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + // Parameter object where we will unmarshal all parameters from the context + var params DeleteParticipantParams + + var query url.Values + query, err = url.ParseQuery(string(c.Request().URI().QueryString())) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) + } + + // ------------- Required query parameter "participant_id" ------------- + + if paramValue := c.Query("participant_id"); paramValue != "" { + + } else { + err = fmt.Errorf("Query argument participant_id is required, but not found") + c.Status(fiber.StatusBadRequest).JSON(err) + return err + } + + err = runtime.BindQueryParameter("form", true, true, "participant_id", query, ¶ms.ParticipantId) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter participant_id: %w", err).Error()) + } + + return siw.Handler.DeleteParticipant(c, id, params) +} + +// AddParticipant operation middleware +func (siw *ServerInterfaceWrapper) AddParticipant(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "id" ------------- + var id int32 + + err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) + } + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + // Parameter object where we will unmarshal all parameters from the context + var params AddParticipantParams + + var query url.Values + query, err = url.ParseQuery(string(c.Request().URI().QueryString())) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) + } + + // ------------- Required query parameter "user_id" ------------- + + if paramValue := c.Query("user_id"); paramValue != "" { + + } else { + err = fmt.Errorf("Query argument user_id is required, but not found") + c.Status(fiber.StatusBadRequest).JSON(err) + return err + } + + err = runtime.BindQueryParameter("form", true, true, "user_id", query, ¶ms.UserId) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter user_id: %w", err).Error()) + } + + return siw.Handler.AddParticipant(c, id, params) +} + +// DeleteTask operation middleware +func (siw *ServerInterfaceWrapper) DeleteTask(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "id" ------------- + var id int32 + + err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) + } + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + // Parameter object where we will unmarshal all parameters from the context + var params DeleteTaskParams + + var query url.Values + query, err = url.ParseQuery(string(c.Request().URI().QueryString())) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) + } + + // ------------- Required query parameter "task_id" ------------- + + if paramValue := c.Query("task_id"); paramValue != "" { + + } else { + err = fmt.Errorf("Query argument task_id is required, but not found") + c.Status(fiber.StatusBadRequest).JSON(err) + return err + } + + err = runtime.BindQueryParameter("form", true, true, "task_id", query, ¶ms.TaskId) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter task_id: %w", err).Error()) + } + + return siw.Handler.DeleteTask(c, id, params) +} + +// AddTask operation middleware +func (siw *ServerInterfaceWrapper) AddTask(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "id" ------------- + var id int32 + + err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) + } + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + // Parameter object where we will unmarshal all parameters from the context + var params AddTaskParams + + var query url.Values + query, err = url.ParseQuery(string(c.Request().URI().QueryString())) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) + } + + // ------------- Required query parameter "problem_id" ------------- + + if paramValue := c.Query("problem_id"); paramValue != "" { + + } else { + err = fmt.Errorf("Query argument problem_id is required, but not found") + c.Status(fiber.StatusBadRequest).JSON(err) + return err + } + + err = runtime.BindQueryParameter("form", true, true, "problem_id", query, ¶ms.ProblemId) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter problem_id: %w", err).Error()) + } + + return siw.Handler.AddTask(c, id, params) +} + +// ListProblems operation middleware +func (siw *ServerInterfaceWrapper) ListProblems(c *fiber.Ctx) error { + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + return siw.Handler.ListProblems(c) +} + +// CreateProblem operation middleware +func (siw *ServerInterfaceWrapper) CreateProblem(c *fiber.Ctx) error { + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + return siw.Handler.CreateProblem(c) +} + +// DeleteProblem operation middleware +func (siw *ServerInterfaceWrapper) DeleteProblem(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "id" ------------- + var id int32 + + err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) + } + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + return siw.Handler.DeleteProblem(c, id) +} + +// GetProblem operation middleware +func (siw *ServerInterfaceWrapper) GetProblem(c *fiber.Ctx) error { + + var err error + + // ------------- Path parameter "id" ------------- + var id int32 + + err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) + if err != nil { + return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) + } + + c.Context().SetUserValue(BearerAuthScopes, []string{}) + + return siw.Handler.GetProblem(c, id) +} + +// FiberServerOptions provides options for the Fiber server. +type FiberServerOptions struct { + BaseURL string + Middlewares []MiddlewareFunc +} + +// RegisterHandlers creates http.Handler with routing matching OpenAPI spec. +func RegisterHandlers(router fiber.Router, si ServerInterface) { + RegisterHandlersWithOptions(router, si, FiberServerOptions{}) +} + +// RegisterHandlersWithOptions creates http.Handler with additional options +func RegisterHandlersWithOptions(router fiber.Router, si ServerInterface, options FiberServerOptions) { + wrapper := ServerInterfaceWrapper{ + Handler: si, + } + + for _, m := range options.Middlewares { + router.Use(fiber.Handler(m)) + } + + router.Get(options.BaseURL+"/contests", wrapper.ListContests) + + router.Post(options.BaseURL+"/contests", wrapper.CreateContest) + + router.Delete(options.BaseURL+"/contests/:id", wrapper.DeleteContest) + + router.Get(options.BaseURL+"/contests/:id", wrapper.GetContest) + + router.Delete(options.BaseURL+"/contests/:id/participants", wrapper.DeleteParticipant) + + router.Post(options.BaseURL+"/contests/:id/participants", wrapper.AddParticipant) + + router.Delete(options.BaseURL+"/contests/:id/tasks", wrapper.DeleteTask) + + router.Post(options.BaseURL+"/contests/:id/tasks", wrapper.AddTask) + + router.Get(options.BaseURL+"/problems", wrapper.ListProblems) + + router.Post(options.BaseURL+"/problems", wrapper.CreateProblem) + + router.Delete(options.BaseURL+"/problems/:id", wrapper.DeleteProblem) + + router.Get(options.BaseURL+"/problems/:id", wrapper.GetProblem) + +} From ba460860581eae8a297b09e135ac6a1ab95f7e24 Mon Sep 17 00:00:00 2001 From: Vyacheslav1557 Date: Sun, 2 Mar 2025 00:18:56 +0500 Subject: [PATCH 2/2] fix(tester): --- tester/v1/tester.go | 497 -------------------------------------------- 1 file changed, 497 deletions(-) delete mode 100644 tester/v1/tester.go diff --git a/tester/v1/tester.go b/tester/v1/tester.go deleted file mode 100644 index 4696a8c..0000000 --- a/tester/v1/tester.go +++ /dev/null @@ -1,497 +0,0 @@ -// Package testerv1 provides primitives to interact with the openapi HTTP API. -// -// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.1 DO NOT EDIT. -package testerv1 - -import ( - "fmt" - "net/url" - "time" - - "github.com/gofiber/fiber/v2" - "github.com/oapi-codegen/runtime" -) - -const ( - BearerAuthScopes = "bearerAuth.Scopes" -) - -// AddParticipantResponse defines model for AddParticipantResponse. -type AddParticipantResponse struct { - Id int32 `json:"id"` -} - -// AddTaskResponse defines model for AddTaskResponse. -type AddTaskResponse struct { - Id int32 `json:"id"` -} - -// BestSolution defines model for BestSolution. -type BestSolution struct { - CreatedAt time.Time `json:"created_at"` - Id int32 `json:"id"` - Language int32 `json:"language"` - ParticipantId int32 `json:"participant_id"` - Penalty int32 `json:"penalty"` - Score int32 `json:"score"` - State int32 `json:"state"` - TaskId int32 `json:"task_id"` - TotalScore int32 `json:"total_score"` - UpdatedAt time.Time `json:"updated_at"` -} - -// Contest defines model for Contest. -type Contest struct { - CreatedAt time.Time `json:"created_at"` - Id int32 `json:"id"` - Title string `json:"title"` - UpdatedAt time.Time `json:"updated_at"` -} - -// CreateContestResponse defines model for CreateContestResponse. -type CreateContestResponse struct { - Id int32 `json:"id"` -} - -// CreateProblemResponse defines model for CreateProblemResponse. -type CreateProblemResponse struct { - Id int32 `json:"id"` -} - -// GetContestResponse defines model for GetContestResponse. -type GetContestResponse struct { - Contest Contest `json:"contest"` - Tasks []struct { - BestSolution BestSolution `json:"best_solution"` - Task RichTask `json:"task"` - } `json:"tasks"` -} - -// GetProblemResponse defines model for GetProblemResponse. -type GetProblemResponse struct { - Problem Problem `json:"problem"` -} - -// ListContestsResponse defines model for ListContestsResponse. -type ListContestsResponse struct { - Contests []Contest `json:"contests"` -} - -// ListProblemsResponse defines model for ListProblemsResponse. -type ListProblemsResponse struct { - Problems []Problem `json:"problems"` -} - -// Problem defines model for Problem. -type Problem struct { - CreatedAt time.Time `json:"created_at"` - Id int32 `json:"id"` - InputFormat string `json:"input_format"` - LatexSummary string `json:"latex_summary"` - Legend string `json:"legend"` - MemoryLimit int32 `json:"memory_limit"` - Notes string `json:"notes"` - OutputFormat string `json:"output_format"` - TimeLimit int32 `json:"time_limit"` - Title string `json:"title"` - Tutorial string `json:"tutorial"` - UpdatedAt time.Time `json:"updated_at"` -} - -// RichTask defines model for RichTask. -type RichTask struct { - CreatedAt time.Time `json:"created_at"` - Id int32 `json:"id"` - MemoryLimit int32 `json:"memory_limit"` - Position int32 `json:"position"` - ProblemId int32 `json:"problem_id"` - TimeLimit int32 `json:"time_limit"` - Title string `json:"title"` - UpdatedAt time.Time `json:"updated_at"` -} - -// DeleteParticipantParams defines parameters for DeleteParticipant. -type DeleteParticipantParams struct { - ParticipantId int32 `form:"participant_id" json:"participant_id"` -} - -// AddParticipantParams defines parameters for AddParticipant. -type AddParticipantParams struct { - UserId int32 `form:"user_id" json:"user_id"` -} - -// DeleteTaskParams defines parameters for DeleteTask. -type DeleteTaskParams struct { - TaskId int32 `form:"task_id" json:"task_id"` -} - -// AddTaskParams defines parameters for AddTask. -type AddTaskParams struct { - ProblemId int32 `form:"problem_id" json:"problem_id"` -} - -// ServerInterface represents all server handlers. -type ServerInterface interface { - - // (GET /contests) - ListContests(c *fiber.Ctx) error - - // (POST /contests) - CreateContest(c *fiber.Ctx) error - - // (DELETE /contests/{id}) - DeleteContest(c *fiber.Ctx, id int32) error - - // (GET /contests/{id}) - GetContest(c *fiber.Ctx, id int32) error - - // (DELETE /contests/{id}/participants) - DeleteParticipant(c *fiber.Ctx, id int32, params DeleteParticipantParams) error - - // (POST /contests/{id}/participants) - AddParticipant(c *fiber.Ctx, id int32, params AddParticipantParams) error - - // (DELETE /contests/{id}/tasks) - DeleteTask(c *fiber.Ctx, id int32, params DeleteTaskParams) error - - // (POST /contests/{id}/tasks) - AddTask(c *fiber.Ctx, id int32, params AddTaskParams) error - - // (GET /problems) - ListProblems(c *fiber.Ctx) error - - // (POST /problems) - CreateProblem(c *fiber.Ctx) error - - // (DELETE /problems/{id}) - DeleteProblem(c *fiber.Ctx, id int32) error - - // (GET /problems/{id}) - GetProblem(c *fiber.Ctx, id int32) error -} - -// ServerInterfaceWrapper converts contexts to parameters. -type ServerInterfaceWrapper struct { - Handler ServerInterface -} - -type MiddlewareFunc fiber.Handler - -// ListContests operation middleware -func (siw *ServerInterfaceWrapper) ListContests(c *fiber.Ctx) error { - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - return siw.Handler.ListContests(c) -} - -// CreateContest operation middleware -func (siw *ServerInterfaceWrapper) CreateContest(c *fiber.Ctx) error { - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - return siw.Handler.CreateContest(c) -} - -// DeleteContest operation middleware -func (siw *ServerInterfaceWrapper) DeleteContest(c *fiber.Ctx) error { - - var err error - - // ------------- Path parameter "id" ------------- - var id int32 - - err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) - } - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - return siw.Handler.DeleteContest(c, id) -} - -// GetContest operation middleware -func (siw *ServerInterfaceWrapper) GetContest(c *fiber.Ctx) error { - - var err error - - // ------------- Path parameter "id" ------------- - var id int32 - - err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) - } - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - return siw.Handler.GetContest(c, id) -} - -// DeleteParticipant operation middleware -func (siw *ServerInterfaceWrapper) DeleteParticipant(c *fiber.Ctx) error { - - var err error - - // ------------- Path parameter "id" ------------- - var id int32 - - err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) - } - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - // Parameter object where we will unmarshal all parameters from the context - var params DeleteParticipantParams - - var query url.Values - query, err = url.ParseQuery(string(c.Request().URI().QueryString())) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) - } - - // ------------- Required query parameter "participant_id" ------------- - - if paramValue := c.Query("participant_id"); paramValue != "" { - - } else { - err = fmt.Errorf("Query argument participant_id is required, but not found") - c.Status(fiber.StatusBadRequest).JSON(err) - return err - } - - err = runtime.BindQueryParameter("form", true, true, "participant_id", query, ¶ms.ParticipantId) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter participant_id: %w", err).Error()) - } - - return siw.Handler.DeleteParticipant(c, id, params) -} - -// AddParticipant operation middleware -func (siw *ServerInterfaceWrapper) AddParticipant(c *fiber.Ctx) error { - - var err error - - // ------------- Path parameter "id" ------------- - var id int32 - - err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) - } - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - // Parameter object where we will unmarshal all parameters from the context - var params AddParticipantParams - - var query url.Values - query, err = url.ParseQuery(string(c.Request().URI().QueryString())) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) - } - - // ------------- Required query parameter "user_id" ------------- - - if paramValue := c.Query("user_id"); paramValue != "" { - - } else { - err = fmt.Errorf("Query argument user_id is required, but not found") - c.Status(fiber.StatusBadRequest).JSON(err) - return err - } - - err = runtime.BindQueryParameter("form", true, true, "user_id", query, ¶ms.UserId) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter user_id: %w", err).Error()) - } - - return siw.Handler.AddParticipant(c, id, params) -} - -// DeleteTask operation middleware -func (siw *ServerInterfaceWrapper) DeleteTask(c *fiber.Ctx) error { - - var err error - - // ------------- Path parameter "id" ------------- - var id int32 - - err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) - } - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - // Parameter object where we will unmarshal all parameters from the context - var params DeleteTaskParams - - var query url.Values - query, err = url.ParseQuery(string(c.Request().URI().QueryString())) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) - } - - // ------------- Required query parameter "task_id" ------------- - - if paramValue := c.Query("task_id"); paramValue != "" { - - } else { - err = fmt.Errorf("Query argument task_id is required, but not found") - c.Status(fiber.StatusBadRequest).JSON(err) - return err - } - - err = runtime.BindQueryParameter("form", true, true, "task_id", query, ¶ms.TaskId) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter task_id: %w", err).Error()) - } - - return siw.Handler.DeleteTask(c, id, params) -} - -// AddTask operation middleware -func (siw *ServerInterfaceWrapper) AddTask(c *fiber.Ctx) error { - - var err error - - // ------------- Path parameter "id" ------------- - var id int32 - - err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) - } - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - // Parameter object where we will unmarshal all parameters from the context - var params AddTaskParams - - var query url.Values - query, err = url.ParseQuery(string(c.Request().URI().QueryString())) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for query string: %w", err).Error()) - } - - // ------------- Required query parameter "problem_id" ------------- - - if paramValue := c.Query("problem_id"); paramValue != "" { - - } else { - err = fmt.Errorf("Query argument problem_id is required, but not found") - c.Status(fiber.StatusBadRequest).JSON(err) - return err - } - - err = runtime.BindQueryParameter("form", true, true, "problem_id", query, ¶ms.ProblemId) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter problem_id: %w", err).Error()) - } - - return siw.Handler.AddTask(c, id, params) -} - -// ListProblems operation middleware -func (siw *ServerInterfaceWrapper) ListProblems(c *fiber.Ctx) error { - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - return siw.Handler.ListProblems(c) -} - -// CreateProblem operation middleware -func (siw *ServerInterfaceWrapper) CreateProblem(c *fiber.Ctx) error { - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - return siw.Handler.CreateProblem(c) -} - -// DeleteProblem operation middleware -func (siw *ServerInterfaceWrapper) DeleteProblem(c *fiber.Ctx) error { - - var err error - - // ------------- Path parameter "id" ------------- - var id int32 - - err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) - } - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - return siw.Handler.DeleteProblem(c, id) -} - -// GetProblem operation middleware -func (siw *ServerInterfaceWrapper) GetProblem(c *fiber.Ctx) error { - - var err error - - // ------------- Path parameter "id" ------------- - var id int32 - - err = runtime.BindStyledParameterWithOptions("simple", "id", c.Params("id"), &id, runtime.BindStyledParameterOptions{Explode: false, Required: true}) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, fmt.Errorf("Invalid format for parameter id: %w", err).Error()) - } - - c.Context().SetUserValue(BearerAuthScopes, []string{}) - - return siw.Handler.GetProblem(c, id) -} - -// FiberServerOptions provides options for the Fiber server. -type FiberServerOptions struct { - BaseURL string - Middlewares []MiddlewareFunc -} - -// RegisterHandlers creates http.Handler with routing matching OpenAPI spec. -func RegisterHandlers(router fiber.Router, si ServerInterface) { - RegisterHandlersWithOptions(router, si, FiberServerOptions{}) -} - -// RegisterHandlersWithOptions creates http.Handler with additional options -func RegisterHandlersWithOptions(router fiber.Router, si ServerInterface, options FiberServerOptions) { - wrapper := ServerInterfaceWrapper{ - Handler: si, - } - - for _, m := range options.Middlewares { - router.Use(fiber.Handler(m)) - } - - router.Get(options.BaseURL+"/contests", wrapper.ListContests) - - router.Post(options.BaseURL+"/contests", wrapper.CreateContest) - - router.Delete(options.BaseURL+"/contests/:id", wrapper.DeleteContest) - - router.Get(options.BaseURL+"/contests/:id", wrapper.GetContest) - - router.Delete(options.BaseURL+"/contests/:id/participants", wrapper.DeleteParticipant) - - router.Post(options.BaseURL+"/contests/:id/participants", wrapper.AddParticipant) - - router.Delete(options.BaseURL+"/contests/:id/tasks", wrapper.DeleteTask) - - router.Post(options.BaseURL+"/contests/:id/tasks", wrapper.AddTask) - - router.Get(options.BaseURL+"/problems", wrapper.ListProblems) - - router.Post(options.BaseURL+"/problems", wrapper.CreateProblem) - - router.Delete(options.BaseURL+"/problems/:id", wrapper.DeleteProblem) - - router.Get(options.BaseURL+"/problems/:id", wrapper.GetProblem) - -}