Преглед на файлове

Working on execute handler

Andrea Fazzi преди 5 години
родител
ревизия
014e1a219b
променени са 1 файла, в които са добавени 20 реда и са изтрити 1 реда
  1. 20 1
      handlers/handlers.go

+ 20 - 1
handlers/handlers.go

@@ -149,12 +149,14 @@ func Handlers(models []interface{}) *mux.Router {
 
 	r.Handle("/", jwtCookie.Handler(recoverHandler(homeHandler())))
 
-	// Generate model handlers
+	// Generate CRUD handlers
 
 	for _, model := range models {
 		generateHandler(r, model)
 	}
 
+	r.Handle("/documents/{id}/execute", jwtCookie.Handler(recoverHandler(executeHandler()))).Methods("GET")
+
 	// Token handling
 
 	r.Handle("/get_token", tokenHandler())
@@ -306,6 +308,23 @@ func modelHandler(model string, pattern PathPattern) http.Handler {
 	return http.HandlerFunc(fn)
 }
 
+func executeHandler() http.Handler {
+	fn := func(w http.ResponseWriter, r *http.Request) {
+		switch r.Method {
+		case "GET":
+			get(w, r, model, pattern)
+
+		case "POST":
+			post(w, r, model, pattern)
+
+		case "DELETE":
+			delete(w, r, model, pattern)
+		}
+	}
+
+	return http.HandlerFunc(fn)
+}
+
 func homeHandler() http.Handler {
 	fn := func(w http.ResponseWriter, r *http.Request) {
 		http.Redirect(w, r, "/teachers?format=html&tpl_layout=teachers&tpl_content=teachers", http.StatusSeeOther)