aboutsummaryrefslogtreecommitdiffhomepage
path: root/http/route
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2018-01-02 22:04:48 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2018-01-02 22:04:48 -0800
commit320d1b016747ba4501da9417d9ce5f99368a5768 (patch)
tree1054d96afde6022951b76cc4a09b78e1e3f05058 /http/route
parentc39f2e1a8d2de6d412bcc673d29eb0f7a2d1f5f7 (diff)
Refactor packages to have more idiomatic code base
Diffstat (limited to 'http/route')
-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()
+}