Passed
Pull Request — master (#24)
by Alexander
03:14
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 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 1
b 0
f 0
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 11
    public function createFromResponse(DataResponse $response): ApiResponseData
14
    {
15 11
        if ($response->getStatusCode() !== Status::OK) {
16 5
            return $this->createErrorResponse()
17 5
                ->setErrorCode($response->getStatusCode())
18 5
                ->setErrorMessage($this->getErrorMessage($response));
19
        }
20
21 6
        return $this->createSuccessResponse()
22 6
            ->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

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