Completed
Push — master ( d50b1e...b151aa )
by recca
01:53
created

FileAPI::getMimeType()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2.1481

Importance

Changes 0
Metric Value
dl 0
loc 9
ccs 4
cts 6
cp 0.6667
rs 9.6666
c 0
b 0
f 0
cc 2
eloc 5
nc 2
nop 1
crap 2.1481
1
<?php
2
3
namespace Recca0120\Upload\Apis;
4
5
class FileAPI extends Base
6
{
7
    /**
8
     * getOriginalName.
9
     *
10
     * @return string
11
     */
12 2
    protected function getOriginalName()
13
    {
14 2
        $originalName = $this->request->get('name');
15 2
        if (empty($originalName) === true) {
16 2
            list($originalName) = sscanf(
17 2
                $this->request->header('content-disposition'),
18
                'attachment; filename=%s'
19 2
            );
20 2
        }
21
22 2
        return $originalName;
23
    }
24
25
    /**
26
     * getMimeType.
27
     *
28
     * @param string $originalName
29
     * @return string
30
     */
31 2
    protected function getMimeType($originalName)
32
    {
33 2
        $mimeType = $this->request->header('content-type');
34 2
        if (empty($mimeType) === true) {
35
            $mimeType = $this->filesystem->mimeType($originalName);
36
        }
37
38 2
        return $mimeType;
39
    }
40
41
    /**
42
     * receive.
43
     *
44
     * @param string $inputName
45
     * @return \Symfony\Component\HttpFoundation\File\UploadedFile
46
     *
47
     * @throws \Recca0120\Upload\Exceptions\ChunkedResponseException
48
     */
49 3
    protected function doReceive($inputName)
50
    {
51 3
        $contentRange = $this->request->header('content-range');
52 3
        if (empty($contentRange) === true) {
53 1
            return $this->request->file($inputName);
54
        }
55 2
        list($start, $end, $total) = sscanf($contentRange, 'bytes %d-%d/%d');
56
57 2
        return $this->receiveChunkedFile(
58 2
            $originalName = $this->getOriginalName(),
59 2
            'php://input',
60 2
            $start,
61 2
            $end >= $total - 1,
62 2
            ['mimeType' => $this->getMimeType($originalName), 'headers' => ['X-Last-Known-Byte' => $end]]
63 2
        );
64
    }
65
}
66