mediawiki-butt 0.11.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +28 -5
- data/lib/mediawiki/administration.rb +18 -17
- data/lib/mediawiki/auth.rb +52 -193
- data/lib/mediawiki/butt.rb +51 -32
- data/lib/mediawiki/constants.rb +127 -130
- data/lib/mediawiki/edit.rb +58 -71
- data/lib/mediawiki/exceptions.rb +2 -123
- data/lib/mediawiki/query/lists/all.rb +35 -45
- data/lib/mediawiki/query/lists/backlinks.rb +23 -34
- data/lib/mediawiki/query/lists/categories.rb +17 -28
- data/lib/mediawiki/query/lists/log/block.rb +17 -33
- data/lib/mediawiki/query/lists/log/delete.rb +8 -24
- data/lib/mediawiki/query/lists/log/import.rb +9 -24
- data/lib/mediawiki/query/lists/log/log.rb +36 -63
- data/lib/mediawiki/query/lists/log/merge.rb +5 -12
- data/lib/mediawiki/query/lists/log/move.rb +6 -20
- data/lib/mediawiki/query/lists/log/newusers.rb +13 -36
- data/lib/mediawiki/query/lists/log/patrol.rb +5 -13
- data/lib/mediawiki/query/lists/log/protect.rb +20 -50
- data/lib/mediawiki/query/lists/log/rights.rb +10 -24
- data/lib/mediawiki/query/lists/log/upload.rb +10 -24
- data/lib/mediawiki/query/lists/miscellaneous.rb +10 -19
- data/lib/mediawiki/query/lists/querypage.rb +60 -62
- data/lib/mediawiki/query/lists/recent_changes.rb +18 -30
- data/lib/mediawiki/query/lists/search.rb +14 -29
- data/lib/mediawiki/query/lists/users.rb +43 -61
- data/lib/mediawiki/query/meta/filerepoinfo.rb +18 -20
- data/lib/mediawiki/query/meta/siteinfo.rb +30 -33
- data/lib/mediawiki/query/meta/userinfo.rb +48 -66
- data/lib/mediawiki/query/properties/contributors.rb +18 -22
- data/lib/mediawiki/query/properties/files.rb +18 -20
- data/lib/mediawiki/query/properties/pages.rb +129 -211
- data/lib/mediawiki/query/properties/properties.rb +20 -25
- data/lib/mediawiki/query/query.rb +0 -25
- data/lib/mediawiki/utils.rb +9 -8
- data/lib/mediawiki/watch.rb +52 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16daad9c28f5960f5820657cf6ec6b646976b0c0
|
4
|
+
data.tar.gz: f0a165472aad7b3864507a351581abeb40be25a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d944b95cea6f5b6319db90607a117288ec244def26000ce018b2d14301cc3c11b9c1ed49d36628d39cb8e2e300cbbd47d8437770be12affb7a5526716eeebaf
|
7
|
+
data.tar.gz: 0a82a742586f999f7dcbf1055fbbda20ff6c3b22f183cd249c045b0f960be0d36741b273b09d35736ff60700326573ef5d7ae7f2177fc1700f76fd7d2bb1d329
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,27 @@
|
|
1
1
|
# Changelog
|
2
|
+
## Version 1
|
3
|
+
### Version 1.0.0
|
4
|
+
* Important: MediaWiki::Butt now depends on Ruby 2.3. If you aren't using that yet, use it. It's worth it.
|
5
|
+
* MediaWiki::Butt.new now takes two parameters, `url`, and an options hash. See the documentation for initialize for more details.
|
6
|
+
* Improvements to the way we handle query limits (#28, #31, and #37):
|
7
|
+
* `get_recent_revisions`, `get_prefix_search`, and `get_full_watchlist` now properly set their limits.
|
8
|
+
* Most query lists that took a limit parameter now use the attribute `:query_limit_default` instead of each having a set default of 500.
|
9
|
+
* New `:query_limit_default` attribute accessor. This means you can change your default limits whenever you want!
|
10
|
+
* Support using 'max' as the limit.
|
11
|
+
* Major cleanup of documentation. The YARD server at ftb-gamepedia.github.io/MediaWiki-Butt-Ruby is now the recommended place for documentation.
|
12
|
+
* Improve testing slightly.
|
13
|
+
* Remove the TIME_FORMAT constant and instead use DateTime's methods properly.
|
14
|
+
* Fix FileRepoInfo methods returning hashes with nil values instead of arrays of hashes (#34).
|
15
|
+
* Add support for the MediaWiki Watching/Unwatching APIs (#38)
|
16
|
+
* Remove the unused `:tokens` instance variable. This should silence some errors when logging in/out.
|
17
|
+
* Improve authentication methods by making them recursive. `login` and `create_account(_email)` now take an optional third parameter, token.
|
18
|
+
* Fix error in `get_categories_in_page` (APerson241)
|
19
|
+
* Error handling improvements (APerson241 and elifoster) (#32):
|
20
|
+
* New EditError that is thrown when there is an error when editing. It contains the error code.
|
21
|
+
* `edit` returns false when there is no change (error: nochange), rather than throwing an error.
|
22
|
+
* New BlockError that is thrown when there is an error when blocking/unblocking.
|
23
|
+
* Removed AuthenticationError subclasses, as well as `check_login` and `check_create`. All authentication errors now return a generic AuthenticationError with the provided error message from MediaWiki.
|
24
|
+
|
2
25
|
## Version 0
|
3
26
|
### Version 0.11.1
|
4
27
|
* Relicense under the MIT license.
|
@@ -197,7 +220,7 @@
|
|
197
220
|
* New get_general method, for getting hash of the 'general' wiki information.
|
198
221
|
* New get_extensions method, for getting an array of all extension names installed.
|
199
222
|
* New get_languages method, for getting a hash of all the languages, formatted as code => name.
|
200
|
-
* User-Agent header is now set for each post. It defaults to
|
223
|
+
* User-Agent header is now set for each post. It defaults to `NotLoggedIn/MediaWiki::Butt`, or `#{name}/MediaWiki::Butt` if logged in. This might cause some slight performance issues ([#5](https://github.com/FTB-Gamepedia/MediaWiki-Butt-Ruby/issues/5))
|
201
224
|
|
202
225
|
### Version 0.5.0
|
203
226
|
* New Administration module for administrative methods.
|
@@ -240,8 +263,8 @@
|
|
240
263
|
* New get_contrib_count method.
|
241
264
|
* Refactor get_usergroups and is_current_user_bot? to use new get_userinfo method.
|
242
265
|
* Minor refactors to make optional arguments more Ruby-like with splat arguments.
|
243
|
-
*
|
244
|
-
*
|
266
|
+
* `#edit` no longer prints the edit token, because that's stupid.
|
267
|
+
* `#edit` no longer sets the summary if it is nil.
|
245
268
|
|
246
269
|
### Version 0.2.1
|
247
270
|
* Fix gemspec. You should actually have the new stuff now.
|
@@ -259,8 +282,8 @@
|
|
259
282
|
* Got rid of pointless array in is_current_user_bot
|
260
283
|
* Potentially fixed docs
|
261
284
|
* Raise errors on unsuccessful account creation
|
262
|
-
*
|
263
|
-
*
|
285
|
+
* `#login` properly returns true if the login is successful on the first try
|
286
|
+
* `#logout` returns true/false if it logs the user out. Basically returns true if @logged_in is true, and false if not, because the logout action has no errors.
|
264
287
|
* Account creation stuff actually returns true/false on success/fail. It also handles errors now.
|
265
288
|
* Better Category title regex in get_category_members
|
266
289
|
|
@@ -1,14 +1,15 @@
|
|
1
|
+
require_relative 'exceptions'
|
2
|
+
|
1
3
|
module MediaWiki
|
2
4
|
module Administration
|
3
5
|
# Blocks the user.
|
4
|
-
# @param
|
6
|
+
# @param (see #unblock)
|
5
7
|
# @param expiry [String] The expiry timestamp using a relative expiry time.
|
6
|
-
# @param reason [String] The reason to show in the block log.
|
7
8
|
# @param nocreate [Boolean] Whether to allow them to create an account.
|
8
9
|
# @see https://www.mediawiki.org/wiki/API:Block MediaWiki Block API Docs
|
9
10
|
# @since 0.5.0
|
10
|
-
# @
|
11
|
-
# @return
|
11
|
+
# @raise [BlockError]
|
12
|
+
# @return (see #unblock)
|
12
13
|
def block(user, expiry = '2 weeks', reason = nil, nocreate = true)
|
13
14
|
params = {
|
14
15
|
action: 'block',
|
@@ -17,42 +18,42 @@ module MediaWiki
|
|
17
18
|
}
|
18
19
|
|
19
20
|
token = get_token('block')
|
20
|
-
params[:reason] = reason
|
21
|
+
params[:reason] = reason if reason
|
21
22
|
params[:nocreate] = '1' if nocreate
|
22
23
|
params[:token] = token
|
23
24
|
|
24
25
|
response = post(params)
|
25
26
|
|
26
|
-
if
|
27
|
-
|
28
|
-
else
|
29
|
-
return response['id'].to_i
|
27
|
+
if response.key?('error')
|
28
|
+
raise MediaWiki::Butt::BlockError.new(response.dig('error', 'code') || 'Unknown error code')
|
30
29
|
end
|
30
|
+
|
31
|
+
response['id'].to_i
|
31
32
|
end
|
32
33
|
|
33
34
|
# Unblocks the user.
|
34
|
-
# @param user [String] The user
|
35
|
+
# @param user [String] The user affected.
|
35
36
|
# @param reason [String] The reason to show in the block log.
|
36
37
|
# @see https://www.mediawiki.org/wiki/API:Block MediaWiki Block API Docs
|
37
38
|
# @since 0.5.0
|
38
|
-
# @
|
39
|
-
# @return [
|
39
|
+
# @raise [BlockError]
|
40
|
+
# @return [Fixnum] The block ID.
|
40
41
|
def unblock(user, reason = nil)
|
41
42
|
params = {
|
42
43
|
action: 'unblock',
|
43
44
|
user: user
|
44
45
|
}
|
45
46
|
token = get_token('unblock')
|
46
|
-
params[:reason] = reason
|
47
|
+
params[:reason] = reason if reason
|
47
48
|
params[:token] = token
|
48
49
|
|
49
50
|
response = post(params)
|
50
51
|
|
51
|
-
if
|
52
|
-
|
53
|
-
else
|
54
|
-
return response['id'].to_i
|
52
|
+
if response.key?('error')
|
53
|
+
raise MediaWiki::Butt::BlockError.new(response.dig('error', 'code') || 'Unknown error code')
|
55
54
|
end
|
55
|
+
|
56
|
+
response['id'].to_i
|
56
57
|
end
|
57
58
|
end
|
58
59
|
end
|
data/lib/mediawiki/auth.rb
CHANGED
@@ -2,153 +2,48 @@ require_relative 'exceptions'
|
|
2
2
|
|
3
3
|
module MediaWiki
|
4
4
|
module Auth
|
5
|
-
#
|
6
|
-
# else false with an error raised.
|
7
|
-
# @param result [String] The parsed version of the result.
|
8
|
-
# @param secondtry [Boolean] Whether this login is the first or second try.
|
9
|
-
# False for first, true for second.
|
10
|
-
# @raise [NeedTokenMoreThanOnceError] When secondtry is true and the wiki
|
11
|
-
# still returns 'NeedToken'
|
12
|
-
# @raise [NoNameError] When the username is nil or undefined.
|
13
|
-
# @raise [IllegalUsernameError] When the username is illegal.
|
14
|
-
# @raise [UsernameNotExistsError] When the username does not exist.
|
15
|
-
# @raise [EmptyPassError] When the password is nil or undefined.
|
16
|
-
# @raise [WrongPassError] When the password is incorrect.
|
17
|
-
# @raise [WrongPluginPassError] When an authentication plugin, not
|
18
|
-
# MediaWiki, claims that the password is incorrect.
|
19
|
-
# @raise [CreateBlockedError] When the wiki tries to automatically create
|
20
|
-
# an account, but the user's IP address is already blocked.
|
21
|
-
# @raise [ThrottledError] When the user has logged in, or tried to, too
|
22
|
-
# much in a particular amount of time.
|
23
|
-
# @raise [BlockedError] When the user is blocked from the wiki.
|
24
|
-
# @since 0.1.0
|
25
|
-
# @return [Boolean] true if successful. Does not return anything otherwise.
|
26
|
-
def check_login(result, secondtry)
|
27
|
-
case result
|
28
|
-
when 'Success'
|
29
|
-
@logged_in = true
|
30
|
-
return true
|
31
|
-
when 'NeedToken'
|
32
|
-
fail MediaWiki::Butt::NeedTokenMoreThanOnceError if secondtry
|
33
|
-
when 'NoName'
|
34
|
-
fail MediaWiki::Butt::NoNameError
|
35
|
-
when 'Illegal'
|
36
|
-
fail MediaWiki::Butt::IllegalUsernameError
|
37
|
-
when 'NotExists'
|
38
|
-
fail MediaWiki::Butt::UsernameNotExistsError
|
39
|
-
when 'EmptyPass'
|
40
|
-
fail MediaWiki::Butt::EmptyPassError
|
41
|
-
when 'WrongPass'
|
42
|
-
fail MediaWiki::Butt::WrongPassError
|
43
|
-
when 'WrongPluginPass'
|
44
|
-
fail MediaWiki::Butt::WrongPluginPassError
|
45
|
-
when 'CreateBlocked'
|
46
|
-
fail MediaWiki::Butt::CreateBlockedError
|
47
|
-
when 'Throttled'
|
48
|
-
fail MediaWiki::Butt::ThrottledError
|
49
|
-
when 'Blocked'
|
50
|
-
fail MediaWiki::Butt::BlockedError
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# Checks the account creation result's error and raises the corresponding
|
55
|
-
# exception.
|
56
|
-
# @param error [String] The parsed error code string
|
57
|
-
# @raise [NoNameError] When the username was either not provided or is
|
58
|
-
# invalid.
|
59
|
-
# @raise [UserExistsError] When the username is already in use.
|
60
|
-
# @raise [UserPassMatchError] When the username and password are identical.
|
61
|
-
# @raise [PasswordLoginForbiddenError] When the use of the username and
|
62
|
-
# password has been forbidden.
|
63
|
-
# @raise [NoEmailTitleError] When there is no provided email address.
|
64
|
-
# @raise [InvalidEmailAddressError] When the email address has an invalid
|
65
|
-
# format.
|
66
|
-
# @raise [PasswordTooShortError] When the password is shorter than the
|
67
|
-
# $wgMinimumPasswordLength option.
|
68
|
-
# @raise [NoEmailError] When there is no email address set for the user.
|
69
|
-
# @raise [ThrottledError] When the user has created too many accounts in one
|
70
|
-
# day.
|
71
|
-
# @raise [AbortedError] When an extension has aborted this action.
|
72
|
-
# @raise [BlockedError] When the IP or logged in user is blocked.
|
73
|
-
# @raise [PermDeniedError] When the user does not have the right to create
|
74
|
-
# accounts.
|
75
|
-
# @raise [HookAbortedError] Same as AbortedError.
|
76
|
-
# @since 0.1.1
|
77
|
-
# @return [void]
|
78
|
-
def check_create(error)
|
79
|
-
case error
|
80
|
-
when 'noname'
|
81
|
-
fail MediaWiki::Butt::NoNameError
|
82
|
-
when 'userexists'
|
83
|
-
fail MediaWiki::Butt::UserExistsError
|
84
|
-
when 'password-name-match'
|
85
|
-
fail MediaWiki::Butt::UserPassMatchError
|
86
|
-
when 'password-login-forbidden'
|
87
|
-
fail MediaWiki::Butt::PasswordLoginForbiddenError
|
88
|
-
when 'noemailtitle'
|
89
|
-
fail MediaWiki::Butt::NoEmailTitleError
|
90
|
-
when 'invalidemailaddress'
|
91
|
-
fail MediaWiki::Butt::InvalidEmailAddressError
|
92
|
-
when 'passwordtooshort'
|
93
|
-
fail MediaWiki::Butt::PasswordTooShortError
|
94
|
-
when 'noemail'
|
95
|
-
fail MediaWiki::Butt::NoEmailError
|
96
|
-
when 'acct_creation_throttle_hit'
|
97
|
-
fail MediaWiki::Butt::ThrottledError
|
98
|
-
when 'aborted'
|
99
|
-
fail MediaWiki::Butt::AbortedError
|
100
|
-
when 'blocked'
|
101
|
-
fail MediaWiki::Butt::BlockedError
|
102
|
-
when 'permdenied-createaccount'
|
103
|
-
fail MediaWiki::Butt::PermDeniedError
|
104
|
-
when 'createaccount-hook-aborted'
|
105
|
-
fail MediaWiki::Butt::HookAbortedError
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
# Logs the user into the wiki. This is generally required for editing and
|
110
|
-
# getting restricted data. Will return the result of #check_login
|
5
|
+
# Logs the user into the wiki. This is generally required for editing and getting restricted data.
|
111
6
|
# @param username [String] The username
|
112
7
|
# @param password [String] The password
|
113
|
-
# @
|
8
|
+
# @param token [String] The login token to use. Only set this if you know what you are doing. You probably want
|
9
|
+
# to just let the function get the token and set it on its own.
|
10
|
+
# @see #check_login
|
114
11
|
# @see https://www.mediawiki.org/wiki/API:Login MediaWiki Login API Docs
|
115
12
|
# @since 0.1.0
|
116
|
-
# @
|
117
|
-
|
13
|
+
# @raise [AuthenticationError]
|
14
|
+
# @return [Boolean] True if the login was successful.
|
15
|
+
def login(username, password, token = nil)
|
118
16
|
params = {
|
119
17
|
action: 'login',
|
120
18
|
lgname: username,
|
121
19
|
lgpassword: password
|
122
20
|
}
|
21
|
+
params[:lgtoken] = token if token
|
22
|
+
header = {}
|
23
|
+
header['Set-Cookie'] = @cookie if @cookie
|
123
24
|
|
124
|
-
|
125
|
-
|
126
|
-
@logged_in = true
|
127
|
-
@tokens.clear
|
128
|
-
true
|
129
|
-
elsif result['login']['result'] == 'NeedToken' &&
|
130
|
-
!result['login']['token'].nil?
|
131
|
-
token = result['login']['token']
|
132
|
-
token_params = {
|
133
|
-
action: 'login',
|
134
|
-
lgname: username,
|
135
|
-
lgpassword: password,
|
136
|
-
lgtoken: token
|
137
|
-
}
|
25
|
+
response = post(params, true, header)
|
26
|
+
result = response['login']['result']
|
138
27
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
result = post(token_params, true, 'Set-Cookie' => @cookie)
|
143
|
-
@name = username if check_login(result['login']['result'], true)
|
28
|
+
if result == 'NeedToken'
|
29
|
+
token = response['login']['token']
|
30
|
+
return login(username, password, token)
|
144
31
|
end
|
32
|
+
|
33
|
+
if result == 'Success'
|
34
|
+
@cookie = "#{response['login']['cookieprefix']}Session=#{response['login']['sessionid']}"
|
35
|
+
@name = username
|
36
|
+
@logged_in = true
|
37
|
+
return true
|
38
|
+
end
|
39
|
+
|
40
|
+
raise MediaWiki::Butt::AuthenticationError.new(result)
|
145
41
|
end
|
146
42
|
|
147
43
|
# Logs the current user out.
|
148
44
|
# @see https://www.mediawiki.org/wiki/API:Logout MediaWiki Logout API Docs
|
149
45
|
# @since 0.1.0
|
150
|
-
# @return [Boolean] True if it was able to log anyone out, false if not
|
151
|
-
# (basically, if someone was logged in, it returns true).
|
46
|
+
# @return [Boolean] True if it was able to log anyone out, false if not.
|
152
47
|
def logout
|
153
48
|
if @logged_in
|
154
49
|
params = {
|
@@ -157,117 +52,81 @@ module MediaWiki
|
|
157
52
|
|
158
53
|
post(params)
|
159
54
|
@logged_in = false
|
160
|
-
|
161
|
-
|
55
|
+
|
56
|
+
true
|
162
57
|
else
|
163
|
-
|
58
|
+
false
|
164
59
|
end
|
165
60
|
end
|
166
61
|
|
167
62
|
# Creates an account using the standard procedure.
|
168
63
|
# @param username [String] The desired username.
|
169
64
|
# @param password [String] The desired password.
|
170
|
-
# @param language [String] The language code to be set as default for the
|
171
|
-
#
|
172
|
-
#
|
173
|
-
# @param
|
174
|
-
#
|
175
|
-
# @see check_create
|
176
|
-
# @see https://www.mediawiki.org/wiki/API:Account_creation MediaWiki Account
|
177
|
-
# Creation Docs
|
65
|
+
# @param language [String] The language code to be set as default for the account. Defaults to 'en', or English.
|
66
|
+
# Use the language code, not the name.
|
67
|
+
# @param reason [String] The reason for creating the account, as shown in the account creation log. Optional.
|
68
|
+
# @param token [String] The account creation token to use. Only set this if you know what you are doing. You
|
69
|
+
# probably want to just let the function get the token and set it on its own.
|
70
|
+
# @see #check_create
|
71
|
+
# @see https://www.mediawiki.org/wiki/API:Account_creation MediaWiki Account Creation Docs
|
178
72
|
# @since 0.1.0
|
179
73
|
# @return [Boolean] True if successful, false if not.
|
180
|
-
def create_account(username, password, language = 'en', reason = nil)
|
74
|
+
def create_account(username, password, language = 'en', reason = nil, token = '')
|
181
75
|
params = {
|
182
76
|
name: username,
|
183
77
|
password: password,
|
184
78
|
language: language,
|
185
|
-
token:
|
79
|
+
token: token
|
186
80
|
}
|
187
81
|
params[:reason] = reason unless reason.nil?
|
188
82
|
|
189
83
|
result = post(params)
|
190
84
|
unless result['error'].nil?
|
191
|
-
|
192
|
-
return false
|
85
|
+
raise MediaWiki::Butt::AuthenticationError.new(result['error']['code'])
|
193
86
|
end
|
194
87
|
|
195
88
|
if result['createaccount']['result'] == 'Success'
|
196
89
|
@tokens.clear
|
90
|
+
|
197
91
|
return true
|
198
92
|
elsif result['createaccount']['result'] == 'NeedToken'
|
199
|
-
|
200
|
-
name: username,
|
201
|
-
password: password,
|
202
|
-
reason: reason,
|
203
|
-
language: language,
|
204
|
-
token: result['createaccount']['token']
|
205
|
-
}
|
206
|
-
|
207
|
-
result = post(params, true, true)
|
208
|
-
if !result['error'].nil?
|
209
|
-
check_create(result['error']['code'])
|
210
|
-
return false
|
211
|
-
elsif result['createaccount']['result'] == 'Success'
|
212
|
-
return true
|
213
|
-
else
|
214
|
-
return false
|
215
|
-
end
|
93
|
+
return create_account(username, password, language, reason, result['createaccount']['token'])
|
216
94
|
end
|
95
|
+
|
96
|
+
false
|
217
97
|
end
|
218
98
|
|
219
99
|
# Creates an account using the random password sent by email procedure.
|
220
|
-
# @param username [String] The desired username
|
221
100
|
# @param email [String] The desired email address
|
222
|
-
# @param
|
223
|
-
#
|
224
|
-
#
|
225
|
-
# @param reason [String] The reason for creating the account, as shown in
|
226
|
-
# the account creation log. Optional.
|
227
|
-
# @see check_create
|
228
|
-
# @see https://www.mediawiki.org/wiki/API:Account_creation MediaWiki Account
|
229
|
-
# Creation Docs
|
101
|
+
# @param (see #create_account)
|
102
|
+
# @see #check_create
|
103
|
+
# @see https://www.mediawiki.org/wiki/API:Account_creation MediaWiki Account Creation Docs
|
230
104
|
# @since 0.1.0
|
231
105
|
# @return [Boolean] True if successful, false if not.
|
232
|
-
def create_account_email(username, email, language = 'en', reason = nil)
|
106
|
+
def create_account_email(username, email, language = 'en', reason = nil, token = '')
|
233
107
|
params = {
|
234
108
|
name: username,
|
235
109
|
email: email,
|
236
110
|
mailpassword: 'value',
|
237
111
|
language: language,
|
238
|
-
token:
|
112
|
+
token: token
|
239
113
|
}
|
240
114
|
params[:reason] = reason unless reason.nil?
|
241
115
|
|
242
116
|
result = post(params)
|
243
117
|
unless result['error'].nil?
|
244
|
-
|
245
|
-
return false
|
118
|
+
raise MediaWiki::Butt::AuthenticationError.new(result['error']['code'])
|
246
119
|
end
|
247
120
|
|
248
121
|
if result['createaccount']['result'] == 'Success'
|
249
122
|
@tokens.clear
|
123
|
+
|
250
124
|
return true
|
251
125
|
elsif result['createaccount']['result'] == 'NeedToken'
|
252
|
-
|
253
|
-
name: username,
|
254
|
-
email: email,
|
255
|
-
mailpassword: 'value',
|
256
|
-
reason: reason,
|
257
|
-
language: language,
|
258
|
-
token: result['createaccount']['token']
|
259
|
-
}
|
260
|
-
|
261
|
-
result = post(params, true, true)
|
262
|
-
if !result['error'].nil?
|
263
|
-
check_create(result['error']['code'])
|
264
|
-
return false
|
265
|
-
elsif result['createaccount']['result'] == 'Success'
|
266
|
-
return true
|
267
|
-
else
|
268
|
-
return false
|
269
|
-
end
|
126
|
+
return create_account_email(username, email, language, reason, result['createaccount']['token'])
|
270
127
|
end
|
128
|
+
|
129
|
+
false
|
271
130
|
end
|
272
131
|
end
|
273
132
|
end
|