Completed
Push — master ( 30de3e...86c1d9 )
by Владислав
03:51 queued 01:45
created

Anticaptcha::notTrue()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace jumper423\decaptcha\services;
4
5
use jumper423\decaptcha\core\DeCaptchaBase;
6
7
/**
8
 * Class Anticaptcha.
9
 */
10
class Anticaptcha extends DeCaptchaBase
11
{
12
    protected $host = 'api.anti-captcha.com';
13
    protected $scheme = 'https';
14
15
    const RESPONSE_RECOGNIZE_OK = 0;
16
    const RESPONSE_RECOGNIZE_REPEAT = 2;
17
    const RESPONSE_GET_OK = 'ready';
18
    const RESPONSE_GET_REPEAT = 'processing';
19
20
    const DECODE_PARAM_ERROR = 3;
21
    const DECODE_PARAM_BALANCE = 4;
22
23
    const ACTION_FIELD_TASK = 17;
24
    const PARAM_FIELD_TYPE_OBJECT = 3;
25
    const PARAM_FIELD_TYPE_BOOLEAN = 4;
26
27
    const ACTION_BALANCE = 3;
28
    const DECODE_ACTION_BALANCE = 3;
29
30
    protected $paramsNames = [
31
        self::ACTION_FIELD_KEY        => 'clientKey',
32
        self::ACTION_FIELD_SOFT_ID    => 'softId',
33
        self::ACTION_FIELD_LANGUAGE   => 'languagePool',
34
        self::ACTION_FIELD_TASK       => 'task',
35
        self::ACTION_FIELD_METHOD     => 'type',
36
        self::ACTION_FIELD_FILE       => 'body',
37
        self::ACTION_FIELD_PHRASE     => 'phrase',
38
        self::ACTION_FIELD_REGSENSE   => 'case',
39
        self::ACTION_FIELD_NUMERIC    => 'numeric',
40
        self::ACTION_FIELD_CALC       => 'math',
41
        self::ACTION_FIELD_MIN_LEN    => 'minLength',
42
        self::ACTION_FIELD_MAX_LEN    => 'maxLength',
43
        self::ACTION_FIELD_CAPTCHA_ID => 'taskId',
44
    ];
45
46
    public function init()
47
    {
48
        parent::init();
49
50
        $this->actions[static::ACTION_RECOGNIZE] = [
51
            static::ACTION_URI    => 'createTask',
52
            static::ACTION_METHOD => static::ACTION_METHOD_POST,
53
            static::ACTION_JSON   => true,
54
            static::ACTION_FIELDS => [
55
                static::ACTION_FIELD_KEY => [
56
                    static::PARAM_SLUG_REQUIRE => true,
57
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_API_KEY,
58
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
59
                ],
60
                static::ACTION_FIELD_SOFT_ID => [
61
                    static::PARAM_SLUG_VARIABLE => false,
62
                    static::PARAM_SLUG_DEFAULT  => 882,
63
                    static::PARAM_SLUG_TYPE     => static::PARAM_FIELD_TYPE_INTEGER,
64
                ],
65
                static::ACTION_FIELD_LANGUAGE => [
66
                    static::PARAM_SLUG_DEFAULT => 'en',
67
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
68
                ],
69
                static::ACTION_FIELD_TASK => [
70
                    static::PARAM_SLUG_REQUIRE => true,
71
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_OBJECT,
72
                    static::ACTION_FIELDS      => [
73
                        static::ACTION_FIELD_METHOD => [
74
                            static::PARAM_SLUG_DEFAULT => 'ImageToTextTask',
75
                            static::PARAM_SLUG_REQUIRE => true,
76
                            static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
77
                        ],
78
                        static::ACTION_FIELD_FILE => [
79
                            static::PARAM_SLUG_REQUIRE => true,
80
                            static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_FILE,
81
                            static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
82
                        ],
83
                        static::ACTION_FIELD_PHRASE => [
84
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_BOOLEAN,
85
                        ],
86
                        static::ACTION_FIELD_REGSENSE => [
87
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_BOOLEAN,
88
                        ],
89
                        static::ACTION_FIELD_NUMERIC => [
90
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
91
                        ],
92
                        static::ACTION_FIELD_CALC => [
93
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_BOOLEAN,
94
                        ],
95
                        static::ACTION_FIELD_MIN_LEN => [
96
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
97
                        ],
98
                        static::ACTION_FIELD_MAX_LEN => [
99
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
100
                        ],
101
                    ],
102
                ],
103
            ],
104
        ];
105
        $this->actions[static::ACTION_UNIVERSAL_WITH_CAPTCHA] = [
106
            static::ACTION_URI    => 'getTaskResult',
107
            static::ACTION_METHOD => static::ACTION_METHOD_POST,
108
            static::ACTION_JSON   => true,
109
            static::ACTION_FIELDS => [
110
                static::ACTION_FIELD_KEY => [
111
                    static::PARAM_SLUG_REQUIRE => true,
112
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_API_KEY,
113
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
114
                ],
115
                static::ACTION_FIELD_CAPTCHA_ID => [
116
                    static::PARAM_SLUG_REQUIRE => true,
117
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_CAPTCHA,
118
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
119
                ],
120
            ],
121
        ];
122
        $this->actions[static::ACTION_BALANCE] = [
123
            static::ACTION_URI    => 'getBalance',
124
            static::ACTION_METHOD => static::ACTION_METHOD_POST,
125
            static::ACTION_JSON   => true,
126
            static::ACTION_FIELDS => [
127
                static::ACTION_FIELD_KEY => [
128
                    static::PARAM_SLUG_REQUIRE => true,
129
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_API_KEY,
130
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
131
                ],
132
            ],
133
        ];
134
135
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_RECOGNIZE] = [
136
            static::DECODE_FORMAT    => static::RESPONSE_TYPE_JSON,
137
            static::DECODE_PARAMS    => [
138
                static::DECODE_PARAM_RESPONSE => [
139
                    static::DECODE_PARAM_SETTING_MARKER => 'errorId',
140
                ],
141
                static::DECODE_PARAM_CAPTCHA => [
142
                    static::DECODE_PARAM_SETTING_MARKER => 'taskId',
143
                ],
144
                static::DECODE_PARAM_ERROR => [
145
                    static::DECODE_PARAM_SETTING_MARKER => 'errorCode',
146
                ],
147
            ],
148
        ];
149
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_GET] = [
150
            static::DECODE_FORMAT    => static::RESPONSE_TYPE_JSON,
151
            static::DECODE_PARAMS    => [
152
                static::DECODE_PARAM_RESPONSE => [
153
                    static::DECODE_PARAM_SETTING_MARKER => 'status',
154
                ],
155
                static::DECODE_PARAM_CODE => [
156
                    static::DECODE_PARAM_SETTING_MARKER => 'solution.text',
157
                ],
158
                static::DECODE_PARAM_ERROR => [
159
                    static::DECODE_PARAM_SETTING_MARKER => 'errorCode',
160
                ],
161
            ],
162
        ];
163
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_BALANCE] = [
164
            static::DECODE_FORMAT    => static::RESPONSE_TYPE_JSON,
165
            static::DECODE_PARAMS    => [
166
                static::DECODE_PARAM_RESPONSE => [
167
                    static::DECODE_PARAM_SETTING_MARKER => 'errorId',
168
                ],
169
                static::DECODE_PARAM_BALANCE => [
170
                    static::DECODE_PARAM_SETTING_MARKER => 'balance',
171
                ],
172
                static::DECODE_PARAM_ERROR => [
173
                    static::DECODE_PARAM_SETTING_MARKER => 'errorCode',
174
                ],
175
            ],
176
        ];
177
    }
178
179
    /**
180
     * Баланс
181
     *
182
     * @return float
183
     */
184
    public function getBalance()
185
    {
186
        $result = $this->requestUniversal('getbalance');
187
        if ($result[static::DECODE_PARAM_RESPONSE] != 0) {
188
            return 0;
189
        }
190
        return (float)$result[static::DECODE_PARAM_BALANCE];
191
    }
192
}
193