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"
|
"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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user