Passed
Push — master ( 50ea6a...50a7ab )
by Alexander
06:00 queued 02:34
created

ApiResponseDataFactory   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 94.44%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
dl 0
loc 37
ccs 17
cts 18
cp 0.9444
rs 10
c 1
b 0
f 0
wmc 8

5 Methods

Rating   Name   Duplication   Size   Complexity  
A createErrorResponse() 0 3 1
A createSuccessResponse() 0 3 1
A createFromResponse() 0 10 2
A getErrorMessage() 0 8 3
A createResponse() 0 3 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 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