diff --git a/server/main.go b/server/main.go index d275720..04bfc2c 100644 --- a/server/main.go +++ b/server/main.go @@ -234,47 +234,49 @@ func main() { }, ValidationKeyGetter: func(token *jwt.Token) (interface{}, error) { return []byte("TODO"), nil - }}) - - // Create or update schemas … - db.AutoMigrate(&User{}) - db.AutoMigrate(&List{}) - db.AutoMigrate(&Item{}) - db.AutoMigrate(&Unit{}) - db.Model(&User{}).Related(&List{}) - db.Model(&List{}).Related(&Item{}) - db.Model(&Item{}).Related(&Unit{}) - defer db.Close() - - // define URL handlers - r := mux.NewRouter() - - // User Management - r.Handle("/users", ehttp.HandlerFunc(register)).Methods("POST") // Make new user - r.Handle("/users", ehttp.HandlerFunc(getToken)).Methods("GET") // Get user „info“(=token) - // TODO: delete, modify - - // List Management - r.Handle("/lists", jwt.Handler(ehttp.HandlerFunc(createList))).Methods("POST") // Make a new list - r.Handle("/lists", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("GET") // Get list of lists - r.Handle("/lists/{name}", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("PUT") // Update list (name, icon, …) - r.Handle("/lists/{name}", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("DELETE") // Delete a list - r.Handle("/lists/{name}", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("GET") // Get list content (i.e., items) - // List sharing - r.Handle("/lists/{name}/sharers", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("POST") // Add new sharer - r.Handle("/lists/{name}/sharers", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("GET") // Get list of sharers - r.Handle("/lists/{name}/sharers/{user}", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("DELETE") // Remove sharer - - r.Handle("/lists/{name}/items", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("PUT") // Add new item - r.Handle("/lists/{name}/items/{item}", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("DELETE") // Delete item - r.Handle("/lists/{name}/items/{item}", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("POST") // Update item - - // Unit-history (unit is a ever-growing list only used for auto-completion) - r.Handle("/units", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("POST") // Make a new unit - r.Handle("/units", jwt.Handler(ehttp.HandlerFunc(nil))).Methods("GET") // Get list of units - - loggedRouter := handlers.LoggingHandler(os.Stdout, r) - http.Handle("/", loggedRouter) - http.ListenAndServe(":8000", nil) - } + }}) + var jHdlr = jwt.Handler // make an alias so routes will be more readable + + // Create or update schemas … + db.AutoMigrate(&User{}) + db.AutoMigrate(&List{}) + db.AutoMigrate(&Item{}) + db.AutoMigrate(&Unit{}) + db.Model(&User{}).Related(&List{}) + db.Model(&List{}).Related(&Item{}) + db.Model(&Item{}).Related(&Unit{}) + defer db.Close() + + + // define URL handlers + r := mux.NewRouter() + + // User Management + r.Handle("/users", ehttp.HandlerFunc(register)).Methods("POST") // Make new user + r.Handle("/users", ehttp.HandlerFunc(getToken)).Methods("GET") // Get user „info“(=token) + // TODO: delete, modify + + // List Management + r.Handle("/lists", jHdlr(ehttp.HandlerFunc(createList))).Methods("POST") // Make a new list + r.Handle("/lists", jHdlr(ehttp.HandlerFunc(nil))).Methods("GET") // Get list of lists + r.Handle("/lists/{name}", jHdlr(ehttp.HandlerFunc(nil))).Methods("PUT") // Update list (name, icon, …) + r.Handle("/lists/{name}", jHdlr(ehttp.HandlerFunc(nil))).Methods("DELETE") // Delete a list + r.Handle("/lists/{name}", jHdlr(ehttp.HandlerFunc(nil))).Methods("GET") // Get list content (i.e., items) + // List sharing + r.Handle("/lists/{name}/sharers", jHdlr(ehttp.HandlerFunc(nil))).Methods("POST") // Add new sharer + r.Handle("/lists/{name}/sharers", jHdlr(ehttp.HandlerFunc(nil))).Methods("GET") // Get list of sharers + r.Handle("/lists/{name}/sharers/{user}", jHdlr(ehttp.HandlerFunc(nil))).Methods("DELETE") // Remove sharer + + r.Handle("/lists/{name}/items", jHdlr(ehttp.HandlerFunc(nil))).Methods("PUT") // Add new item + r.Handle("/lists/{name}/items/{item}", jHdlr(ehttp.HandlerFunc(nil))).Methods("DELETE") // Delete item + r.Handle("/lists/{name}/items/{item}", jHdlr(ehttp.HandlerFunc(nil))).Methods("POST") // Update item + + // Unit-history (unit is a ever-growing list only used for auto-completion) + r.Handle("/units", jHdlr(ehttp.HandlerFunc(nil))).Methods("POST") // Make a new unit + r.Handle("/units", jHdlr(ehttp.HandlerFunc(nil))).Methods("GET") // Get list of units + + loggedRouter := handlers.LoggingHandler(os.Stdout, r) + http.Handle("/", loggedRouter) + http.ListenAndServe(":8000", nil) +}