Failed Conditions
Pull Request — release/3.0.0-dev (#32)
by Yo
01:54
created

JsonRpcCallResponseNormalizer   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 0
loc 42
ccs 0
cts 13
cp 0
rs 10
c 0
b 0
f 0
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
B normalize() 0 24 5
A __construct() 0 3 1
1
<?php
2
namespace Yoanm\JsonRpcServer\App\Serialization;
3
4
use Yoanm\JsonRpcServer\Domain\Model\JsonRpcCallResponse;
5
6
/**
7
 * Class JsonRpcCallResponseNormalizer
8
 */
9
class JsonRpcCallResponseNormalizer
10
{
11
    /** @var JsonRpcResponseNormalizer */
12
    private $responseNormalizer;
13
14
    /**
15
     * @param JsonRpcResponseNormalizer $responseNormalizer
16
     */
17
    public function __construct(JsonRpcResponseNormalizer $responseNormalizer)
18
    {
19
        $this->responseNormalizer = $responseNormalizer;
20
    }
21
22
    /**
23
     * @param JsonRpcCallResponse $jsonRpcCallResponse
24
     *
25
     * @return array|null
26
     */
27
    public function normalize(JsonRpcCallResponse $jsonRpcCallResponse)
28
    {
29
        $resultList = [];
30
        foreach ($jsonRpcCallResponse->getResponseList() as $response) {
31
            // Notifications must not have a response, even if they are on error
32
            if (!$response->isNotification()) {
33
                $resultList[] = $this->responseNormalizer->normalize($response);
34
            }
35
        }
36
37
        // if no result, it means It was either :
38
        // - a batch call with only notifications
39
        // - a notification request
40
        // => return null response in all cases
41
        if (0 === count($resultList)) {
42
            return null;
43
        }
44
45
        // In case it's not a batch, return the first (lonely) result
46
        if (!$jsonRpcCallResponse->isBatch()) {
47
            return array_shift($resultList);
48
        }
49
50
        return $resultList;
51
    }
52
}
53