aboutsummaryrefslogtreecommitdiffhomepage
path: root/http/route/route.go
diff options
context:
space:
mode:
Diffstat (limited to 'http/route/route.go')
-rw-r--r--http/route/route.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/http/route/route.go b/http/route/route.go
new file mode 100644
index 0000000..ee574a5
--- /dev/null
+++ b/http/route/route.go
@@ -0,0 +1,38 @@
+// Copyright 2017 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package route
+
+import (
+ "strconv"
+
+ "github.com/gorilla/mux"
+ "github.com/miniflux/miniflux/logger"
+)
+
+// Path returns the defined route based on given arguments.
+func Path(router *mux.Router, name string, args ...interface{}) string {
+ route := router.Get(name)
+ if route == nil {
+ logger.Fatal("[Route] Route not found: %s", name)
+ }
+
+ var pairs []string
+ for _, param := range args {
+ switch param.(type) {
+ case string:
+ pairs = append(pairs, param.(string))
+ case int64:
+ val := param.(int64)
+ pairs = append(pairs, strconv.FormatInt(val, 10))
+ }
+ }
+
+ result, err := route.URLPath(pairs...)
+ if err != nil {
+ logger.Fatal("[Route] %v", err)
+ }
+
+ return result.String()
+}