Completed
Push — master ( 43ad9f...1192b0 )
by
unknown
09:35
created

DownloadUtility::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 1
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\Utility;
4
5
use League\Flysystem\Filesystem;
6
use MediaMonks\SonataMediaBundle\Model\MediaInterface;
7
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
8
use Symfony\Component\HttpFoundation\StreamedResponse;
9
10
class DownloadUtility
11
{
12
    /**
13
     * @var Filesystem
14
     */
15
    private $filesystem;
16
17
    /**
18
     * @param Filesystem $filesystem
19
     */
20 1
    public function __construct(Filesystem $filesystem)
21
    {
22 1
        $this->filesystem = $filesystem;
23 1
    }
24
25
    /**
26
     * @param MediaInterface $media
27
     * @return StreamedResponse
28
     */
29
    public function getStreamedResponse(MediaInterface $media)
30
    {
31 1
        $response = new StreamedResponse(function () use ($media) {
32 1
            $fileHandle = $this->filesystem->readStream($media->getProviderReference());
33 1
            while (!feof($fileHandle)) {
34 1
                echo fread($fileHandle, 1024);
35 1
            }
36 1
            fclose($fileHandle);
37 1
        });
38 1
        $response->headers->set('Content-Disposition', $response->headers->makeDisposition(
39 1
            ResponseHeaderBag::DISPOSITION_ATTACHMENT,
40 1
            $media->getProviderMetaData()['originalName']
41 1
        ));
42
43 1
        return $response;
44
    }
45
}
46