|
@@ -6,6 +6,7 @@ import (
|
|
|
"io/ioutil"
|
|
|
"log"
|
|
|
"net/http"
|
|
|
+ "path"
|
|
|
"path/filepath"
|
|
|
"runtime/debug"
|
|
|
"strconv"
|
|
@@ -76,7 +77,7 @@ func (pp PathPattern) Path(model string) string {
|
|
|
return fmt.Sprintf(pp.PathPattern, model)
|
|
|
}
|
|
|
|
|
|
-// Generate CRUD handlers
|
|
|
+// Generate CRUD handlers for models
|
|
|
func generateHandler(r *mux.Router, model string) {
|
|
|
var (
|
|
|
patterns []PathPattern = []PathPattern{
|
|
@@ -87,13 +88,7 @@ func generateHandler(r *mux.Router, model string) {
|
|
|
PathPattern{"/%s/{id}/delete", "/%s?format=html&tpl_layout=base&tpl_content=%s", []string{"DELETE"}},
|
|
|
}
|
|
|
|
|
|
- apiPatterns []PathPattern = []PathPattern{
|
|
|
- PathPattern{"/api/%s", "", []string{"GET"}},
|
|
|
- PathPattern{"/api/%s/{id}", "", []string{"GET"}},
|
|
|
- PathPattern{"/api/%s/add/", "", []string{"GET", "POST"}},
|
|
|
- PathPattern{"/api/%s/{id}/update", "", []string{"GET", "POST"}},
|
|
|
- PathPattern{"/api/%s/{id}/delete", "", []string{"DELETE"}},
|
|
|
- }
|
|
|
+ apiPatterns []PathPattern
|
|
|
|
|
|
executePatterns []PathPattern = []PathPattern{
|
|
|
PathPattern{"/%s/{id}/execute", "", []string{"GET"}},
|
|
@@ -103,10 +98,21 @@ func generateHandler(r *mux.Router, model string) {
|
|
|
PathPattern{"/%s/{id}/files/{filename}", "", []string{"GET"}},
|
|
|
}
|
|
|
)
|
|
|
+
|
|
|
+ // Generate API patterns prefixing "api" path
|
|
|
+
|
|
|
+ for _, p := range patterns {
|
|
|
+ apiPatterns = append(apiPatterns, PathPattern{path.Join("api", p.PathPattern), "", []string{"GET"}})
|
|
|
+ }
|
|
|
+
|
|
|
+ // Install standard paths
|
|
|
+
|
|
|
for _, pattern := range patterns {
|
|
|
r.Handle(pattern.Path(model), jwtCookie.Handler(recoverHandler(modelHandler(model, pattern)))).Methods(pattern.Methods...)
|
|
|
}
|
|
|
|
|
|
+ // Install api paths
|
|
|
+
|
|
|
for _, pattern := range apiPatterns {
|
|
|
r.Handle(pattern.Path(model), jwtHeader.Handler(recoverHandler(modelHandler(model, pattern)))).Methods(pattern.Methods...)
|
|
|
}
|
|
@@ -144,9 +150,11 @@ func Handlers() *mux.Router {
|
|
|
}
|
|
|
|
|
|
// Token handling
|
|
|
+
|
|
|
r.Handle("/get_token", tokenHandler())
|
|
|
|
|
|
// Static file server
|
|
|
+
|
|
|
r.PathPrefix("/").Handler(http.FileServer(http.Dir("./dist/")))
|
|
|
|
|
|
return r
|
|
@@ -286,7 +294,6 @@ func modelHandler(model string, pattern PathPattern) http.Handler {
|
|
|
|
|
|
case "DELETE":
|
|
|
delete(w, r, model, pattern)
|
|
|
- break
|
|
|
}
|
|
|
}
|
|
|
|