Completed
Push — master ( bf2a2c...141571 )
by Владислав
02:05
created

Anticaptcha   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 211
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
c 1
b 0
f 0
lcom 1
cbo 1
dl 0
loc 211
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
B init() 0 155 1
A getBalance() 0 4 1
A notTrue() 0 4 1
1
<?php
2
3
namespace jumper423\decaptcha\services;
4
5
use jumper423\decaptcha\core\DeCaptchaBase;
6
7
/**
8
 * Class Anticaptcha
9
 * @package jumper423\decaptcha\services
10
 */
11
class Anticaptcha extends DeCaptchaBase
12
{
13
    public $domain = 'api.anti-captcha.com';
14
15
    const RESPONSE_REPORTBAD_OK = 'OK_REPORT_RECORDED';
16
17
    const ACTION_FIELD_TASK = 17;
18
    const PARAM_FIELD_TYPE_OBJECT = 3;
19
    const PARAM_FIELD_TYPE_BOOLEAN = 4;
20
21
    protected $paramsNames = [
22
        self::ACTION_FIELD_KEY => 'clientKey',
23
        self::ACTION_FIELD_SOFT_ID => 'softId',
24
        self::ACTION_FIELD_LANGUAGE => 'languagePool',
25
        self::ACTION_FIELD_TASK => 'task',
26
        self::ACTION_FIELD_METHOD => 'type',
27
        self::ACTION_FIELD_FILE => 'body',
28
        self::ACTION_FIELD_PHRASE => 'phrase',
29
        self::ACTION_FIELD_REGSENSE => 'case',
30
        self::ACTION_FIELD_NUMERIC => 'numeric',
31
        self::ACTION_FIELD_CALC => 'math',
32
        self::ACTION_FIELD_MIN_LEN => 'minLength',
33
        self::ACTION_FIELD_MAX_LEN => 'maxLength',
34
35
36
//        self::ACTION_FIELD_METHOD           => 'method',
0 ignored issues
show
Unused Code Comprehensibility introduced by
51% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
37
//        self::ACTION_FIELD_LANGUAGE         => 'language',
38
//        self::ACTION_FIELD_CAPTCHA_ID       => 'id',
39
//        self::ACTION_FIELD_ACTION           => 'action',
40
//        self::ACTION_FIELD_QUESTION         => 'question',
41
//        self::ACTION_FIELD_HEADER_ACAO      => 'header_acao',
42
//        self::ACTION_FIELD_TEXTINSTRUCTIONS => 'textinstructions',
43
//        self::ACTION_FIELD_PINGBACK         => 'pingback',
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_FIELDS => [
54
                static::ACTION_FIELD_KEY => [
55
                    static::PARAM_SLUG_REQUIRE => true,
56
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_API_KEY,
57
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
58
                ],
59
                static::ACTION_FIELD_SOFT_ID => [
60
                    static::PARAM_SLUG_VARIABLE => false,
61
                    static::PARAM_SLUG_DEFAULT => 882,
62
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
63
                ],
64
                static::ACTION_FIELD_LANGUAGE => [
65
                    static::PARAM_SLUG_DEFAULT => 'en',
66
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
67
                ],
68
                static::ACTION_FIELD_TASK => [
69
                    static::PARAM_SLUG_REQUIRE => true,
70
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_OBJECT,
71
                    static::ACTION_FIELDS => [
72
                        static::ACTION_FIELD_METHOD => [
73
                            static::PARAM_SLUG_DEFAULT => 'ImageToTextTask',
74
                            static::PARAM_SLUG_REQUIRE => true,
75
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
76
                        ],
77
                        static::ACTION_FIELD_FILE => [
78
                            static::PARAM_SLUG_REQUIRE => true,
79
                            static::PARAM_SLUG_SPEC => static::PARAM_SPEC_FILE,
80
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
81
                        ],
82
                        static::ACTION_FIELD_PHRASE => [
83
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_BOOLEAN,
84
                        ],
85
                        static::ACTION_FIELD_REGSENSE => [
86
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_BOOLEAN,
87
                        ],
88
                        static::ACTION_FIELD_NUMERIC => [
89
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
90
                        ],
91
                        static::ACTION_FIELD_CALC => [
92
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_BOOLEAN,
93
                        ],
94
                        static::ACTION_FIELD_MIN_LEN => [
95
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
96
                        ],
97
                        static::ACTION_FIELD_MAX_LEN => [
98
                            static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
99
                        ],
100
                    ]
101
                ],
102
103
104
//                static::ACTION_FIELD_QUESTION => [
0 ignored issues
show
Unused Code Comprehensibility introduced by
46% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
105
//                    static::PARAM_SLUG_DEFAULT => 0,
106
//                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
107
//                ],
108
//                static::ACTION_FIELD_HEADER_ACAO => [
109
//                    static::PARAM_SLUG_DEFAULT => 0,
110
//                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
111
//                ],
112
//                static::ACTION_FIELD_TEXTINSTRUCTIONS => [
113
//                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
114
//                ],
115
//                static::ACTION_FIELD_PINGBACK => [
116
//                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
117
//                ],
118
            ],
119
        ];
120
        $this->actions[static::ACTION_UNIVERSAL] = [
121
            static::ACTION_URI => 'res.php',
122
            static::ACTION_METHOD => static::ACTION_METHOD_GET,
123
            static::ACTION_FIELDS => [
124
                static::ACTION_FIELD_KEY => [
125
                    static::PARAM_SLUG_REQUIRE => true,
126
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_API_KEY,
127
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
128
                ],
129
                static::ACTION_FIELD_ACTION => [
130
                    static::PARAM_SLUG_REQUIRE => true,
131
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
132
                ],
133
                static::ACTION_FIELD_HEADER_ACAO => [
134
                    static::PARAM_SLUG_DEFAULT => 0,
135
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
136
                ],
137
                static::ACTION_FIELD_CAPTCHA_ID => [
138
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_CAPTCHA,
139
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
140
                ],
141
            ],
142
        ];
143
        $this->actions[static::ACTION_UNIVERSAL_WITH_CAPTCHA] = [
144
            static::ACTION_URI => 'res.php',
145
            static::ACTION_METHOD => static::ACTION_METHOD_GET,
146
            static::ACTION_FIELDS => [
147
                static::ACTION_FIELD_KEY => [
148
                    static::PARAM_SLUG_REQUIRE => true,
149
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_API_KEY,
150
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
151
                ],
152
                static::ACTION_FIELD_CAPTCHA_ID => [
153
                    static::PARAM_SLUG_REQUIRE => true,
154
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_CAPTCHA,
155
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
156
                ],
157
                static::ACTION_FIELD_ACTION => [
158
                    static::PARAM_SLUG_REQUIRE => true,
159
                    static::PARAM_SLUG_DEFAULT => 'get',
160
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
161
                    static::PARAM_SLUG_VARIABLE => false,
162
                ],
163
                static::ACTION_FIELD_HEADER_ACAO => [
164
                    static::PARAM_SLUG_DEFAULT => 0,
165
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
166
                ],
167
            ],
168
        ];
169
170
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_RECOGNIZE] = [
171
            static::DECODE_SEPARATOR => '|',
172
            static::DECODE_PARAMS => [
173
                static::DECODE_PARAM_RESPONSE => [
174
                    static::DECODE_PARAM_SETTING_MARKER => 0,
175
                ],
176
                static::DECODE_PARAM_CAPTCHA => [
177
                    static::DECODE_PARAM_SETTING_MARKER => 1,
178
                ],
179
            ],
180
        ];
