Completed
Push — master ( 680248...e72f98 )
by Владислав
02:14
created

RuCaptcha::init()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 152
Code Lines 108

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
dl 0
loc 152
rs 8.2857
c 2
b 1
f 0
cc 1
eloc 108
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
    const DECODE_ACTION_UNIVERSAL = 2;
19
20
    const RESPONSE_REPORTBAD_OK = 'OK_REPORT_RECORDED';
21
22
    protected $paramsNames = [
23
        self::ACTION_FIELD_METHOD           => 'method',
24
        self::ACTION_FIELD_KEY              => 'key',
25
        self::ACTION_FIELD_FILE             => 'file',
26
        self::ACTION_FIELD_PHRASE           => 'phrase',
27
        self::ACTION_FIELD_REGSENSE         => 'regsense',
28
        self::ACTION_FIELD_NUMERIC          => 'numeric',
29
        self::ACTION_FIELD_MIN_LEN          => 'min_len',
30
        self::ACTION_FIELD_MAX_LEN          => 'max_len',
31
        self::ACTION_FIELD_LANGUAGE         => 'language',
32
        self::ACTION_FIELD_SOFT_ID          => 'soft_id',
33
        self::ACTION_FIELD_CAPTCHA_ID       => 'id',
34
        self::ACTION_FIELD_ACTION           => 'action',
35
        self::ACTION_FIELD_QUESTION         => 'question',
36
        self::ACTION_FIELD_HEADER_ACAO      => 'header_acao',
37
        self::ACTION_FIELD_TEXTINSTRUCTIONS => 'textinstructions',
38
        self::ACTION_FIELD_PINGBACK         => 'pingback',
39
    ];
40
41
    public function init()
42
    {
43
        parent::init();
44
45
        $this->actions[static::ACTION_RECOGNIZE] = [
46
            static::ACTION_URI    => 'in.php',
47
            static::ACTION_METHOD => static::ACTION_METHOD_POST,
48
            static::ACTION_FIELDS => [
49
                static::ACTION_FIELD_METHOD => [
50
                    static::PARAM_SLUG_DEFAULT => 'post',
51
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
52
                ],
53
                static::ACTION_FIELD_KEY => [
54
                    static::PARAM_SLUG_REQUIRE => true,
55
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_API_KEY,
56
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
57
                ],
58
                static::ACTION_FIELD_FILE => [
59
                    static::PARAM_SLUG_REQUIRE => true,
60
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_FILE,
61
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_MIX,
62
                ],
63
                static::ACTION_FIELD_PHRASE => [
64
                    static::PARAM_SLUG_DEFAULT => 0,
65
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
66
                ],
67
                static::ACTION_FIELD_REGSENSE => [
68
                    static::PARAM_SLUG_DEFAULT => 0,
69
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
70
                ],
71
                static::ACTION_FIELD_NUMERIC => [
72
                    static::PARAM_SLUG_DEFAULT => 0,
73
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
74
                ],
75
                static::ACTION_FIELD_MIN_LEN => [
76
                    static::PARAM_SLUG_DEFAULT => 0,
77
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
78
                ],
79
                static::ACTION_FIELD_MAX_LEN => [
80
                    static::PARAM_SLUG_DEFAULT => 0,
81
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
82
                ],
83
                static::ACTION_FIELD_LANGUAGE => [
84
                    static::PARAM_SLUG_DEFAULT => 0,
85
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
86
                ],
87
                static::ACTION_FIELD_QUESTION => [
88
                    static::PARAM_SLUG_DEFAULT => 0,
89
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
90
                ],
91
                static::ACTION_FIELD_CALC => [
92
                    static::PARAM_SLUG_DEFAULT => 0,
93
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
94
                ],
95
                static::ACTION_FIELD_HEADER_ACAO => [
96
                    static::PARAM_SLUG_DEFAULT => 0,
97
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
98
                ],
99
                static::ACTION_FIELD_TEXTINSTRUCTIONS => [
100
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
101
                ],
102
                static::ACTION_FIELD_PINGBACK => [
103
                    static::PARAM_SLUG_TYPE => static::PARAM_FIELD_TYPE_STRING,
104
                ],
105
                static::ACTION_FIELD_SOFT_ID => [
106
                    static::PARAM_SLUG_VARIABLE => false,
107
                    static::PARAM_SLUG_DEFAULT  => 882,
108
                    static::PARAM_SLUG_TYPE     => static::PARAM_FIELD_TYPE_INTEGER,
109
                ],
110
            ],
111
        ];
112
        $this->actions[static::ACTION_UNIVERSAL] = [
113
            static::ACTION_URI    => 'res.php',
114
            static::ACTION_METHOD => static::ACTION_METHOD_GET,
115
            static::ACTION_FIELDS => [
116
                static::ACTION_FIELD_KEY => [
117
                    static::PARAM_SLUG_REQUIRE => true,
118
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_API_KEY,
119
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
120
                ],
121
                static::ACTION_FIELD_ACTION => [
122
                    static::PARAM_SLUG_REQUIRE => true,
123
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
124
                ],
125
                static::ACTION_FIELD_HEADER_ACAO => [
126
                    static::PARAM_SLUG_DEFAULT => 0,
127
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
128
                ],
129
                static::ACTION_FIELD_CAPTCHA_ID => [
130
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_CAPTCHA,
131
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
132
                ],
133
            ],
134
        ];
135
        $this->actions[static::ACTION_UNIVERSAL_WITH_CAPTCHA] = [
136
            static::ACTION_URI    => 'res.php',
137
            static::ACTION_METHOD => static::ACTION_METHOD_GET,
138
            static::ACTION_FIELDS => [
139
                static::ACTION_FIELD_KEY => [
140
                    static::PARAM_SLUG_REQUIRE => true,
141
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_API_KEY,
142
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
143
                ],
144
                static::ACTION_FIELD_CAPTCHA_ID => [
145
                    static::PARAM_SLUG_REQUIRE => true,
146
                    static::PARAM_SLUG_SPEC    => static::PARAM_SPEC_CAPTCHA,
147
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
148
                ],
149
                static::ACTION_FIELD_ACTION => [
150
                    static::PARAM_SLUG_REQUIRE => true,
151
                    static::PARAM_SLUG_DEFAULT => 'get',
152
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_STRING,
153
                    static::PARAM_SLUG_VARIABLE => false,
154
                ],
155
                static::ACTION_FIELD_HEADER_ACAO => [
156
                    static::PARAM_SLUG_DEFAULT => 0,
157
                    static::PARAM_SLUG_TYPE    => static::PARAM_FIELD_TYPE_INTEGER,
158
                ],
159
            ],
160
        ];
161
162
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_RECOGNIZE] = [
163
            static::DECODE_SEPARATOR => '|',
164
            static::DECODE_PARAMS    => [
165
                static::DECODE_PARAM_RESPONSE => [
166
                    static::DECODE_PARAM_SETTING_MARKER => 0,
167
                ],
168
                static::DECODE_PARAM_CAPTCHA => [
169
                    static::DECODE_PARAM_SETTING_MARKER => 1,
170
                ],
171
            ],
172
        ];
