]> _ Git - fluidbook-toolbox.git/commitdiff
wip #7454 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 7 Apr 2025 15:09:12 +0000 (17:09 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 7 Apr 2025 15:09:12 +0000 (17:09 +0200)
app/Http/Controllers/API/FluidbookPublicationAPIController.php
app/Models/FluidbookPublication.php
routes/api.php

index 7157607527f9a9bc879b5ff027dab31f788b3c7c..31022420d247e5f2bb02e1482bfdda801a2d3ebd 100644 (file)
@@ -11,12 +11,12 @@ use Cubist\Util\Files\Files;
 
 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];
@@ -24,13 +24,19 @@ class FluidbookPublicationAPIController extends Controller
         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()];
@@ -46,4 +52,13 @@ class FluidbookPublicationAPIController extends Controller
         return $job->handle();
     }
 
+    public function findByReference($reference): ?array
+    {
+        if ($fluidbook = FluidbookPublication::where('reference', $reference)->first()) {
+            return $this->metadata($fluidbook);
+        } else {
+            return null;
+        }
+    }
+
 }
index 64872e1e79c9e4ce3934d37a932bfd7cc20f4f31..3c155437fed823a4e709896287721bad8448fee3 100644 (file)
@@ -139,6 +139,8 @@ class FluidbookPublication extends ToolboxStatusModel
         $this->addField('hash', Hidden::class);
         $this->addField('cid', Hidden::class);
 
+        $this->addField('reference', Hidden::class);
+
         $this->addField('export_data', Hidden::class, __('Paramètres d\'export'));
 
 
index dfe0062902a18ae7a7f9a2f406d8f07cce84c807..72c0bbec74b2da87315b0a07078a21f4371465ab 100644 (file)
@@ -17,8 +17,9 @@ Route::group([
     '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']);
 });