Skip to content

Commit

Permalink
chore: RegisterOpenAPIRoutes -> Engine.RegisterOpenAPIRoutes
Browse files Browse the repository at this point in the history
  • Loading branch information
dylanhitt committed Jan 30, 2025
1 parent 1655aee commit 8330a02
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 35 deletions.
6 changes: 3 additions & 3 deletions examples/gin-compat/adaptor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ import (
)

func TestFuegoGin(t *testing.T) {
a := server()
e, _ := server()

t.Run("simply test gin", func(t *testing.T) {
r := httptest.NewRequest("GET", "/gin", nil)
w := httptest.NewRecorder()

a.ServeHTTP(w, r)
e.ServeHTTP(w, r)

require.Equal(t, 200, w.Code)
})
Expand All @@ -24,7 +24,7 @@ func TestFuegoGin(t *testing.T) {
r := httptest.NewRequest("GET", "/fuego", nil)
w := httptest.NewRecorder()

a.ServeHTTP(w, r)
e.ServeHTTP(w, r)

require.Equal(t, http.StatusOK, w.Code)
require.JSONEq(t, `{"message":"Hello"}`, w.Body.String())
Expand Down
10 changes: 6 additions & 4 deletions examples/gin-compat/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@ type HelloResponse struct {
}

func main() {
a := server()
e, _ := server()

fmt.Println("OpenAPI at at http://localhost:8980/swagger ✅")

err := a.Run(":8980")
err := e.Run(":8980")
if err != nil {
panic(err)
}
}

func server() *fuegogin.Adaptor {
func server() (*gin.Engine, *fuego.OpenAPI) {
ginRouter := gin.Default()
engine := fuego.NewEngine()

Expand Down Expand Up @@ -80,8 +80,10 @@ func server() *fuegogin.Adaptor {
option.Tags("Fuego"),
)

engine.RegisterOpenAPIRoutes(&fuegogin.OpenAPIHandler{ginRouter})

// Serve the OpenAPI spec
return fuegogin.NewAdaptor(ginRouter, engine)
return ginRouter, engine.OpenAPI
}

func (h *HelloRequest) InTransform(ctx context.Context) error {
Expand Down
2 changes: 1 addition & 1 deletion examples/petstore/lib/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func TestPetstoreOpenAPIGeneration(t *testing.T) {
),
)

fuego.RegisterOpenAPIRoutes(server.Engine, server)
server.Engine.RegisterOpenAPIRoutes(server)
server.OutputOpenAPISpec()
err := server.OpenAPI.Description().Validate(context.Background())
require.NoError(t, err)
Expand Down
23 changes: 8 additions & 15 deletions extra/fuegogin/adaptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,20 @@ import (
"github.com/go-fuego/fuego/internal"
)

type Adaptor struct {
fuegoEngine *fuego.Engine
type OpenAPIHandler struct {
*gin.Engine
}

func NewAdaptor(g *gin.Engine, e *fuego.Engine) *Adaptor {
a := &Adaptor{Engine: g, fuegoEngine: e}
fuego.RegisterOpenAPIRoutes(e, a)
return a
func (o *OpenAPIHandler) SpecHandler(e *fuego.Engine) {
Get(e, o, e.OpenAPIConfig.SpecURL, e.SpecHandler(), fuego.OptionHide())
}

func (a *Adaptor) SpecHandler() {
Get(a.fuegoEngine, a, a.fuegoEngine.OpenAPIConfig.SpecURL, a.fuegoEngine.SpecHandler(), fuego.OptionHide())
}

func (a *Adaptor) UIHandler() {
func (o *OpenAPIHandler) UIHandler(e *fuego.Engine) {
GetGin(
a.fuegoEngine,
a,
a.fuegoEngine.OpenAPIConfig.SwaggerURL+"/",
gin.WrapH(a.fuegoEngine.OpenAPIConfig.UIHandler(a.fuegoEngine.OpenAPIConfig.SpecURL)),
e,
o,
e.OpenAPIConfig.SwaggerURL+"/",
gin.WrapH(e.OpenAPIConfig.UIHandler(e.OpenAPIConfig.SpecURL)),
fuego.OptionHide(),
)
}
Expand Down
10 changes: 5 additions & 5 deletions openapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,20 +81,20 @@ func NewOpenApiSpec() openapi3.T {
}

type OpenAPIServable interface {
SpecHandler()
UIHandler()
SpecHandler(e *Engine)
UIHandler(e *Engine)
}

func RegisterOpenAPIRoutes(e *Engine, o OpenAPIServable) {
func (e *Engine) RegisterOpenAPIRoutes(o OpenAPIServable) {
if e.OpenAPIConfig.Disabled {
return
}
o.SpecHandler()
o.SpecHandler(e)

if e.OpenAPIConfig.DisableSwaggerUI {
return
}
o.UIHandler()
o.UIHandler(e)
}

// Hide prevents the routes in this server or group from being included in the OpenAPI spec.
Expand Down
6 changes: 3 additions & 3 deletions openapi_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func TestUIHandler(t *testing.T) {
t.Run("works with DefaultOpenAPIHandler", func(t *testing.T) {
s := NewServer()

RegisterOpenAPIRoutes(s.Engine, s)
s.Engine.RegisterOpenAPIRoutes(s)

require.NotNil(t, s.OpenAPIConfig.UIHandler)

Expand All @@ -45,7 +45,7 @@ func TestUIHandler(t *testing.T) {
}),
),
)
RegisterOpenAPIRoutes(s.Engine, s)
s.Engine.RegisterOpenAPIRoutes(s)

require.NotNil(t, s.OpenAPIConfig.UIHandler)

Expand All @@ -68,7 +68,7 @@ func TestUIHandler(t *testing.T) {
),
)

RegisterOpenAPIRoutes(s.Engine, s)
s.Engine.RegisterOpenAPIRoutes(s)

w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/swagger/index.html", nil)
Expand Down
2 changes: 1 addition & 1 deletion serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func (s *Server) setup() error {
Description: "local server",
})
go s.OutputOpenAPISpec()
RegisterOpenAPIRoutes(s.Engine, s)
s.Engine.RegisterOpenAPIRoutes(s)
s.printStartupMessage()

s.Server.Handler = s.Mux
Expand Down
5 changes: 2 additions & 3 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,12 @@ func NewServer(options ...func(*Server)) *Server {
return s
}

// Registers the routes to serve the OpenAPI spec and Swagger UI.
func (s *Server) SpecHandler() {
func (s *Server) SpecHandler(_ *Engine) {
Get(s, s.OpenAPIConfig.SpecURL, s.Engine.SpecHandler(), OptionHide())
s.printOpenAPIMessage(fmt.Sprintf("JSON spec: %s%s", s.url(), s.OpenAPIConfig.SpecURL))
}

func (s *Server) UIHandler() {
func (s *Server) UIHandler(_ *Engine) {
GetStd(s, s.OpenAPIConfig.SwaggerURL+"/", s.OpenAPIConfig.UIHandler(s.OpenAPIConfig.SpecURL).ServeHTTP, OptionHide())
s.printOpenAPIMessage(fmt.Sprintf("OpenAPI UI: %s%s/index.html", s.url(), s.OpenAPIConfig.SwaggerURL))
}
Expand Down

0 comments on commit 8330a02

Please sign in to comment.