diff --git a/src/internal/movies/handlers.go b/src/internal/movies/handlers.go index 9416a4c..982fb88 100644 --- a/src/internal/movies/handlers.go +++ b/src/internal/movies/handlers.go @@ -8,6 +8,7 @@ import ( "net/http" "net/url" + "github.com/Sirupsen/logrus" "github.com/gorilla/mux" "github.com/odwrtw/papi" polochon "github.com/odwrtw/polochon/lib" @@ -191,3 +192,38 @@ func SearchMovie(env *web.Env, w http.ResponseWriter, r *http.Request) error { return env.RenderJSON(w, movieList) } + +// DeleteHandler deletes the movie from polochon +func DeleteHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error { + vars := mux.Vars(r) + id := vars["id"] + + log := env.Log.WithFields(logrus.Fields{ + "imdb_id": id, + "function": "movies.DeleteHandler", + }) + log.Debugf("deleting movie") + + v := auth.GetCurrentUser(r, env.Log) + user, ok := v.(*users.User) + if !ok { + return fmt.Errorf("invalid user type") + } + + var polochonConfig config.UserPolochon + err := user.GetConfig("polochon", &polochonConfig) + if err != nil { + return err + } + + client, err := papi.New(polochonConfig.URL) + if err != nil { + return err + } + + if polochonConfig.Token != "" { + client.SetToken(polochonConfig.Token) + } + + return client.Delete(&papi.Movie{ImdbID: id}) +} diff --git a/src/main.go b/src/main.go index cbea35a..f0d8982 100644 --- a/src/main.go +++ b/src/main.go @@ -78,6 +78,7 @@ func main() { env.Handle("/movies/polochon", movies.FromPolochon).WithRole(users.UserRole).Methods("GET") env.Handle("/movies/{id:tt[0-9]+}/get_details", movies.GetDetailsHandler).WithRole(users.UserRole).Methods("GET") + env.Handle("/movies/{id:tt[0-9]+}", movies.DeleteHandler).WithRole(users.AdminRole).Methods("DELETE") env.Handle("/movies/explore", extmedias.Explore).WithRole(users.UserRole).Methods("GET") env.Handle("/movies/refresh", extmedias.Refresh).WithRole(users.UserRole).Methods("POST") env.Handle("/movies/search", movies.SearchMovie).WithRole(users.UserRole).Methods("POST")