Merge branch 'download' into 'master'

Add Download torrent to the party

See merge request !31
This commit is contained in:
Grégoire Delattre 2017-01-17 22:04:05 +00:00
commit 4d6a78778e
2 changed files with 61 additions and 5 deletions

View File

@ -0,0 +1,57 @@
package torrents
import (
"encoding/json"
"errors"
"net/http"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/auth"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/config"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/users"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/web"
"github.com/odwrtw/papi"
)
// DownloadHandler downloads a movie via polochon
func DownloadHandler(env *web.Env, w http.ResponseWriter, r *http.Request) error {
var data struct {
URL string `json:"url"`
}
err := json.NewDecoder(r.Body).Decode(&data)
if err != nil {
return env.RenderError(w, errors.New("failed to get the url"))
}
if data.URL == "" {
return env.RenderError(w, errors.New("no given url"))
}
v := auth.GetCurrentUser(r, env.Log)
user, ok := v.(*users.User)
if !ok {
return env.RenderError(w, errors.New("invalid user type"))
}
var polochonConfig config.UserPolochon
err = user.GetConfig("polochon", &polochonConfig)
if err != nil {
return env.RenderError(w, errors.New("problem when getting user config"))
}
client, err := papi.New(polochonConfig.URL)
if err != nil {
return env.RenderError(w, errors.New("problem when getting papi client"))
}
if polochonConfig.Token != "" {
client.SetToken(polochonConfig.Token)
}
err = client.AddTorrent(data.URL)
if err != nil {
return env.RenderError(w, err)
}
return env.RenderOK(w, "Torrent added")
}

View File

@ -4,12 +4,12 @@ import (
"net/http" "net/http"
"os" "os"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/movies"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/shows"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/auth" "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/auth"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/config" "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/config"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/external_medias" "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/external_medias"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/movies"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/shows"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/torrents"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/users" "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/users"
"gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/web" "gitlab.quimbo.fr/odwrtw/canape-sql/src/internal/web"
@ -71,8 +71,6 @@ func main() {
authMiddleware := auth.NewMiddleware(env.Auth, log) authMiddleware := auth.NewMiddleware(env.Auth, log)
// TODO: refresh sould be handled by admins only
env.Handle("/users/login", users.LoginPOSTHandler).Methods("POST") env.Handle("/users/login", users.LoginPOSTHandler).Methods("POST")
env.Handle("/users/signup", users.SignupPOSTHandler).Methods("POST") env.Handle("/users/signup", users.SignupPOSTHandler).Methods("POST")
env.Handle("/users/details", users.DetailsHandler).WithRole(users.UserRole).Methods("GET") env.Handle("/users/details", users.DetailsHandler).WithRole(users.UserRole).Methods("GET")
@ -89,6 +87,7 @@ func main() {
env.Handle("/shows/refresh", extmedias.RefreshShows).WithRole(users.UserRole).Methods("POST") env.Handle("/shows/refresh", extmedias.RefreshShows).WithRole(users.UserRole).Methods("POST")
env.Handle("/shows/explore", extmedias.ExploreShows).WithRole(users.UserRole).Methods("GET") env.Handle("/shows/explore", extmedias.ExploreShows).WithRole(users.UserRole).Methods("GET")
env.Handle("/shows/search", shows.SearchShow).WithRole(users.UserRole).Methods("POST") env.Handle("/shows/search", shows.SearchShow).WithRole(users.UserRole).Methods("POST")
env.Handle("/download", torrents.DownloadHandler).WithRole(users.UserRole).Methods("POST")
n := negroni.Classic() n := negroni.Classic()
n.Use(authMiddleware) n.Use(authMiddleware)