1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package urls
import (
"shrine/enums"
"shrine/utils/logger"
"github.com/gofiber/fiber/v2"
)
var methodBinders = map[enums.HTTPMethod]func(fiber.Router, string, fiber.Handler) fiber.Router{
enums.GET: func(r fiber.Router, path string, h fiber.Handler) fiber.Router { return r.Get(path, h) },
enums.POST: func(r fiber.Router, path string, h fiber.Handler) fiber.Router { return r.Post(path, h) },
enums.PUT: func(r fiber.Router, path string, h fiber.Handler) fiber.Router { return r.Put(path, h) },
enums.PATCH: func(r fiber.Router, path string, h fiber.Handler) fiber.Router { return r.Patch(path, h) },
enums.DELETE: func(r fiber.Router, path string, h fiber.Handler) fiber.Router { return r.Delete(path, h) },
enums.OPTIONS: func(r fiber.Router, path string, h fiber.Handler) fiber.Router { return r.Options(path, h) },
enums.HEAD: func(r fiber.Router, path string, h fiber.Handler) fiber.Router { return r.Head(path, h) },
}
func Attach(app *fiber.App) {
namespaceGroups := make(map[string]fiber.Router)
for fullName, route := range registry.routes {
group, exists := namespaceGroups[route.namespace]
if !exists {
group = app.Group("/" + route.namespace)
namespaceGroups[route.namespace] = group
}
binder, ok := methodBinders[route.method]
if !ok {
logger.Fatalf("URLs", "Unsupported HTTP method: %s for route %s", route.method, fullName)
}
fiberRoute := binder(group, route.path, route.handler)
fiberRoute.Name(fullName)
}
}
|