UnpackingFailedException::unknownCode()   A
last analyzed

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 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * This file is part of the rybakit/msgpack.php package.
5
 *
6
 * (c) Eugene Leonovich <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace MessagePack\Exception;
13
14
class UnpackingFailedException extends \RuntimeException
15
{
16 1
    public static function unknownCode(int $code) : self
17
    {
18 1
        return new self(\sprintf('Unknown code: 0x%x', $code));
19
    }
20
21 9
    public static function unexpectedCode(int $code, string $type) : self
22
    {
23 9
        return new self(\sprintf('Unexpected %s code: 0x%x', $type, $code));
24
    }
25
26 68
    public static function invalidMapKeyType(int $code) : self
27
    {
28 68
        $type = (static function () use ($code) : ?string {
29 68
            if ($code >= 0x90 && $code <= 0x9f) {
30 8
                return 'array';
31
            }
32 60
            if ($code >= 0x80 && $code <= 0x8f) {
33 12
                return 'map';
34
            }
35
36
            switch ($code) {
37 48
                case 0xc0: return 'nil';
38 46
                case 0xc2:
39 46
                case 0xc3: return 'bool';
40 42
                case 0xca:
41 42
                case 0xcb: return 'float';
42 32
                case 0xdc:
43 32
                case 0xdd: return 'array';
44 26
                case 0xde:
45 26
                case 0xdf: return 'map';
46 18
                case 0xd4:
47 16
                case 0xd5:
48 14
                case 0xd6:
49 12
                case 0xd7:
50 10
                case 0xd8:
51 8
                case 0xc7:
52 6
                case 0xc8:
53 18
                case 0xc9: return 'ext';
54
            }
55
56 2
            return null;
57 68
        })();
58
59 68
        return new self('Invalid map key type: expected int, str or bin but got '.(\is_null($type) ? \sprintf('0x%x', $code) : \sprintf('%s (0x%x)', $type, $code)));
60
    }
61
}
62