diff options
| author | Greg Roach <fisharebest@gmail.com> | 2021-05-18 12:36:04 +0100 |
|---|---|---|
| committer | Greg Roach <fisharebest@gmail.com> | 2021-05-18 12:42:53 +0100 |
| commit | ca47b2ada94c22f0e53abe22300f5c1c43240913 (patch) | |
| tree | 649e78374e367a285abfd1cfd5239fbb08a6e0f4 /app/Http/RequestHandlers/ExportGedcomClient.php | |
| parent | c4943cff72f95a28fbb9404e3c20b169ff098e5c (diff) | |
| download | webtrees-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.php | 44 |
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, '"') . '"'); } |
