canape/backend/routes.go
Grégoire Delattre b6be9488c9
Some checks failed
continuous-integration/drone/push Build is failing
Add a page to display a movie
2021-08-22 11:33:36 -10:00

98 lines
6.7 KiB
Go

package main
import (
admin "git.quimbo.fr/odwrtw/canape/backend/admins"
"git.quimbo.fr/odwrtw/canape/backend/events"
extmedias "git.quimbo.fr/odwrtw/canape/backend/external_medias"
"git.quimbo.fr/odwrtw/canape/backend/models"
"git.quimbo.fr/odwrtw/canape/backend/movies"
"git.quimbo.fr/odwrtw/canape/backend/polochons"
"git.quimbo.fr/odwrtw/canape/backend/ratings"
"git.quimbo.fr/odwrtw/canape/backend/shows"
"git.quimbo.fr/odwrtw/canape/backend/torrents"
"git.quimbo.fr/odwrtw/canape/backend/users"
"git.quimbo.fr/odwrtw/canape/backend/web"
)
func setupRoutes(env *web.Env) {
// User's route
env.Handle("/users/login", users.LoginPOSTHandler).Methods("POST")
env.Handle("/users/signup", users.SignupPOSTHandler).Methods("POST")
env.Handle("/users/details", users.DetailsHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/users/edit", users.EditHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/users/tokens", users.GetTokensHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/users/tokens/{token}", users.EditTokenHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/users/tokens/{token}", users.DeleteTokenHandler).WithRole(models.UserRole).Methods("DELETE")
env.Handle("/users/modules/status", users.GetModulesStatus).WithRole(models.UserRole).Methods("GET")
env.Handle("/users/polochons", polochons.GetPolochonsHandler).WithRole(models.UserRole).Methods("GET")
// Polochon's route
env.Handle("/polochons", polochons.GetPublicPolochonsHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/polochons", polochons.NewPolochonHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/polochons/{id}", polochons.EditPolochonHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/polochons/{id}", polochons.DeletePolochonHandler).WithRole(models.UserRole).Methods("DELETE")
env.Handle("/polochons/{id}/wishlist/movies", polochons.GetMovieWishlistHandler).Methods("GET")
env.Handle("/polochons/{id}/wishlist/shows", polochons.GetShowWishlistHandler).Methods("GET")
env.Handle("/polochons/{id}/users/{user_id}", polochons.PolochonUserHandler).WithRole(models.UserRole).Methods("POST")
// Movies routes
env.Handle("/movies/polochon", movies.PolochonMoviesHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/movies/explore", extmedias.ExploreMovies).WithRole(models.UserRole).Methods("GET")
env.Handle("/movies/explore/options", extmedias.MovieExplorerOptions).WithRole(models.UserRole).Methods("GET")
env.Handle("/movies/search/{search}", movies.SearchMovie).WithRole(models.UserRole).Methods("GET")
env.Handle("/movies/{id:tt[0-9]+}", movies.PolochonDeleteHandler).WithRole(models.UserRole).Methods("DELETE")
env.Handle("/movies/{id:tt[0-9]+}", movies.GetMovieHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/movies/{id:tt[0-9]+}/refresh", movies.RefreshMovieHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/movies/{id:tt[0-9]+}/subtitles/{lang}", movies.DownloadVVTSubtitle).WithRole(models.UserRole).Methods("GET")
env.Handle("/movies/{id:tt[0-9]+}/subtitles/{lang}", movies.RefreshMovieSubtitlesHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/movies/refresh", extmedias.RefreshMoviesHandler).WithRole(models.AdminRole).Methods("POST")
// Shows routes
env.Handle("/shows/polochon", shows.PolochonShowsHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/shows/explore", extmedias.ExploreShows).WithRole(models.UserRole).Methods("GET")
env.Handle("/shows/explore/options", extmedias.ShowExplorerOptions).WithRole(models.UserRole).Methods("GET")
env.Handle("/shows/search/{search}", shows.SearchShow).WithRole(models.UserRole).Methods("GET")
env.Handle("/shows/{id:tt[0-9]+}", shows.GetDetailsHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/shows/{id:tt[0-9]+}/refresh", shows.RefreshShowHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}", shows.RefreshEpisodeHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}/subtitles/{lang}", shows.RefreshEpisodeSubtitlesHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/shows/{id:tt[0-9]+}/seasons/{season:[0-9]+}/episodes/{episode:[0-9]+}/subtitles/{lang}", shows.DownloadVVTSubtitle).WithRole(models.UserRole).Methods("GET")
env.Handle("/shows/refresh", extmedias.RefreshShowsHandler).WithRole(models.AdminRole).Methods("POST")
env.Handle("/ratings/refresh", ratings.RefreshHandler).WithRole(models.AdminRole).Methods("POST")
// Wishlist routes for shows
env.Handle("/wishlist/shows", shows.GetWishlistHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/wishlist/shows/{id:tt[0-9]+}", shows.AddToWishlist).WithRole(models.UserRole).Methods("POST")
env.Handle("/wishlist/shows/{id:tt[0-9]+}", shows.DeleteFromWishlist).WithRole(models.UserRole).Methods("DELETE")
// Wishlist routes for movies
env.Handle("/wishlist/movies", movies.GetWishlistHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/wishlist/movies/{id:tt[0-9]+}", movies.AddToWishlist).WithRole(models.UserRole).Methods("POST")
env.Handle("/wishlist/movies/{id:tt[0-9]+}", movies.DeleteFromWishlist).WithRole(models.UserRole).Methods("DELETE")
// Torrents routes
env.Handle("/torrents", torrents.DownloadHandler).WithRole(models.UserRole).Methods("POST")
env.Handle("/torrents", torrents.ListHandler).WithRole(models.UserRole).Methods("GET")
env.Handle("/torrents/{id}", torrents.RemoveHandler).WithRole(models.UserRole).Methods("DELETE")
env.Handle("/torrents/search/{type}/{search}", torrents.SearchHandler).WithRole(models.UserRole).Methods("GET")
// Route to refresh all movies and shows
env.Handle("/refresh", extmedias.RefreshHandler).WithRole(models.AdminRole).Methods("POST")
// Route to handle websocket events
env.Handle("/events", events.WsHandler).WithRole(models.UserRole).Methods("GET")
// Route to handle websocket events
env.Handle("/events/polochons/{id}/hook", events.PolochonHookHandler).Methods("POST")
env.Handle("/events/debug", events.HookDebugHandler).WithRole(models.AdminRole).Methods("GET")
// Admin routes
env.Handle("/admins/users", admin.GetUsersHandler).WithRole(models.AdminRole).Methods("GET")
env.Handle("/admins/users", admin.UpdateUserHandler).WithRole(models.AdminRole).Methods("POST")
env.Handle("/admins/users/{username}", admin.DeleteUserHandler).WithRole(models.AdminRole).Methods("DELETE")
env.Handle("/admins/stats", admin.GetStatsHandler).WithRole(models.AdminRole).Methods("GET")
env.Handle("/admins/tokens/{username}", admin.GenerateUserToken).WithRole(models.AdminRole).Methods("POST")
env.Handle("/admins/modules", admin.GetModulesStatuses).WithRole(models.AdminRole).Methods("GET")
}