Added: support for root handlers

This commit is contained in:
Aleksandr Soloshenko 2023-11-12 00:36:10 +07:00 committed by Aleksandr Soloshenko
parent aea8ddfc46
commit 374fe34eb7
5 changed files with 40 additions and 4 deletions

View File

@ -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

View File

@ -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())

View File

@ -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
}

View File

@ -8,6 +8,7 @@ import (
var Module = fx.Module(
"handlers",
fx.Provide(
http.AsRootHandler(newRootHandler),
http.AsApiHandler(newThirdPartyHandler),
http.AsApiHandler(newMobileHandler),
),

View File

@ -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{}
}