diff options
Diffstat (limited to 'utils/urls/path.go')
| -rw-r--r-- | utils/urls/path.go | 45 |
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 + } +} |
