Completed
Push — master ( 75079c...64533e )
by Oleg
47:12
created

ResponseFactory::__invoke()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 20
ccs 11
cts 11
cp 1
rs 9.6
c 0
b 0
f 0
cc 3
nc 4
nop 5
crap 3
1
<?php
2
declare(strict_types=1);
3
4
namespace SlayerBirden\DataFlowServer\Stdlib;
5
6
use Psr\Http\Message\ResponseInterface;
7
use SlayerBirden\DataFlowServer\Notification\DangerMessage;
8
use SlayerBirden\DataFlowServer\Notification\SuccessMessage;
9
use Zend\Diactoros\Response\JsonResponse;
10
11
final class ResponseFactory
12
{
13 138
    public function __invoke(
14
        string $message,
15
        $code,
16
        ?string $dataObjectName = null,
17
        $value = null,
18
        $count = null
19
    ): ResponseInterface {
20 138
        $data = [];
21 138
        if ($dataObjectName !== null) {
22 116
            $data[$dataObjectName] = $value;
23 116
            $data['validation'] = [];
24
        }
25 138
        if ($count !== null) {
26 38
            $data['count'] = $count;
27
        }
28 138
        return new JsonResponse([
29 138
            'data' => $data,
30 138
            'msg' => $this->getMessage($message, $code),
31 138
        ], $code);
32
    }
33
34 138
    private function getMessage($message, $code)
35
    {
36 138
        if ($code >= 200 and $code < 300) {
37 76
            return new SuccessMessage($message);
38
        } else {
39 64
            return new DangerMessage($message);
40
        }
41
    }
42
}
43