173
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_GET] = [
174
            static::DECODE_SEPARATOR => '|',
175
            static::DECODE_PARAMS    => [
176
                static::DECODE_PARAM_RESPONSE => [
177
                    static::DECODE_PARAM_SETTING_MARKER => 0,
178
                ],
179
                static::DECODE_PARAM_CODE => [
180
                    static::DECODE_PARAM_SETTING_MARKER => 1,
181
                ],
182
            ],
183
        ];
184
        $this->decodeSettings[static::DECODE_ACTION][static::DECODE_ACTION_UNIVERSAL] = [
185
            static::DECODE_SEPARATOR => '|',
186
            static::DECODE_PARAMS    => [
187
                static::DECODE_PARAM_RESPONSE => [
188
                    static::DECODE_PARAM_SETTING_MARKER => 0,
189
                ],
190
            ],
191
        ];
192
    }
193
194 View Code Duplication
    public function getBalance()
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
195
    {
196
        $this->setParam(static::ACTION_FIELD_ACTION, 'getbalance');
197
        $response = $this->getResponse(static::ACTION_UNIVERSAL);
198
        $dataGet = $this->decodeResponse(static::DECODE_ACTION_UNIVERSAL, $response);
199
200
        return $dataGet[static::DECODE_PARAM_RESPONSE];
201
    }
202
203
    /**
204
     * Не верно распознана.
205
     */
206 View Code Duplication
    public function notTrue()
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
207
    {
208
        $this->setParam(static::ACTION_FIELD_ACTION, 'reportbad');
209
        $response = $this->getResponse(static::ACTION_UNIVERSAL);
210
        $dataGet = $this->decodeResponse(static::DECODE_ACTION_UNIVERSAL, $response);
211
212
        return $dataGet[static::DECODE_PARAM_RESPONSE] === static::RESPONSE_REPORTBAD_OK;
213
    }
214
}
215