diff --git a/examples/petstore-expanded/gin/api/petstore-server.gen.go b/examples/petstore-expanded/gin/api/petstore-server.gen.go index 0cec0c12e..9ed0d50ee 100644 --- a/examples/petstore-expanded/gin/api/petstore-server.gen.go +++ b/examples/petstore-expanded/gin/api/petstore-server.gen.go @@ -1,6 +1,6 @@ // Package api provides primitives to interact with the openapi HTTP API. // -// Code generated by github.com/deepmap/oapi-codegen version v1.10.0 DO NOT EDIT. +// Code generated by github.com/deepmap/oapi-codegen version (devel) DO NOT EDIT. package api import ( @@ -36,9 +36,12 @@ type ServerInterface interface { // ServerInterfaceWrapper converts contexts to parameters. type ServerInterfaceWrapper struct { - Handler ServerInterface + Handler ServerInterface + HandlerMiddlewares []MiddlewareFunc } +type MiddlewareFunc func(c *gin.Context) + // FindPets operation middleware func (siw *ServerInterfaceWrapper) FindPets(c *gin.Context) { @@ -69,12 +72,20 @@ func (siw *ServerInterfaceWrapper) FindPets(c *gin.Context) { return } + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + } + siw.Handler.FindPets(c, params) } // AddPet operation middleware func (siw *ServerInterfaceWrapper) AddPet(c *gin.Context) { + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + } + siw.Handler.AddPet(c) } @@ -92,6 +103,10 @@ func (siw *ServerInterfaceWrapper) DeletePet(c *gin.Context) { return } + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + } + siw.Handler.DeletePet(c, id) } @@ -109,31 +124,31 @@ func (siw *ServerInterfaceWrapper) FindPetByID(c *gin.Context) { return } + for _, middleware := range siw.HandlerMiddlewares { + middleware(c) + } + siw.Handler.FindPetByID(c, id) } // GinServerOptions provides options for the Gin server. type GinServerOptions struct { BaseURL string - Middlewares []gin.HandlerFunc + Middlewares []MiddlewareFunc } -// keeping for backward compatibility -type MiddlewareFunc = gin.HandlerFunc - // RegisterHandlers creates http.Handler with routing matching OpenAPI spec. -func RegisterHandlers(router gin.IRouter, si ServerInterface) gin.IRouter { +func RegisterHandlers(router *gin.Engine, si ServerInterface) *gin.Engine { return RegisterHandlersWithOptions(router, si, GinServerOptions{}) } // RegisterHandlersWithOptions creates http.Handler with additional options -func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options GinServerOptions) gin.IRouter { +func RegisterHandlersWithOptions(router *gin.Engine, si ServerInterface, options GinServerOptions) *gin.Engine { wrapper := ServerInterfaceWrapper{ - Handler: si, + Handler: si, + HandlerMiddlewares: options.Middlewares, } - router = router.Group("/", options.Middlewares...) - router.GET(options.BaseURL+"/pets", wrapper.FindPets) router.POST(options.BaseURL+"/pets", wrapper.AddPet) @@ -143,9 +158,7 @@ func RegisterHandlersWithOptions(router gin.IRouter, si ServerInterface, options router.GET(options.BaseURL+"/pets/:id", wrapper.FindPetByID) return router -} - -// Base64 encoded, gzipped, json marshaled Swagger object +} // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ "H4sIAAAAAAAC/+RXW48budH9KwV+32OnNbEXedBTvB4vICBrT+LdvKznoYZdkmrBSw9Z1FgY6L8HRbZu", diff --git a/examples/petstore-expanded/gin/api/petstore-types.gen.go b/examples/petstore-expanded/gin/api/petstore-types.gen.go index d56ecc774..24add6418 100644 --- a/examples/petstore-expanded/gin/api/petstore-types.gen.go +++ b/examples/petstore-expanded/gin/api/petstore-types.gen.go @@ -1,6 +1,6 @@ // Package api provides primitives to interact with the openapi HTTP API. // -// Code generated by github.com/deepmap/oapi-codegen version v1.10.0 DO NOT EDIT. +// Code generated by github.com/deepmap/oapi-codegen version (devel) DO NOT EDIT. package api // Error defines model for Error. diff --git a/examples/petstore-expanded/gin/petstore.go b/examples/petstore-expanded/gin/petstore.go index ba8d96860..ea12fdf1a 100644 --- a/examples/petstore-expanded/gin/petstore.go +++ b/examples/petstore-expanded/gin/petstore.go @@ -36,9 +36,7 @@ func NewGinPetServer(petStore *api.PetStore, port int) *http.Server { r.Use(middleware.OapiRequestValidator(swagger)) // We now register our petStore above as the handler for the interface - apiRoutes := api.RegisterHandlers(r, petStore).(*gin.RouterGroup) - - r.Use(apiRoutes.Handlers...) + r = api.RegisterHandlers(r, petStore) s := &http.Server{ Handler: r,