. */ /* |-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It's a breeze. Simply tell Laravel the URIs it should respond to | and give it the controller to call when that URI is requested. | */ Route::get('/dashboard', [TracksController::class, 'getIndex']); Route::get('/tracks', [TracksController::class, 'getIndex'])->name('tracks.discover'); Route::get('/tracks/popular', [TracksController::class, 'getIndex']); Route::get('/tracks/random', [TracksController::class, 'getIndex']); Route::get('tracks/{id}-{slug}', [TracksController::class, 'getTrack']); Route::get('tracks/{id}-{slug}/edit', [TracksController::class, 'getEdit']); Route::get('tracks/{id}-{slug}/stats', [StatsController::class, 'getIndex']); Route::get('t{id}', [TracksController::class, 'getShortlink'])->where('id', '\d+'); Route::get('t{id}/embed', [TracksController::class, 'getEmbed']); Route::get('t{id}/stream.{extension}', [TracksController::class, 'getStream']); Route::get('t{id}/dl.{extension}', [TracksController::class, 'getDownload']); Route::get('albums', [AlbumsController::class, 'getIndex']); Route::get('albums/{id}-{slug}', [AlbumsController::class, 'getShow']); Route::get('a{id}', [AlbumsController::class, 'getShortlink'])->where('id', '\d+'); Route::get('a{id}/dl.{extension}', [AlbumsController::class, 'getDownload']); Route::get('artists', [ArtistsController::class, 'getIndex']); Route::get('playlists', [PlaylistsController::class, 'getIndex']); Route::get('/register', [AccountController::class, 'getRegister']); Route::get('/login', [AuthController::class, 'getLogin']); Route::post('/auth/logout', [AuthController::class, 'postLogout']); Route::get('/auth/oauth', [AuthController::class, 'getOAuth']); Route::post('/auth/poniverse-sync', [AuthController::class, 'postPoniverseAccountSync'])->middleware('throttle:60,1'); Route::get('/about', function () { return View::make('pages.about'); }); Route::get('/faq', function () { return View::make('pages.faq'); }); Route::get('/mlpforums-advertising-program', function () { return View::make('pages.mlpforums-advertising-program'); }); Route::get('/hwc2016-rules', function () { return View::make('pages.hwc-terms'); }); Route::get('i{id}/{type}.{extension}', [ImagesController::class, 'getImage'])->where('id', '\d+'); Route::get('playlist/{id}-{slug}', [PlaylistsController::class, 'getPlaylist']); Route::get('p{id}', [PlaylistsController::class, 'getShortlink'])->where('id', '\d+'); Route::get('p{id}/dl.{extension}', [PlaylistsController::class, 'getDownload']); Route::get('notifications', [AccountController::class, 'getNotifications']); Route::prefix('notifications/email')->group(function () { Route::get('/unsubscribe/{subscriptionKey}', [NotificationsController::class, 'getEmailUnsubscribe'])->name('email:unsubscribe'); Route::get('/unsubscribed', [NotificationsController::class, 'getEmailUnsubscribePage'])->name('email:confirm-unsubscribed'); Route::get('/click/{emailKey}', [NotificationsController::class, 'getEmailClick'])->name('email:click'); }); Route::get('oembed', [TracksController::class, 'getOembed']); Route::prefix('api/v1')->middleware('json-exceptions')->group(function () { Route::get('/tracks/radio-details/{hash}', [V1\TracksController::class, 'getTrackRadioDetails']); Route::post('/tracks/radio-details/{hash}', [V1\TracksController::class, 'getTrackRadioDetails']); Route::get('/tracks/{id}', [V1\TracksController::class, 'getTrackDetails'])->where('id', '\d+'); Route::middleware('auth.oauth:ponyfm:tracks:upload')->group(function () { Route::post('tracks', [V1\TracksController::class, 'postUploadTrack']); Route::get('/tracks/{id}/upload-status', [V1\TracksController::class, 'getUploadStatus']); }); }); Route::prefix('api/web')->middleware('cors')->group(function () { Route::post('/alexa', [Web\AlexaController::class, 'handle']); Route::get('/taxonomies/all', [Web\TaxonomiesController::class, 'getAll']); Route::get('/search', [Web\SearchController::class, 'getSearch']); Route::get('/tracks', [Web\TracksController::class, 'getIndex']); Route::get('/tracks/{id}', [Web\TracksController::class, 'getShow'])->where('id', '\d+'); Route::get('/tracks/cached/{id}/{format}', [Web\TracksController::class, 'getCachedTrack'])->where(['id' => '\d+', 'format' => '.+']); Route::get('/tracks/{id}/stats', [Web\StatsController::class, 'getTrackStats'])->where('id', '\d+'); Route::get('/albums', [Web\AlbumsController::class, 'getIndex']); Route::get('/albums/{id}', [Web\AlbumsController::class, 'getShow'])->where('id', '\d+'); Route::get('/albums/cached/{id}/{format}', [Web\AlbumsController::class, 'getCachedAlbum'])->where(['id' => '\d+', 'format' => '.+']); Route::get('/playlists', [Web\PlaylistsController::class, 'getIndex']); Route::get('/playlists/show/{id}', [Web\PlaylistsController::class, 'getShow']); Route::get('/playlists/{id}', [Web\PlaylistsController::class, 'getShow'])->where('id', '\d+'); Route::get('/playlists/cached/{id}/{format}', [Web\PlaylistsController::class, 'getCachedPlaylist'])->where(['id' => '\d+', 'format' => '.+']); Route::get('/comments/{type}/{id}', [Web\CommentsController::class, 'getIndex'])->where('id', '\d+'); Route::get('/artists', [Web\ArtistsController::class, 'getIndex']); Route::post('/artists', [Web\ArtistsController::class, 'postIndex']); Route::get('/artists/{slug}', [Web\ArtistsController::class, 'getShow']); Route::get('/artists/{slug}/content', [Web\ArtistsController::class, 'getContent']); Route::get('/artists/{slug}/favourites', [Web\ArtistsController::class, 'getFavourites']); Route::get('/dashboard', [Web\DashboardController::class, 'getIndex']); Route::get('/announcements', [Web\AnnouncementsController::class, 'getIndex']); Route::middleware('auth')->group(function () { Route::post('/tracks/upload', [Web\TracksController::class, 'postUpload']); Route::get('/tracks/{id}/upload-status', [Web\TracksController::class, 'getUploadStatus']); Route::post('/tracks/delete/{id}', [Web\TracksController::class, 'postDelete']); Route::post('/tracks/edit/{id}', [Web\TracksController::class, 'postEdit']); Route::post('/tracks/{id}/version-upload', [Web\TracksController::class, 'postUploadNewVersion']); Route::get('/tracks/{id}/version-change/{version}', [Web\TracksController::class, 'getChangeVersion']); Route::get('/tracks/{id}/version-upload-status', [Web\TracksController::class, 'getVersionUploadStatus']); Route::get('/tracks/{id}/versions', [Web\TracksController::class, 'getVersionList']); Route::post('/albums/create', [Web\AlbumsController::class, 'postCreate']); Route::post('/albums/delete/{id}', [Web\AlbumsController::class, 'postDelete']); Route::post('/albums/edit/{id}', [Web\AlbumsController::class, 'postEdit']); Route::post('/playlists/create', [Web\PlaylistsController::class, 'postCreate']); Route::post('/playlists/delete/{id}', [Web\PlaylistsController::class, 'postDelete']); Route::post('/playlists/edit/{id}', [Web\PlaylistsController::class, 'postEdit']); Route::post('/playlists/{id}/add-track', [Web\PlaylistsController::class, 'postAddTrack']); Route::post('/playlists/{id}/remove-track', [Web\PlaylistsController::class, 'postRemoveTrack']); Route::post('/comments/{type}/{id}', [Web\CommentsController::class, 'postCreate'])->where('id', '\d+'); Route::post('/account/settings/save/{userSlug}', [Web\AccountController::class, 'postSave']); Route::post('/favourites/toggle', [Web\FavouritesController::class, 'postToggle']); Route::post('/follow/toggle', [Web\FollowController::class, 'postToggle']); Route::post('/dashboard/read-news', [Web\DashboardController::class, 'postReadNews']); Route::get('/account/settings/{slug}', [Web\AccountController::class, 'getSettings']); Route::get('/notifications', [Web\NotificationsController::class, 'getNotifications']); Route::put('/notifications/mark-as-read', [Web\NotificationsController::class, 'putMarkAsRead']); Route::post('/notifications/subscribe', [Web\NotificationsController::class, 'postSubscribe']); Route::post('/notifications/unsubscribe', [Web\NotificationsController::class, 'postUnsubscribe']); Route::get('/tracks/edit/{id}', [Web\TracksController::class, 'getEdit']); Route::get('/users/{userId}', [Web\AccountController::class, 'getUser'])->where('userId', '\d+'); Route::get('/users/{userId}/tracks', [Web\TracksController::class, 'getOwned'])->where('userId', '\d+'); Route::get('/users/{userSlug}/tracks', [Web\TracksController::class, 'getOwned']); Route::get('/users/{userId}/albums', [Web\AlbumsController::class, 'getOwned'])->where('userId', '\d+'); Route::get('/users/{userSlug}/albums', [Web\AlbumsController::class, 'getOwned']); Route::get('/users/{userId}/images', [Web\ImagesController::class, 'getOwned'])->where('userId', '\d+'); Route::get('/users/{userSlug}/images', [Web\ImagesController::class, 'getOwned']); Route::get('/users/{userId}/playlists', [Web\PlaylistsController::class, 'getOwned'])->where('userId', '\d+'); Route::get('/users/{userSlug}/playlists', [Web\PlaylistsController::class, 'getOwned']); Route::get('/albums/edit/{id}', [Web\AlbumsController::class, 'getEdit']); Route::get('/playlists/pinned', [Web\PlaylistsController::class, 'getPinned']); Route::get('/favourites/tracks', [Web\FavouritesController::class, 'getTracks']); Route::get('/favourites/albums', [Web\FavouritesController::class, 'getAlbums']); Route::get('/favourites/playlists', [Web\FavouritesController::class, 'getPlaylists']); }); Route::prefix('admin')->middleware(['auth', 'can:access-admin-area'])->group(function () { Route::get('/genres', [Web\GenresController::class, 'getIndex']); Route::post('/genres', [Web\GenresController::class, 'postCreate']); Route::put('/genres/{id}', [Web\GenresController::class, 'putRename'])->where('id', '\d+'); Route::delete('/genres/{id}', [Web\GenresController::class, 'deleteGenre'])->where('id', '\d+'); Route::get('/showsongs', [Web\ShowSongsController::class, 'getIndex']); Route::post('/showsongs', [Web\ShowSongsController::class, 'postCreate']); Route::put('/showsongs/{id}', [Web\ShowSongsController::class, 'putRename'])->where('id', '\d+'); Route::delete('/showsongs/{id}', [Web\ShowSongsController::class, 'deleteSong'])->where('id', '\d+'); Route::get('/tracks', [Web\TracksController::class, 'getAllTracks']); Route::get('/tracks/unclassified', [Web\TracksController::class, 'getClassifierQueue']); Route::get('/announcements', [Web\AnnouncementsController::class, 'getAdminIndex']); Route::get('/announcements/{id}', [Web\AnnouncementsController::class, 'getItemById'])->where('id', '\d+'); Route::post('/announcements', [Web\AnnouncementsController::class, 'postCreate']); Route::put('/announcements/{id}', [Web\AnnouncementsController::class, 'putUpdate'])->where('id', '\d+'); Route::delete('/announcements/{id}', [Web\AnnouncementsController::class, 'deleteItem'])->where('id', '\d+'); }); Route::get('/auth/current', [Web\AccountController::class, 'getCurrentUser']); Route::post('/auth/logout', [Web\AuthController::class, 'postLogout']); }); Route::prefix('admin')->middleware(['auth', 'can:access-admin-area'])->group(function () { Route::get('/genres', [AdminController::class, 'getGenres']); Route::get('/tracks', [AdminController::class, 'getTracks']); Route::get('/tracks/unclassified', [AdminController::class, 'getClassifierQueue']); Route::get('/show-songs', [AdminController::class, 'getShowSongs']); Route::get('/users', [AdminController::class, 'getUsers']); Route::get('/announcements', [AdminController::class, 'getAnnouncements']); Route::get('/', [AdminController::class, 'getIndex']); }); Route::get('u{id}', [ArtistsController::class, 'getShortlink'])->where('id', '\d+'); Route::get('users/{id}-{slug}', [ArtistsController::class, 'getShortlink'])->where('id', '\d+'); Route::prefix('{slug}')->group(function () { Route::get('/', [ArtistsController::class, 'getProfile']); Route::get('/content', [ArtistsController::class, 'getContent']); Route::get('/favourites', [ArtistsController::class, 'getFavourites']); Route::prefix('account')->middleware('auth')->group(function () { Route::get('/tracks', [ContentController::class, 'getTracks']); Route::get('/tracks/edit/{id}', [ContentController::class, 'getTracks']); Route::get('/albums', [ContentController::class, 'getAlbums']); Route::get('/albums/edit/{id}', [ContentController::class, 'getAlbums']); Route::get('/albums/create', [ContentController::class, 'getAlbums']); Route::get('/playlists', [ContentController::class, 'getPlaylists']); Route::get('/uploader', [UploaderController::class, 'getIndex']); Route::get('/', [AccountController::class, 'getIndex'])->name('account:settings'); }); }); Route::get('/', [HomeController::class, 'getIndex']); Route::domain('api.pony.fm')->group(function () { Route::get('tracks/latest', [Mobile\TracksController::class, 'latest']); Route::get('tracks/popular', [Mobile\TracksController::class, 'popular']); });