Passed
Push — master ( 2c5fc5...ec65bd )
by Rustam
05:04 queued 02:32
created

ApiResponseDataFactory::createResponse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Factory;
6
7
use App\Dto\ApiResponseData;
8
use Yiisoft\DataResponse\DataResponse;
9
use Yiisoft\Http\Status;
10
11
final class ApiResponseDataFactory
12
{
13 5
    public function createFromResponse(DataResponse $response): ApiResponseData
14
    {
15 5
        if ($response->getStatusCode() !== Status::OK) {
16
            return $this
17 2
                ->createErrorResponse()
18 2
                ->setErrorCode($response->getStatusCode())
19 2
                ->setErrorMessage($this->getErrorMessage($response));
20
        }
21
22
        return $this
23 3
            ->createSuccessResponse()
24 3
            ->setData($response->getData());
0 ignored issues
show
Bug introduced by
It seems like $response->getData() can also be of type object; however, parameter $data of App\Dto\ApiResponseData::setData() does only seem to accept array|null, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

24
            ->setData(/** @scrutinizer ignore-type */ $response->getData());
Loading history...
25
    }
26
27 3
    public function createSuccessResponse(): ApiResponseData
28
    {
29
        return $this
30 3
            ->createResponse()
31 3
            ->setStatus('success');
32
    }
33
34 2
    public function createErrorResponse(): ApiResponseData
35
    {
36
        return $this
37 2
            ->createResponse()
38 2
            ->setStatus('failed');
39
    }
40
41 5
    public function createResponse(): ApiResponseData
42
    {
43 5
        return new ApiResponseData();
44
    }
45
46 2
    private function getErrorMessage(DataResponse $response): string
47
    {
48 2
        $data = $response->getData();
49 2
        if (is_string($data) && !empty($data)) {
50 2
            return $data;
51
        }
52
53
        return 'Unknown error';
54
    }
55
}
56