Failed Conditions
Pull Request — master (#1)
by Yo
05:58 queued 03:23
created

ResponseNormalizer   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 0
loc 55
ccs 0
cts 28
cp 0
rs 10
c 0
b 0
f 0
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A normalize() 0 20 3
A normalizeError() 0 12 2
1
<?php
2
namespace Yoanm\JsonRpcServer\App\Serialization;
3
4
use Yoanm\JsonRpcServer\Domain\Exception\JsonRpcExceptionInterface;
5
use Yoanm\JsonRpcServer\Domain\Model\JsonRpcResponse;
6
7
/**
8
 * Class ResponseNormalizer
9
 */
10
class ResponseNormalizer
11
{
12
    const KEY_JSON_RPC = 'json-rpc';
13
    const KEY_ID = 'id';
14
    const KEY_RESULT = 'result';
15
    const KEY_ERROR = 'error';
16
17
    const SUB_KEY_ERROR_CODE = 'code';
18
    const SUB_KEY_ERROR_MESSAGE = 'message';
19
    const SUB_KEY_ERROR_DATA = 'data';
20
21
    /**
22
     * @param JsonRpcResponse $response
23
     *
24
     * @return array|null
25
     */
26
    public function normalize(JsonRpcResponse $response)
27
    {
28
        if ($response->isNotification()) {
29
            return null;
30
        }
31
32
        $data = [
33
            self::KEY_JSON_RPC => $response->getJsonRpc(),
34
            self::KEY_ID => $response->getId()
35
        ];
36
37
        if ($response->getError()) {
38
            $data[self::KEY_ERROR] = $this->normalizeError(
39
                $response->getError()
40
            );
41
        } else {
42
            $data[self::KEY_RESULT] = $response->getResult();
43
        }
44
45
        return $data;
46
    }
47
48
    /**
49
     * @param JsonRpcExceptionInterface $error
50
     *
51
     * @return array
52
     */
53
    private function normalizeError(JsonRpcExceptionInterface $error)
54
    {
55
        $normalizedError = [
56
            self::SUB_KEY_ERROR_CODE => $error->getErrorCode(),
57
            self::SUB_KEY_ERROR_MESSAGE => $error->getErrorMessage()
58
        ];
59
60
        if ($error->getErrorData()) {
61
            $normalizedError[self::SUB_KEY_ERROR_DATA] = $error->getErrorData();
62
        }
63
64
        return $normalizedError;
65
    }
66
}
67