Completed
Push — master ( 4c4580...b68f07 )
by recca
01:52
created

Receiver::receive()   A

Complexity

Conditions 3
Paths 6

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 3

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 16
ccs 11
cts 11
cp 1
rs 9.4285
cc 3
eloc 11
nc 6
nop 2
crap 3
1
<?php
2
3
namespace Recca0120\Upload;
4
5
use Closure;
6
use Illuminate\Support\Arr;
7
use Illuminate\Http\JsonResponse;
8
use Recca0120\Upload\Apis\FileAPI;
9
use Recca0120\Upload\Apis\Plupload;
10
use Recca0120\Upload\Contracts\Api;
11
use Symfony\Component\HttpFoundation\File\UploadedFile;
12
use Recca0120\Upload\Exceptions\ChunkedResponseException;
13
14
class Receiver
15
{
16
    /**
17
     * $api.
18
     *
19
     * @var \Recca0120\Upload\Contracts\Api
20
     */
21
    protected $api;
22
23
    /**
24
     * $url.
25
     *
26
     * @var string
27
     */
28
    protected $url;
29
30
    /**
31
     * __construct.
32
     *
33
     * @param \Recca0120\Upload\Contracts\Api $api
34
     */
35 6
    public function __construct(Api $api)
36
    {
37 6
        $this->api = $api;
38 6
    }
39
40
    /**
41
     * setUrl.
42
     *
43
     * @param string $url
44
     * @return $this
45
     */
46
    public function setUrl($url)
47
    {
48
        $this->url = $url;
49
50
        return $this;
51
    }
52
53
    /**
54
     * receive.
55
     *
56
     * @param string $inputName
57
     * @param \Closure $callback
58
     * @return \Symfony\Component\HttpFoundation\Response
59
     */
60 3
    public function receive($inputName = 'file', Closure $callback = null)
61
    {
62
        try {
63 3
            $callback = $callback ?: [$this, 'callback'];
64 3
            $response = call_user_func_array($callback, [
65 3
                $uploadedFile = $this->api->receive($inputName),
66 2
                $this->api->path(),
67 2
                $this->api->domain(),
68 2
                $this->api
69 2
            ]);
70
71 2
            return $this->api->deleteUploadedFile($uploadedFile)->completedResponse($response);
72 1
        } catch (ChunkedResponseException $e) {
73 1
            return $e->getResponse();
74
        }
75
    }
76
77
    /**
78
     * callback.
79
     *
80
     * @return \Closure
81
     */
82 1
    protected function callback(UploadedFile $uploadedFile, $path, $domain)
83
    {
84 1
        $clientOriginalName = $uploadedFile->getClientOriginalName();
85 1
        $clientOriginalExtension = strtolower($uploadedFile->getClientOriginalExtension());
86 1
        $basename = pathinfo($uploadedFile->getBasename(), PATHINFO_FILENAME);
0 ignored issues
show
Unused Code introduced by
$basename is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
87 1
        $filename = pathinfo($clientOriginalName, PATHINFO_FILENAME).'.'.$clientOriginalExtension;
88 1
        $mimeType = $uploadedFile->getMimeType();
89 1
        $size = $uploadedFile->getSize();
90 1
        $uploadedFile->move($path, $filename);
91
        $response = [
92 1
            'name' => $filename,
93 1
            'tmp_name' => $path.$filename,
94 1
            'type' => $mimeType,
95 1
            'size' => $size,
96 1
            'url' => $domain.$path.$filename,
97 1
        ];
98
99 1
        return new JsonResponse($response);
100
    }
101
102
    /**
103
     * factory.
104
     *
105
     * @param array $config
106
     * @param string $class
107
     * @return \Recca0120\Upload\Contracts\Api
108
     */
109 1
    public static function factory($config = [], $class = FileAPI::class)
110
    {
111 1
        $class = Arr::get([
112 1
            'fileapi' => FileAPI::class,
113 1
            'plupload' => Plupload::class,
114 1
        ], strtolower($class), $class);
115
116 1
        return new static(new $class($config));
117
    }
118
}
119