98 lines
6.7 KiB
Go
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")
|
|
}
|