From 08ffd9fab67e1b7ef2ec3e37d0af9dafe17cef49 Mon Sep 17 00:00:00 2001 From: Lucas BEE Date: Mon, 1 May 2017 21:55:00 +0200 Subject: [PATCH] Add handlers to update subtitles --- src/internal/movies/handlers.go | 26 ++++++++++++++++++++++++ src/internal/shows/handlers.go | 35 +++++++++++++++++++++++++++++++++ src/routes.go | 2 ++ 3 files changed, 63 insertions(+) diff --git a/src/internal/movies/handlers.go b/src/internal/movies/handlers.go index f293bf0..50c1c05 100644 --- a/src/internal/movies/handlers.go +++ b/src/internal/movies/handlers.go @@ -313,3 +313,29 @@ func GetWishlistHandler(env *web.Env, w http.ResponseWriter, r *http.Request) er return env.RenderJSON(w, movieList) } + +// RefreshMovieSubtitlesHandler refreshes details for a movie +func RefreshMovieSubtitlesHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error { + vars := mux.Vars(r) + id := vars["id"] + + // Get the user + v := auth.GetCurrentUser(r, env.Log) + user, ok := v.(*users.User) + if !ok { + return fmt.Errorf("invalid user type") + } + + // Create a new papi client + client, err := user.NewPapiClient() + if err != nil { + return env.RenderError(w, err) + } + + err = client.UpdateSubtitles(&papi.Movie{ImdbID: id}) + if err != nil { + return env.RenderError(w, err) + } + + return env.RenderOK(w, "Subtitles refreshed") +} diff --git a/src/internal/shows/handlers.go b/src/internal/shows/handlers.go index e874758..f92ad20 100644 --- a/src/internal/shows/handlers.go +++ b/src/internal/shows/handlers.go @@ -357,3 +357,38 @@ func RefreshEpisodeHandler(env *web.Env, w http.ResponseWriter, r *http.Request) return env.RenderJSON(w, e) } + +// RefreshEpisodeSubtitlesHandler refreshes details for an episode +func RefreshEpisodeSubtitlesHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error { + vars := mux.Vars(r) + id := vars["id"] + + // No need to check errors here as the router is making sure that season + // and episode are numbers + season, _ := strconv.Atoi(vars["season"]) + episode, _ := strconv.Atoi(vars["episode"]) + + // Get the user + v := auth.GetCurrentUser(r, env.Log) + user, ok := v.(*users.User) + if !ok { + return fmt.Errorf("invalid user type") + } + + // Create a new papi client + client, err := user.NewPapiClient() + if err != nil { + return env.RenderError(w, err) + } + + err = client.UpdateSubtitles(&papi.Episode{ + ShowImdbID: id, + Season: season, + Episode: episode, + }) + if err != nil { + return env.RenderError(w, err) + } + + return env.RenderOK(w, "Subtitles refreshed") +} diff --git a/src/routes.go b/src/routes.go index 8df1a12..d5852c6 100644 --- a/src/routes.go +++ b/src/routes.go @@ -23,6 +23,7 @@ func setupRoutes(env *web.Env) { env.Handle("/movies/search", movies.SearchMovie).WithRole(users.UserRole).Methods("POST") env.Handle("/movies/{id:tt[0-9]+}", movies.PolochonDeleteHandler).WithRole(users.AdminRole).Methods("DELETE") env.Handle("/movies/{id:tt[0-9]+}/refresh", movies.RefreshMovieHandler).WithRole(users.UserRole).Methods("POST") + env.Handle("/movies/{id:tt[0-9]+}/subtitles/refresh", movies.RefreshMovieSubtitlesHandler).WithRole(users.UserRole).Methods("POST") env.Handle("/movies/refresh", extmedias.RefreshMoviesHandler).WithRole(users.AdminRole).Methods("POST") // Shows routes @@ -33,6 +34,7 @@ func setupRoutes(env *web.Env) { env.Handle("/shows/{id:tt[0-9]+}", shows.GetDetailsHandler).WithRole(users.UserRole).Methods("GET") env.Handle("/shows/{id:tt[0-9]+}/refresh", shows.RefreshShowHandler).WithRole(users.UserRole).Methods("POST") env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}", shows.RefreshEpisodeHandler).WithRole(users.UserRole).Methods("POST") + env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}/subtitles/refresh", shows.RefreshEpisodeSubtitlesHandler).WithRole(users.UserRole).Methods("POST") env.Handle("/shows/refresh", extmedias.RefreshShowsHandler).WithRole(users.AdminRole).Methods("POST") // Wishlist routes for shows