181
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_GET] = [
182
            static::DECODE_SEPARATOR => '|',
183
            static::DECODE_PARAMS => [
184
                static::DECODE_PARAM_RESPONSE => [
185
                    static::DECODE_PARAM_SETTING_MARKER => 0,
186
                ],
187
                static::DECODE_PARAM_CODE => [
188
                    static::DECODE_PARAM_SETTING_MARKER => 1,
189
                ],
190
            ],
191
        ];
192
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_UNIVERSAL] = [
193
            static::DECODE_SEPARATOR => '|',
194
            static::DECODE_PARAMS => [
195
                static::DECODE_PARAM_RESPONSE => [
196
                    static::DECODE_PARAM_SETTING_MARKER => 0,
197
                ],
198
            ],
199
        ];
200
    }
201
202
    /**
203
     * Баланс
204
     *
205
     * @return float
206
     */
207
    public function getBalance()
208
    {
209
        return (float)$this->requestUniversal('getbalance')[static::DECODE_PARAM_RESPONSE];
210
    }
211
212
    /**
213
     * Не верно распознана.
214
     *
215
     * @return bool
216
     */
217
    public function notTrue()
218
    {
219
        return $this->requestUniversal('reportbad')[static::DECODE_PARAM_RESPONSE] === static::RESPONSE_REPORTBAD_OK;
220
    }
221
}
222