From 2dd6c663ff65a5eeb93fe77984955d98f8f09974 Mon Sep 17 00:00:00 2001 From: Josef Citrine Date: Wed, 30 Nov 2016 21:42:45 +0000 Subject: [PATCH] Oembed stuffs --- app/Http/Controllers/TracksController.php | 36 +++++++++++++++++++++++ resources/views/tracks/show.blade.php | 2 ++ routes/web.php | 2 +- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/TracksController.php b/app/Http/Controllers/TracksController.php index 8c744383..e55f447c 100644 --- a/app/Http/Controllers/TracksController.php +++ b/app/Http/Controllers/TracksController.php @@ -20,6 +20,7 @@ namespace Poniverse\Ponyfm\Http\Controllers; +use Illuminate\Http\Request; use Poniverse\Ponyfm\Models\ResourceLogItem; use Poniverse\Ponyfm\Models\Track; use Poniverse\Ponyfm\Models\TrackFile; @@ -77,6 +78,41 @@ class TracksController extends Controller return View::make('tracks.embed', ['track' => $track, 'user' => $userData]); } + public function getOembed(Request $request) + { + if (!$request->has('url')) { + App::abort(404); + } + + $parsedUrl = parse_url($request->input('url')); + $id = preg_match('(\d+)', $parsedUrl['path']); + + $track = Track + ::whereId($id) + ->published() + ->userDetails() + ->first(); + + if (!$track || !$track->canView(Auth::user())) { + App::abort(404); + } + + $output = [ + 'version' => '1.0', + 'type' => 'rich', + 'provider_name' => 'Pony.fm', + 'provider_url' => 'https://pony.fm', + 'width' => 480, + 'height' => 130, + 'title' => $track->title, + 'author_name' => $track->user->display_name, + 'author_url' => $track->user->url, + 'html' => '' + ]; + + return Response::json($output); + } + public function getTrack($id, $slug) { $track = Track::find($id); diff --git a/resources/views/tracks/show.blade.php b/resources/views/tracks/show.blade.php index f61c449f..4d84fe4b 100644 --- a/resources/views/tracks/show.blade.php +++ b/resources/views/tracks/show.blade.php @@ -46,6 +46,8 @@ + + @endsection @section('app_content') diff --git a/routes/web.php b/routes/web.php index 6cda69af..f4dcb7fb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -77,7 +77,7 @@ Route::get('p{id}/dl.{extension}', 'PlaylistsController@getDownload'); Route::get('notifications', 'AccountController@getNotifications'); - +Route::get('oembed', 'TracksController@getOembed'); Route::group(['prefix' => 'api/v1', 'middleware' => 'json-exceptions'], function () { Route::get('/tracks/radio-details/{hash}', 'Api\V1\TracksController@getTrackRadioDetails');