aboutsummaryrefslogtreecommitdiff
path: root/utils/urls/path.go
diff options
context:
space:
mode:
Diffstat (limited to 'utils/urls/path.go')
-rw-r--r--utils/urls/path.go45
1 files changed, 42 insertions, 3 deletions
diff --git a/utils/urls/path.go b/utils/urls/path.go
index b865676..a3b3ec9 100644
--- a/utils/urls/path.go
+++ b/utils/urls/path.go
@@ -1,12 +1,24 @@
package urls
import (
- "dove/enums"
+ "strings"
"github.com/gofiber/fiber/v2"
)
-func Path(method enums.HTTPMethod, path string, handler fiber.Handler, name string) {
+type HTTPMethod string
+
+const (
+ Delete HTTPMethod = "DELETE"
+ Get HTTPMethod = "GET"
+ Head HTTPMethod = "HEAD"
+ Options HTTPMethod = "OPTIONS"
+ Patch HTTPMethod = "PATCH"
+ Post HTTPMethod = "POST"
+ Put HTTPMethod = "PUT"
+)
+
+func Path(method HTTPMethod, path string, handler fiber.Handler, name string) {
registry.Mutex.Lock()
defer registry.Mutex.Unlock()
@@ -14,7 +26,7 @@ func Path(method enums.HTTPMethod, path string, handler fiber.Handler, name stri
fullName := resolveFullName(namespace, name)
fullPath := resolveFullPath(namespace, path)
- registry.Routes[fullName] = registeredRoute{
+ registry.Routes[fullName] = RegisteredRoute{
Method: method,
Path: path,
Handler: handler,
@@ -35,3 +47,30 @@ func GetFullPath(routeName string) (string, bool) {
return route.FullPath, true
}
+
+func resolveFullName(namespace string, name string) string {
+ switch namespace {
+ case "":
+ return name
+ default:
+ return namespace + "." + name
+ }
+}
+
+func resolveFullPath(namespace string, path string) string {
+ switch namespace {
+ case "":
+ return ensureLeadingSlash(path)
+ default:
+ return "/" + namespace + ensureLeadingSlash(path)
+ }
+}
+
+func ensureLeadingSlash(path string) string {
+ switch strings.HasPrefix(path, "/") {
+ case true:
+ return path
+ default:
+ return "/" + path
+ }
+}