Completed
Push — master ( c9079c...cc2bb3 )
by Владислав
02:10
created

RuCaptcha::init()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 147
Code Lines 104

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 147
rs 8.2857
cc 1
eloc 104
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace jumper423\decaptcha\services;
4
5
use jumper423\decaptcha\core\DeCaptchaBase;
6
7
/**
8
 * Распознавание капчи RuCaptcha.
9
 *
10
 * Class RuCaptcha
11
 *
12
 * @link http://infoblog1.ru/goto/rucaptcha
13
 */
14
class RuCaptcha extends DeCaptchaBase
15
{
16
    public $domain = 'rucaptcha.com';
17
18
    protected $paramsNames = [
19
        self::ACTION_FIELD_METHOD => 'method',
20
        self::ACTION_FIELD_KEY => 'key',
21
        self::ACTION_FIELD_FILE => 'file',
22
        self::ACTION_FIELD_PHRASE => 'phrase',
23
        self::ACTION_FIELD_REGSENSE => 'regsense',
24
        self::ACTION_FIELD_NUMERIC => 'numeric',
25
        self::ACTION_FIELD_MIN_LEN => 'min_len',
26
        self::ACTION_FIELD_MAX_LEN => 'max_len',
27
        self::ACTION_FIELD_LANGUAGE => 'language',
28
        self::ACTION_FIELD_SOFT_ID => 'soft_id',
29
        self::ACTION_FIELD_CAPTCHA_ID => 'id',
30
        self::ACTION_FIELD_ACTION => 'action',
31
        self::ACTION_FIELD_QUESTION => 'question',
32
        self::ACTION_FIELD_HEADER_ACAO => 'header_acao',
33
        self::ACTION_FIELD_TEXTINSTRUCTIONS => 'textinstructions',
34
        self::ACTION_FIELD_PINGBACK => 'pingback',
35
    ];
36
37
    public function init()
38
    {
39
        parent::init();
40
41
        $this->actions[static::ACTION_RECOGNIZE] = [
42
            static::ACTION_URI => 'in.php',
43
            static::ACTION_METHOD => static::ACTION_METHOD_POST,
44
            static::ACTION_FIELDS => [
45
                static::ACTION_FIELD_METHOD => [
46
                    static::PARAM_SLUG_DEFAULT => 'post',
47
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
48
                ],
49
                static::ACTION_FIELD_KEY => [
50
                    static::PARAM_SLUG_REQUIRE => true,
51
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_API_KEY,
52
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
53
                ],
54
                static::ACTION_FIELD_FILE => [
55
                    static::PARAM_SLUG_REQUIRE => true,
56
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_FILE,
57
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_MIX,
58
                ],
59
                static::ACTION_FIELD_PHRASE => [
60
                    static::PARAM_SLUG_DEFAULT => 0,
61
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
62
                ],
63
                static::ACTION_FIELD_REGSENSE => [
64
                    static::PARAM_SLUG_DEFAULT => 0,
65
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
66
                ],
67
                static::ACTION_FIELD_NUMERIC => [
68
                    static::PARAM_SLUG_DEFAULT => 0,
69
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
70
                ],
71
                static::ACTION_FIELD_MIN_LEN => [
72
                    static::PARAM_SLUG_DEFAULT => 0,
73
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
74
                ],
75
                static::ACTION_FIELD_MAX_LEN => [
76
                    static::PARAM_SLUG_DEFAULT => 0,
77
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
78
                ],
79
                static::ACTION_FIELD_LANGUAGE => [
80
                    static::PARAM_SLUG_DEFAULT => 0,
81
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
82
                ],
83
                static::ACTION_FIELD_QUESTION => [
84
                    static::PARAM_SLUG_DEFAULT => 0,
85
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
86
                ],
87
                static::ACTION_FIELD_CALC => [
88
                    static::PARAM_SLUG_DEFAULT => 0,
89
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
90
                ],
91
                static::ACTION_FIELD_HEADER_ACAO => [
92
                    static::PARAM_SLUG_DEFAULT => 0,
93
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
94
                ],
95
                static::ACTION_FIELD_TEXTINSTRUCTIONS => [
96
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
97
                ],
98
                static::ACTION_FIELD_PINGBACK => [
99
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
100
                ],
101
                static::ACTION_FIELD_SOFT_ID => [
102
                    static::PARAM_SLUG_VARIABLE => false,
103
                    static::PARAM_SLUG_DEFAULT => 882,
104
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
105
                ],
106
            ],
107
        ];
108
        $this->actions[static::ACTION_UNIVERSAL] = [
109
            static::ACTION_URI => 'res.php',
110
            static::ACTION_METHOD => static::ACTION_METHOD_GET,
111
            static::ACTION_FIELDS => [
112
                static::ACTION_FIELD_KEY => [
113
                    static::PARAM_SLUG_REQUIRE => true,
114
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_API_KEY,
115
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
116
                ],
117
                static::ACTION_FIELD_ACTION => [
118
                    static::PARAM_SLUG_REQUIRE => true,
119
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
120
                ],
121
                static::ACTION_FIELD_HEADER_ACAO => [
122
                    static::PARAM_SLUG_DEFAULT => 0,
123
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
124
                ],
125
            ],
126
        ];
127
        $this->actions[static::ACTION_UNIVERSAL] = [
128
            static::ACTION_URI => 'res.php',
129
            static::ACTION_METHOD => static::ACTION_METHOD_GET,
130
            static::ACTION_FIELDS => [
131
                static::ACTION_FIELD_KEY => [
132
                    static::PARAM_SLUG_REQUIRE => true,
133
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_API_KEY,
134
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
135
                ],
136
                static::ACTION_FIELD_CAPTCHA_ID => [
137
                    static::PARAM_SLUG_REQUIRE => true,
138
                    static::PARAM_SLUG_SPEC => static::PARAM_SPEC_CAPTCHA,
139
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
140
                ],
141
                static::ACTION_FIELD_ACTION => [
142
                    static::PARAM_SLUG_REQUIRE => true,
143
                    static::PARAM_SLUG_DEFAULT => 'get',
144
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
145
                ],
146
                static::ACTION_FIELD_HEADER_ACAO => [
147
                    static::PARAM_SLUG_DEFAULT => 0,
148
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_INTEGER,
149
                ],
150
            ],
151
        ];
152
153
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_RECOGNIZE] = [
154
            static::DECODE_SEPARATOR => '|',
155
            static::DECODE_PARAMS => [
156
                static::DECODE_PARAM_RESPONSE => [
157
                    static::DECODE_PARAM_SETTING_MARKER => 0,
158
                ],
159
                static::DECODE_PARAM_CAPTCHA => [
160
                    static::DECODE_PARAM_SETTING_MARKER => 1,
161
                ],
162
            ],
163
        ];
164
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_GET] = [
165
            static::DECODE_SEPARATOR => '|',
166
            static::DECODE_PARAMS => [
167
                static::DECODE_PARAM_RESPONSE => [
168
                    static::DECODE_PARAM_SETTING_MARKER => 0,
169
                ],
170
                static::DECODE_PARAM_CODE => [
171
                    static::DECODE_PARAM_SETTING_MARKER => 1,
172
                ],
173
            ],
174
        ];
175
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_BALANCE] = [
176
            static::DECODE_SEPARATOR => '|',
177
            static::DECODE_PARAMS => [
178
                static::DECODE_PARAM_RESPONSE => [
179
                    static::DECODE_PARAM_SETTING_MARKER => 0,
180
                ],
181
            ],
182
        ];
183
    }
184
185
    public function getBalance()
186
    {
187
        $this->setParam(static::ACTION_FIELD_ACTION, 'getbalance');
188
        $response = $this->getResponse(static::ACTION_UNIVERSAL);
189
        $dataGet = $this->decodeResponse(static::DECODE_ACTION_GET, $response);
190
191
        return $dataGet[static::DECODE_PARAM_RESPONSE];
192
    }
193
}
194