From f03f57dcbbbf34feb4eb03bba7ea73dfe9b182b3 Mon Sep 17 00:00:00 2001
From: Khaled Lela <eng.khaled.lela@gmail.com>
Date: Sat, 19 Feb 2022 21:00:00 +0200
Subject: feat(disk): add download scorm package zip.

---
 src/Manager/ScormDisk.php    | 16 ++++++++++++++++
 src/Manager/ScormManager.php |  5 +++++
 2 files changed, 21 insertions(+)

(limited to 'src/Manager')

diff --git a/src/Manager/ScormDisk.php b/src/Manager/ScormDisk.php
index 249f027..9417ef3 100644
--- a/src/Manager/ScormDisk.php
+++ b/src/Manager/ScormDisk.php
@@ -4,8 +4,10 @@ namespace Peopleaps\Scorm\Manager;
 
 use Illuminate\Filesystem\FilesystemAdapter;
 use Illuminate\Support\Facades\Storage;
+use Peopleaps\Scorm\Entity\Scorm;
 use Peopleaps\Scorm\Exception\StorageNotFoundException;
 use ZipArchive;
+use ZipStream\ZipStream;
 
 class ScormDisk
 {
@@ -42,6 +44,20 @@ class ScormDisk
         return true;
     }
 
+    public function download(Scorm $scorm)
+    {
+        return response()->stream(function () use ($scorm) {
+            // enable output of HTTP headers
+            // $options = new ZipStream\Option\Archive();
+            // $options->setSendHttpHeaders(true);
+            $zip = new ZipStream($scorm->title . ".zip");
+            /** @var FilesystemAdapter $disk */
+            $disk = $this->getDisk();
+            $zip->addFileFromStream($scorm->title, $disk->readStream($scorm->uuid));
+            $zip->finish();
+        });
+    }
+
     /**
      * @param string $directory
      * @return bool
diff --git a/src/Manager/ScormManager.php b/src/Manager/ScormManager.php
index 935bb2d..aedfae3 100644
--- a/src/Manager/ScormManager.php
+++ b/src/Manager/ScormManager.php
@@ -667,4 +667,9 @@ class ScormManager
 
         return $formattedValue;
     }
+
+
+    public function download(Scorm $scorm){
+        return $this->scormDisk->download($scorm);
+    }
 }
-- 
cgit v1.2.3