summaryrefslogtreecommitdiff
path: root/app/Http/RequestHandlers/ExportGedcomClient.php
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2021-05-18 12:36:04 +0100
committerGreg Roach <fisharebest@gmail.com>2021-05-18 12:42:53 +0100
commitca47b2ada94c22f0e53abe22300f5c1c43240913 (patch)
tree649e78374e367a285abfd1cfd5239fbb08a6e0f4 /app/Http/RequestHandlers/ExportGedcomClient.php
parentc4943cff72f95a28fbb9404e3c20b169ff098e5c (diff)
downloadwebtrees-ca47b2ada94c22f0e53abe22300f5c1c43240913.tar.gz
webtrees-ca47b2ada94c22f0e53abe22300f5c1c43240913.tar.bz2
webtrees-ca47b2ada94c22f0e53abe22300f5c1c43240913.zip
Use dependency injection
Diffstat (limited to 'app/Http/RequestHandlers/ExportGedcomClient.php')
-rw-r--r--app/Http/RequestHandlers/ExportGedcomClient.php44
1 files changed, 20 insertions, 24 deletions
diff --git a/app/Http/RequestHandlers/ExportGedcomClient.php b/app/Http/RequestHandlers/ExportGedcomClient.php
index 4b8631f52d..196fa975bf 100644
--- a/app/Http/RequestHandlers/ExportGedcomClient.php
+++ b/app/Http/RequestHandlers/ExportGedcomClient.php
@@ -38,7 +38,6 @@ use Psr\Http\Server\RequestHandlerInterface;
use RuntimeException;
use function addcslashes;
-use function app;
use function assert;
use function fclose;
use function fopen;
@@ -58,14 +57,25 @@ class ExportGedcomClient implements RequestHandlerInterface
private GedcomExportService $gedcom_export_service;
+ private ResponseFactoryInterface $response_factory;
+
+ private StreamFactoryInterface $stream_factory;
+
/**
* ExportGedcomServer constructor.
*
- * @param GedcomExportService $gedcom_export_service
+ * @param GedcomExportService $gedcom_export_service
+ * @param ResponseFactoryInterface $response_factory
+ * @param StreamFactoryInterface $stream_factory
*/
- public function __construct(GedcomExportService $gedcom_export_service)
- {
+ public function __construct(
+ GedcomExportService $gedcom_export_service,
+ ResponseFactoryInterface $response_factory,
+ StreamFactoryInterface $stream_factory
+ ) {
$this->gedcom_export_service = $gedcom_export_service;
+ $this->response_factory = $response_factory;
+ $this->stream_factory = $stream_factory;
}
/**
@@ -149,18 +159,11 @@ class ExportGedcomClient implements RequestHandlerInterface
}
}
- // Use a stream, so that we do not have to load the entire file into memory.
- $stream_factory = app(StreamFactoryInterface::class);
- assert($stream_factory instanceof StreamFactoryInterface);
-
- $http_stream = $stream_factory->createStreamFromFile($temp_zip_file);
+ $stream = $this->stream_factory->createStreamFromFile($temp_zip_file);
$filename = addcslashes($download_filename, '"') . '.zip';
- /** @var ResponseFactoryInterface $response_factory */
- $response_factory = app(ResponseFactoryInterface::class);
-
- return $response_factory->createResponse()
- ->withBody($http_stream)
+ return $this->response_factory->createResponse()
+ ->withBody($stream)
->withHeader('Content-Type', 'application/zip')
->withHeader('Content-Disposition', 'attachment; filename="' . $filename . '"');
}
@@ -175,17 +178,10 @@ class ExportGedcomClient implements RequestHandlerInterface
rewind($resource);
$charset = $convert ? 'ISO-8859-1' : 'UTF-8';
+ $stream = $this->stream_factory->createStreamFromResource($resource);
- $stream_factory = app(StreamFactoryInterface::class);
- assert($stream_factory instanceof StreamFactoryInterface);
-
- $http_stream = $stream_factory->createStreamFromResource($resource);
-
- /** @var ResponseFactoryInterface $response_factory */
- $response_factory = app(ResponseFactoryInterface::class);
-
- return $response_factory->createResponse()
- ->withBody($http_stream)
+ return $this->response_factory->createResponse()
+ ->withBody($stream)
->withHeader('Content-Type', 'text/x-gedcom; charset=' . $charset)
->withHeader('Content-Disposition', 'attachment; filename="' . addcslashes($download_filename, '"') . '"');
}