Merge branch 'download' into 'master'
Add Download torrent to the party See merge request !31
This commit is contained in:
commit
4d6a78778e
57
src/internal/torrents/handlers.go
Normal file
57
src/internal/torrents/handlers.go
Normal 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")
|
||||
}
|
@ -4,12 +4,12 @@ import (
|
||||
"net/http"
|
||||
"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/config"
|
||||
"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/web"
|
||||
|
||||
@ -71,8 +71,6 @@ func main() {
|
||||
|
||||
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/signup", users.SignupPOSTHandler).Methods("POST")
|
||||
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/explore", extmedias.ExploreShows).WithRole(users.UserRole).Methods("GET")
|
||||
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.Use(authMiddleware)
|
||||
|
Loading…
x
Reference in New Issue
Block a user