From 5715e48332047b5ae39be1c5a1e4a4b7383b168f Mon Sep 17 00:00:00 2001 From: EwenQuim Date: Sun, 22 Dec 2024 11:28:19 +0100 Subject: [PATCH] Share route in Gin handlers --- examples/gin-compat/handlers.go | 12 ++++++------ extra/fuegogin/adaptor.go | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/examples/gin-compat/handlers.go b/examples/gin-compat/handlers.go index 82853233..ecbed337 100644 --- a/examples/gin-compat/handlers.go +++ b/examples/gin-compat/handlers.go @@ -19,22 +19,22 @@ func fuegoControllerGet(c fuego.ContextNoBody) (HelloResponse, error) { }, nil } -func fuegoControllerPost(c fuego.ContextWithBody[HelloRequest]) (HelloResponse, error) { +func fuegoControllerPost(c fuego.ContextWithBody[HelloRequest]) (*HelloResponse, error) { body, err := c.Body() if err != nil { - return HelloResponse{}, err + return nil, err } if body.Word == "forbidden" { - return HelloResponse{}, fuego.BadRequestError{Title: "Forbidden word"} + return nil, fuego.BadRequestError{Title: "Forbidden word"} } - ctx := c.Context().(*gin.Context) - fmt.Printf("%#v", ctx) + _ = c.Context().(*gin.Context) // Access to the Gin context name := c.QueryParam("name") + _ = c.QueryParam("not-exising-param-raises-warning") - return HelloResponse{ + return &HelloResponse{ Message: fmt.Sprintf("Hello %s, %s", body.Word, name), }, nil } diff --git a/extra/fuegogin/adaptor.go b/extra/fuegogin/adaptor.go index 6dc730f9..334034c4 100644 --- a/extra/fuegogin/adaptor.go +++ b/extra/fuegogin/adaptor.go @@ -29,7 +29,7 @@ func Post[T, B any](engine *fuego.Engine, ginRouter gin.IRouter, path string, ha func handleFuego[T, B any](engine *fuego.Engine, ginRouter gin.IRouter, method, path string, fuegoHandler func(c fuego.ContextWithBody[B]) (T, error), options ...func(*fuego.BaseRoute)) *fuego.Route[T, B] { baseRoute := fuego.NewBaseRoute(method, path, fuegoHandler, engine.OpenAPI, options...) - return handle(engine, ginRouter, &fuego.Route[T, B]{BaseRoute: baseRoute}, GinHandler(engine, fuegoHandler)) + return handle(engine, ginRouter, &fuego.Route[T, B]{BaseRoute: baseRoute}, GinHandler(engine, fuegoHandler, baseRoute)) } func handleGin(engine *fuego.Engine, ginRouter gin.IRouter, method, path string, ginHandler gin.HandlerFunc, options ...func(*fuego.BaseRoute)) *fuego.Route[any, any] { @@ -53,13 +53,13 @@ func handle[T, B any](engine *fuego.Engine, ginRouter gin.IRouter, route *fuego. } // Convert a Fuego handler to a Gin handler. -func GinHandler[B, T any](engine *fuego.Engine, handler func(c fuego.ContextWithBody[B]) (T, error)) gin.HandlerFunc { +func GinHandler[B, T any](engine *fuego.Engine, handler func(c fuego.ContextWithBody[B]) (T, error), route fuego.BaseRoute) gin.HandlerFunc { return func(c *gin.Context) { context := &ginContext[B]{ CommonContext: internal.CommonContext[B]{ CommonCtx: c, UrlValues: c.Request.URL.Query(), - OpenAPIParams: map[string]fuego.OpenAPIParam{}, + OpenAPIParams: route.Params, }, ginCtx: c, }