class FluidbookPublicationAPIController extends Controller
{
- public function download($id, $version)
+ public function download($id, $version = 'online', $action = 'download')
{
if (!FluidbookPublication::hasPermission($id, 'read')) {
abort(401);
}
- $download = new Download(FluidbookPublication::find($id), $version, 'download', auth()->user());
+ $download = new Download(FluidbookPublication::find($id), $version, $action, auth()->user());
$url = $download->package(false);
if (count($url)) {
return $url[0];
return false;
}
- public function metadata($id)
+ public function metadata($fluidbook)
{
- if (!FluidbookPublication::hasPermission($id, 'read')) {
+ if (!$fluidbook instanceof FluidbookPublication) {
+ $fluidbook = FluidbookPublication::find($fluidbook);
+ }
+ if (!FluidbookPublication::hasPermission($fluidbook->id, 'read')) {
abort(401);
}
- $fluidbook = FluidbookPublication::find($id);
- return ['title' => $fluidbook->title,
+
+ return [
+ 'id' => $fluidbook->id,
+ 'reference' => $fluidbook->reference,
+ 'title' => $fluidbook->title,
'lang' => $fluidbook->locale,
'locale' => $fluidbook->locale,
'date' => (new \DateTime($fluidbook->updated_at))->getTimestamp()];
return $job->handle();
}
+ public function findByReference($reference): ?array
+ {
+ if ($fluidbook = FluidbookPublication::where('reference', $reference)->first()) {
+ return $this->metadata($fluidbook);
+ } else {
+ return null;
+ }
+ }
+
}
'middleware' => ['auth:api'],
'excluded_middleware' => ['verifycsrftoken']
], function () {
- Route::get('fluidbook-publication/{id}/download/{version}', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'download']);
+ Route::get('fluidbook-publication/{id}/download/{version}/{action}', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'download']);
Route::get('fluidbook-publication/{id}/metadata', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'metadata']);
+ Route::get('fluidbook-publication/findbyreference/{reference}', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'findByReference']);
Route::post('fluidbook-publication/create', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'create']);
Route::post('cache/clear/{tag?}', [\App\Http\Controllers\API\CacheAPIController::class, 'clear']);
});