From 374fe34eb7d626bac8803a91e8f0d8d048336c8e Mon Sep 17 00:00:00 2001 From: Aleksandr Soloshenko Date: Sun, 12 Nov 2023 00:36:10 +0700 Subject: [PATCH] Added: support for root handlers --- internal/infra/http/handlers.go | 12 ++++++++++++ internal/infra/http/http.go | 4 ++++ internal/infra/http/params.go | 9 +++++---- internal/sms-gateway/handlers/module.go | 1 + internal/sms-gateway/handlers/root.go | 18 ++++++++++++++++++ 5 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 internal/sms-gateway/handlers/root.go diff --git a/internal/infra/http/handlers.go b/internal/infra/http/handlers.go index 375b98d..1a2dff3 100644 --- a/internal/infra/http/handlers.go +++ b/internal/infra/http/handlers.go @@ -9,6 +9,10 @@ type ApiHanlder interface { Register(app fiber.Router) } +type RootHanlder interface { + Register(app *fiber.App) +} + func AsApiHandler(f any) any { return fx.Annotate( f, @@ -17,6 +21,14 @@ func AsApiHandler(f any) any { ) } +func AsRootHandler(f any) any { + return fx.Annotate( + f, + fx.As(new(RootHanlder)), + fx.ResultTags(`group:"root-routes"`), + ) +} + func errorHandler(c *fiber.Ctx, err error) error { code := fiber.StatusInternalServerError diff --git a/internal/infra/http/http.go b/internal/infra/http/http.go index 0b06dc2..4a53c88 100644 --- a/internal/infra/http/http.go +++ b/internal/infra/http/http.go @@ -31,6 +31,10 @@ func New(params Params) (*fiber.App, error) { Logger: params.Logger, })) + for _, handler := range params.RootHandlers { + handler.Register(app) + } + api := app.Group("/api") api.Use(cors.New()) api.Use(jsonify.New()) diff --git a/internal/infra/http/params.go b/internal/infra/http/params.go index ad6cb29..7ab2b0e 100644 --- a/internal/infra/http/params.go +++ b/internal/infra/http/params.go @@ -8,8 +8,9 @@ import ( type Params struct { fx.In - Config Config - Logger *zap.Logger - ApiHandlers []ApiHanlder `group:"api-routes"` - LC fx.Lifecycle + Config Config + Logger *zap.Logger + ApiHandlers []ApiHanlder `group:"api-routes"` + RootHandlers []RootHanlder `group:"root-routes"` + LC fx.Lifecycle } diff --git a/internal/sms-gateway/handlers/module.go b/internal/sms-gateway/handlers/module.go index 1a7f9b0..7784584 100644 --- a/internal/sms-gateway/handlers/module.go +++ b/internal/sms-gateway/handlers/module.go @@ -8,6 +8,7 @@ import ( var Module = fx.Module( "handlers", fx.Provide( + http.AsRootHandler(newRootHandler), http.AsApiHandler(newThirdPartyHandler), http.AsApiHandler(newMobileHandler), ), diff --git a/internal/sms-gateway/handlers/root.go b/internal/sms-gateway/handlers/root.go new file mode 100644 index 0000000..5f8ca7f --- /dev/null +++ b/internal/sms-gateway/handlers/root.go @@ -0,0 +1,18 @@ +package handlers + +import ( + "github.com/gofiber/fiber/v2" +) + +type rootHandler struct { +} + +func (h *rootHandler) Register(app *fiber.App) { + app.Get("/", func(c *fiber.Ctx) error { + return c.Redirect("https://github.com/capcom6/android-sms-gateway") + }) +} + +func newRootHandler() *rootHandler { + return &rootHandler{} +}