Passed
Push — master ( 489b65...fbecfe )
by Vladislav
02:48 queued 31s
created

NumericHelper::validateDepthValue()   B

Complexity

Conditions 8
Paths 9

Size

Total Lines 26
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 18
c 0
b 0
f 0
dl 0
loc 26
rs 8.4444
cc 8
nc 9
nop 2
1
<?php
2
3
namespace Carpenstar\ByBitAPI\Core\Helpers;
4
5
use Carpenstar\ByBitAPI\Core\Enums\WebSocketOrderBookDepth;
6
use Carpenstar\ByBitAPI\Core\Exceptions\SDKException;
7
8
class NumericHelper
9
{
10
    /**
11
     * Проверка, больше ли переданное сравниваемое значение с установленным
12
     *
13
     * @param float $value
14
     * @param float $minValue
15
     * @return void
16
     * @throws SDKException
17
     */
18
    public static function checkValueMoreThan(float $value, float $minValue): void
19
    {
20
        if ($value < $minValue) {
21
            throw new SDKException("Value {$value} less than {$minValue}");
22
        }
23
    }
24
25
    /**
26
     * Проверка, меньше ли переданное сравниваемое значение с установленным
27
     *
28
     * @param float $value
29
     * @param float $maxValue
30
     * @return void
31
     * @throws SDKException
32
     */
33
    public static function checkValueLessThan(float $value, float $maxValue): void
34
    {
35
        if ($value > $maxValue) {
36
            throw new SDKException("Value {$value} more than {$maxValue}");
37
        }
38
    }
39
40
    public static function assign($value, $defaultValue = 0): int
41
    {
42
        return (int) $value ?? $defaultValue;
43
    }
44
45
    /**
46
     * Проверка соответствует ли переданное значение, среди значений возможных для указаний глубины книги ордеров
47
     *
48
     * @param int $value
49
     * @param string $streamType
50
     * @return bool
51
     * @throws SDKException
52
     */
53
    public static function validateDepthValue(int $value, string $streamType): bool
54
    {
55
        $isValidate = true;
56
57
        switch ($streamType) {
58
            case 'spot':
59
                if (!in_array($value, [WebSocketOrderBookDepth::DEPTH_1, WebSocketOrderBookDepth::DEPTH_50, WebSocketOrderBookDepth::DEPTH_200])) {
60
                    $isValidate = false;
61
                }
62
                break;
63
            case 'linear':
64
            case 'inverse':
65
                if (!in_array($value, [WebSocketOrderBookDepth::DEPTH_1, WebSocketOrderBookDepth::DEPTH_50, WebSocketOrderBookDepth::DEPTH_200, WebSocketOrderBookDepth::DEPTH_500])) {
66
                    $isValidate = false;
67
                }
68
                break;
69
            case 'option':
70
                if (!in_array($value, [WebSocketOrderBookDepth::DEPTH_25, WebSocketOrderBookDepth::DEPTH_100])) {
71
                    $isValidate = false;
72
                }
73
                break;
74
            default:
75
                throw new SDKException("Unknown stream type: {$streamType}");
76
        }
77
78
        return $isValidate;
79
    }
80
81
}
82