Added seed code for caas-helm.
[ta/caas-helm.git] / src / chart-repo-handler / pkg / api / routers.go
diff --git a/src/chart-repo-handler/pkg/api/routers.go b/src/chart-repo-handler/pkg/api/routers.go
new file mode 100644 (file)
index 0000000..d5c5e81
--- /dev/null
@@ -0,0 +1,86 @@
+// Copyright 2019 Nokia
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package api
+
+import (
+       "net/http"
+       "pkg/config"
+
+       "github.com/gorilla/mux"
+       "github.com/ncw/swift"
+)
+
+type Route struct {
+       Name        string
+       Method      string
+       Pattern     string
+       HandlerFunc func(*swift.Connection, config.EnvConfig) http.HandlerFunc
+}
+
+type Routes []Route
+
+var routes = Routes{
+       Route{
+               "Index",
+               "GET",
+               "/",
+               Index,
+       },
+
+       Route{
+               "ObjectGet",
+               "GET",
+               // tonyaw: make it can match slash, such as "aaa/bbb"
+               "/{id:.*}",
+               ObjectGet,
+       },
+       Route{
+               "ObjectPut",
+               "POST",
+               // tonyaw: make it can match slash, such as "aaa/bbb"
+               "/{id:.*}",
+               ObjectPut,
+       },
+       Route{
+               "ObjectPut",
+               "PUT",
+               // tonyaw: make it can match slash, such as "aaa/bbb"
+               "/{id:.*}",
+               ObjectPut,
+       },
+       Route{
+               "ObjectDelete",
+               "DELETE",
+               "/{id:.*}",
+               ObjectDelete,
+       },
+}
+
+func NewRouter(c *swift.Connection, config config.EnvConfig) *mux.Router {
+       router := mux.NewRouter().StrictSlash(true)
+       for _, route := range routes {
+               var handler http.Handler
+               handler = route.HandlerFunc(c, config)
+               handler = Logger(handler, route.Name)
+
+               router.
+                       Methods(route.Method).
+                       Path(route.Pattern).
+                       Name(route.Name).
+                       Handler(handler)
+       }
+
+       return router
+}