]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6407 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 18 Oct 2023 07:31:44 +0000 (09:31 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 18 Oct 2023 07:31:44 +0000 (09:31 +0200)
app/Fluidbook/Packager/Download.php
app/Http/Controllers/API/FluidbookPublicationAPIController.php [new file with mode: 0644]
routes/api.php

index 917532055187fd45c1375e9529873bf0c28ebd83..c9b1ef2c1c7663e67461e3d514830c5965331cb1 100644 (file)
@@ -82,8 +82,14 @@ class Download extends DownloadBase
     }
 
     public function handle()
+    {
+        $this->package();
+    }
+
+    public function package($notify = true)
     {
         App::setLocale($this->user->preferredLocale());
+        $res = [];
         try {
             $url = $this->_compileandpackage();
             $translateVariables = ['title' => $this->_title(), 'nb' => $this->_id()];
@@ -94,11 +100,13 @@ class Download extends DownloadBase
             $actions = [];
             if ($this->action === 'download' || $this->action === 'scormcloud') {
                 $actions = ['Télécharger' => $url];
+                $res[] = $url;
 
                 if ($this->action === 'scormcloud') {
                     try {
                         $scormURL = ScormCloud::send($url, 'toolbox_' . $this->type . '_' . $this->_id());
                         $actions[__('Tester sur SCORM Cloud')] = $scormURL;
+                        $res[] = $url;
                     } catch (\Exception $e) {
 
                     }
@@ -128,7 +136,7 @@ class Download extends DownloadBase
                 if (null !== $url) {
                     $actions = [__('Voir sur :server', ['server' => $server->name]) => $url];
                 }
-
+                $res[] = $url;
             } else if ($this->action === 'loadbalancer') {
                 $path = $this->_compileandpackage(false);
                 $dest = protected_path('fluidbookpublication/loadbalancer/' . $this->entry->id . '_' . $this->entry->hash . '/');
@@ -148,10 +156,12 @@ class Download extends DownloadBase
             Log::error($e);
         }
 
-        $this->sendNotification($subject, $text, $actions, $showTextIfNotEmail);
+        if ($notify) {
+            $this->sendNotification($subject, $text, $actions, $showTextIfNotEmail);
+        }
+        return $res;
     }
 
-
     protected function _compileandpackage($zip = true)
     {
         if ($this->entry->version == 3) {
diff --git a/app/Http/Controllers/API/FluidbookPublicationAPIController.php b/app/Http/Controllers/API/FluidbookPublicationAPIController.php
new file mode 100644 (file)
index 0000000..5f7a864
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+
+namespace App\Http\Controllers\API;
+
+use App\Fluidbook\Packager\Download;
+use App\Http\Controllers\Controller;
+use App\Models\FluidbookPublication;
+use App\Models\User;
+
+class FluidbookPublicationAPIController extends Controller
+{
+    public function download($id, $version)
+    {
+        if (!FluidbookPublication::hasPermission($id, 'read')) {
+            abort(401);
+        }
+        $download = new Download(FluidbookPublication::find($id), $version, 'download', auth()->user());
+        $url = $download->package(false);
+        if (count($url)) {
+            return $url[0];
+        }
+        return false;
+    }
+
+    public function metadata($id)
+    {
+        if (!FluidbookPublication::hasPermission($id, 'read')) {
+            abort(401);
+        }
+        $fluidbook = FluidbookPublication::find($id);
+        return ['title' => $fluidbook->title,
+            'lang' => $fluidbook->locale,
+            'locale' => $fluidbook->locale,
+            'date' => (new \DateTime($fluidbook->updated_at))->getTimestamp()];
+    }
+}
index 986a5ec3df9cbf767a12fc3177904778d6101bc9..a5095dc178c8feb4f54d5ddb9aa1e0ec1745b7d3 100644 (file)
@@ -17,6 +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}/metadata', [\App\Http\Controllers\API\FluidbookPublicationAPIController::class, 'metadata']);
+
     Route::post('fluidbook-theme/{id}/clone', [\App\Http\Controllers\API\FluidbookThemeAPIController::class, 'clonefromws2']);
     Route::put('fluidbook-theme/{id}', [\App\Http\Controllers\API\FluidbookThemeAPIController::class, 'updatefromws2']);
     Route::put('fluidbook-theme/{id}/rename', [\App\Http\Controllers\API\FluidbookThemeAPIController::class, 'renamefromws2']);