Oembed stuffs

This commit is contained in:
Josef Citrine 2016-11-30 21:42:45 +00:00
parent 78501007ce
commit 2dd6c663ff
3 changed files with 39 additions and 1 deletions

View file

@ -20,6 +20,7 @@
namespace Poniverse\Ponyfm\Http\Controllers; namespace Poniverse\Ponyfm\Http\Controllers;
use Illuminate\Http\Request;
use Poniverse\Ponyfm\Models\ResourceLogItem; use Poniverse\Ponyfm\Models\ResourceLogItem;
use Poniverse\Ponyfm\Models\Track; use Poniverse\Ponyfm\Models\Track;
use Poniverse\Ponyfm\Models\TrackFile; use Poniverse\Ponyfm\Models\TrackFile;
@ -77,6 +78,41 @@ class TracksController extends Controller
return View::make('tracks.embed', ['track' => $track, 'user' => $userData]); 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' => '<iframe src="'.action('TracksController@getEmbed', ['id' => $track->id]).'" width="100%" height="150" allowTransparency="true" frameborder="0" seamless allowfullscreen></iframe>'
];
return Response::json($output);
}
public function getTrack($id, $slug) public function getTrack($id, $slug)
{ {
$track = Track::find($id); $track = Track::find($id);

View file

@ -46,6 +46,8 @@
<meta name="twitter:player:height" content="130" /> <meta name="twitter:player:height" content="130" />
<meta name="twitter:player:stream" content="{{ $track->getStreamUrl('MP3') }}" /> <meta name="twitter:player:stream" content="{{ $track->getStreamUrl('MP3') }}" />
<meta name="twitter:player:stream:content_type" content="audio/mpeg" /> <meta name="twitter:player:stream:content_type" content="audio/mpeg" />
<link rel="alternate" type="application/json+oembed" href="{{ url('/oembed?url=') . url('tracks/' . $track->id . '-' . $track->slug) }}" title="{{ $track->title }}" />
@endsection @endsection
@section('app_content') @section('app_content')

View file

@ -77,7 +77,7 @@ Route::get('p{id}/dl.{extension}', 'PlaylistsController@getDownload');
Route::get('notifications', 'AccountController@getNotifications'); Route::get('notifications', 'AccountController@getNotifications');
Route::get('oembed', 'TracksController@getOembed');
Route::group(['prefix' => 'api/v1', 'middleware' => 'json-exceptions'], function () { Route::group(['prefix' => 'api/v1', 'middleware' => 'json-exceptions'], function () {
Route::get('/tracks/radio-details/{hash}', 'Api\V1\TracksController@getTrackRadioDetails'); Route::get('/tracks/radio-details/{hash}', 'Api\V1\TracksController@getTrackRadioDetails');