From 779ef8d2118f632f2133d9fabd136f848a63dd5a Mon Sep 17 00:00:00 2001 From: Lucas BEE Date: Fri, 12 Apr 2019 22:50:22 +0200 Subject: [PATCH] Add routes to retrieve module's status One route for the user's polochon modules statuses One route for the modules statuses of Canape itself --- backend/admins/modules.go | 12 ++++++++++++ backend/routes.go | 2 ++ backend/users/handlers.go | 25 ++++++++++++++++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 backend/admins/modules.go diff --git a/backend/admins/modules.go b/backend/admins/modules.go new file mode 100644 index 0000000..eb9a4e3 --- /dev/null +++ b/backend/admins/modules.go @@ -0,0 +1,12 @@ +package admin + +import ( + "net/http" + + "git.quimbo.fr/odwrtw/canape/backend/web" +) + +// GetModulesStatuses return the statuses of all the modules +func GetModulesStatuses(env *web.Env, w http.ResponseWriter, r *http.Request) error { + return env.RenderJSON(w, env.Config.PolochonConfig.ModulesStatus()) +} diff --git a/backend/routes.go b/backend/routes.go index db91761..2968205 100644 --- a/backend/routes.go +++ b/backend/routes.go @@ -19,6 +19,7 @@ func setupRoutes(env *web.Env) { env.Handle("/users/tokens", users.GetTokensHandler).WithRole(users.UserRole).Methods("GET") env.Handle("/users/tokens/{token}", users.EditTokenHandler).WithRole(users.UserRole).Methods("POST") env.Handle("/users/tokens/{token}", users.DeleteTokenHandler).WithRole(users.UserRole).Methods("DELETE") + env.Handle("/users/modules/status", users.GetModulesStatus).WithRole(users.UserRole).Methods("GET") // Movies routes env.Handle("/movies/polochon", movies.PolochonMoviesHandler).WithRole(users.UserRole).Methods("GET") @@ -67,4 +68,5 @@ func setupRoutes(env *web.Env) { env.Handle("/admins/users", admin.UpdateUserHandler).WithRole(users.AdminRole).Methods("POST") env.Handle("/admins/stats", admin.GetStatsHandler).WithRole(users.AdminRole).Methods("GET") env.Handle("/admins/tokens/{username}", admin.GenerateUserToken).WithRole(users.AdminRole).Methods("POST") + env.Handle("/admins/modules", admin.GetModulesStatuses).WithRole(users.AdminRole).Methods("GET") } diff --git a/backend/users/handlers.go b/backend/users/handlers.go index cff54c1..f0184e6 100644 --- a/backend/users/handlers.go +++ b/backend/users/handlers.go @@ -5,11 +5,11 @@ import ( "fmt" "net/http" - "github.com/gorilla/mux" "git.quimbo.fr/odwrtw/canape/backend/auth" "git.quimbo.fr/odwrtw/canape/backend/config" "git.quimbo.fr/odwrtw/canape/backend/tokens" "git.quimbo.fr/odwrtw/canape/backend/web" + "github.com/gorilla/mux" ) // SignupPOSTHandler handles the user's Signup @@ -215,3 +215,26 @@ func EditTokenHandler(e *web.Env, w http.ResponseWriter, r *http.Request) error return e.RenderJSON(w, t) } + +// GetModulesStatus returns the status of the modules +func GetModulesStatus(e *web.Env, w http.ResponseWriter, r *http.Request) error { + // Get the user from the request + v := auth.GetCurrentUser(r, e.Log) + user, ok := v.(*User) + if !ok { + return e.RenderError(w, fmt.Errorf("invalid user type")) + } + + // Create a papi client + client, err := user.NewPapiClient() + if err != nil { + return e.RenderError(w, fmt.Errorf("error while getting user")) + } + + status, err := client.GetModulesStatus() + if err != nil { + return e.RenderError(w, fmt.Errorf("error while getting modules status %q", err)) + } + + return e.RenderJSON(w, status) +}