mediawiki-butt 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +40 -0
- data/lib/mediawiki/auth.rb +3 -15
- data/lib/mediawiki/butt.rb +9 -4
- data/lib/mediawiki/edit.rb +16 -9
- data/lib/mediawiki/query.rb +374 -26
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e97e8c9e254cb0248cb26d98b459c20358559351
|
4
|
+
data.tar.gz: 37596137417cd8e6ddadf842a867ee3034f3c898
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9478f34c90244e78b979521da4f3867a92f9c77cdbe7f326aa92323f1739467d9ed87adb5c722a3e64f6d583eb975365de02fd9de501be6ebca4896deae5e264
|
7
|
+
data.tar.gz: 5056fa282df5d7581c4a82bd77572abb2d69d49c016960f94dc551cecd1f8d0d18abae5ccacdcaa5529f83ede9880b13a1b107404692352092f611807bc62dc1
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,45 @@
|
|
1
1
|
# Changelog
|
2
2
|
## Version 0
|
3
|
+
### Version 0.6.0
|
4
|
+
* Slightly expanded Gem description.
|
5
|
+
* Finished all Meta modules and their methods, except for the allmessages meta query. [#6](https://github.com/ftb-gamepedia/mediawiki-butt-ruby/issues/6)
|
6
|
+
* New get_variables method.
|
7
|
+
* New get_function_hooks method.
|
8
|
+
* New get_extension_tags method.
|
9
|
+
* New get_skins method.
|
10
|
+
* New get_restriction_levels method.
|
11
|
+
* New get_restriction_types method.
|
12
|
+
* New get_restrictions_data method for the above methods.
|
13
|
+
* New get_allowed_file_extensions method, and refactored #upload to only allow files with those extensions.
|
14
|
+
* New get_all_usergroups method.
|
15
|
+
* New get_magic_words method.
|
16
|
+
* New get_special_page_aliases method.
|
17
|
+
* New get_namespace_aliases method.
|
18
|
+
* New get_namespaces method.
|
19
|
+
* New get_filerepo_favicons method.
|
20
|
+
* New get_filerepo_thumburls method.
|
21
|
+
* New get_nonlocal_filerepos method.
|
22
|
+
* New get_local_filerepos method.
|
23
|
+
* New get_filerepo_urls method.
|
24
|
+
* New get_filerepo_rooturls method.
|
25
|
+
* Refactor get_filerepo_names to use new get_filerepoinfo method.
|
26
|
+
* New get_filerepoinfo method, in a similar style to get_userlists.
|
27
|
+
* New get_current_user_options for getting a hash containing all of the currently logged in user's preferences.
|
28
|
+
* New get_email_address method for getting the currently logged in user's email address.
|
29
|
+
* New get_realname method for getting the currently logged in user's real name.
|
30
|
+
* New get_changeable_groups method for getting the currently logged in user's groups that they can change (add/remove people from)
|
31
|
+
* New current_user_hasmsg? method for checking if the user has any unread messages.
|
32
|
+
* check_login no longer returns false, ever, because any code after a fail is unreachable.
|
33
|
+
* prop parameter in get_current_user_meta is now optional, for get_current_user_name.
|
34
|
+
* New get_current_user_name method, for something fairly obvious.
|
35
|
+
* New get_siteinfo method, in a similar style to get_userlists.
|
36
|
+
* New get_statistics method, for getting a hash of the wiki's statistics.
|
37
|
+
* New get_general method, for getting hash of the 'general' wiki information.
|
38
|
+
* New get_extensions method, for getting an array of all extension names installed.
|
39
|
+
* New get_languages method, for getting a hash of all the languages, formatted as code => name.
|
40
|
+
* 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))
|
41
|
+
|
42
|
+
|
3
43
|
### Version 0.5.0
|
4
44
|
* New Administration module for administrative methods.
|
5
45
|
* New block and unblock methods, for (un)blocking users.
|
data/lib/mediawiki/auth.rb
CHANGED
@@ -7,44 +7,32 @@ module MediaWiki
|
|
7
7
|
# @param result [String] The parsed version of the result.
|
8
8
|
# @param secondtry [Boolean] Whether this login is the first or second try.
|
9
9
|
# False for first, true for second.
|
10
|
-
# @return [Boolean] true if successful
|
10
|
+
# @return [Boolean] true if successful. Does not return anything if not.
|
11
11
|
def check_login(result, secondtry)
|
12
12
|
case result
|
13
13
|
when 'Success'
|
14
14
|
@logged_in = true
|
15
15
|
return true
|
16
16
|
when 'NeedToken'
|
17
|
-
if secondtry == true
|
18
|
-
fail MediaWiki::Butt::NeedTokenMoreThanOnceError
|
19
|
-
return false
|
20
|
-
end
|
17
|
+
fail MediaWiki::Butt::NeedTokenMoreThanOnceError if secondtry == true
|
21
18
|
when 'NoName'
|
22
19
|
fail MediaWiki::Butt::NoNameError
|
23
|
-
return false
|
24
20
|
when 'Illegal'
|
25
21
|
fail MediaWiki::Butt::IllegalUsernameError
|
26
|
-
return false
|
27
22
|
when 'NotExists'
|
28
23
|
fail MediaWiki::Butt::UsernameNotExistsError
|
29
|
-
return false
|
30
24
|
when 'EmptyPass'
|
31
25
|
fail MediaWiki::Butt::EmptyPassError
|
32
|
-
return false
|
33
26
|
when 'WrongPass'
|
34
27
|
fail MediaWiki::Butt::WrongPassError
|
35
|
-
return false
|
36
28
|
when 'WrongPluginPass'
|
37
29
|
fail MediaWiki::Butt::WrongPluginPassError
|
38
|
-
return false
|
39
30
|
when 'CreateBlocked'
|
40
31
|
fail MediaWiki::Butt::CreateBlockedError
|
41
|
-
return false
|
42
32
|
when 'Throttled'
|
43
33
|
fail MediaWiki::Butt::ThrottledError
|
44
|
-
return false
|
45
34
|
when 'Blocked'
|
46
35
|
fail MediaWiki::Butt::BlockedError
|
47
|
-
return false
|
48
36
|
end
|
49
37
|
end
|
50
38
|
|
@@ -113,7 +101,7 @@ module MediaWiki
|
|
113
101
|
@cookie = "#{result['login']['cookieprefix']}" \
|
114
102
|
"Session=#{result['login']['sessionid']}"
|
115
103
|
result = post(token_params, true, 'Set-Cookie' => @cookie)
|
116
|
-
check_login(result['login']['result'], true)
|
104
|
+
@name = username if check_login(result['login']['result'], true)
|
117
105
|
end
|
118
106
|
end
|
119
107
|
|
data/lib/mediawiki/butt.rb
CHANGED
@@ -9,7 +9,9 @@ require 'json'
|
|
9
9
|
module MediaWiki
|
10
10
|
class Butt
|
11
11
|
include MediaWiki::Auth
|
12
|
-
include MediaWiki::Query::Meta
|
12
|
+
include MediaWiki::Query::Meta::SiteInfo
|
13
|
+
include MediaWiki::Query::Meta::FileRepoInfo
|
14
|
+
include MediaWiki::Query::Meta::UserInfo
|
13
15
|
include MediaWiki::Query::Properties
|
14
16
|
include MediaWiki::Query::Lists
|
15
17
|
include MediaWiki::Constants::Namespaces
|
@@ -52,13 +54,16 @@ module MediaWiki
|
|
52
54
|
# until there is a fix in the gem.
|
53
55
|
|
54
56
|
params[:format] = 'json'
|
57
|
+
header = {} if header.nil?
|
55
58
|
|
56
|
-
if
|
57
|
-
|
59
|
+
if @logged_in == false
|
60
|
+
header['User-Agent'] = 'NotLoggedIn/MediaWiki::Butt'
|
58
61
|
else
|
59
|
-
|
62
|
+
header['User-Agent'] = "#{@name}/MediaWiki::Butt"
|
60
63
|
end
|
61
64
|
|
65
|
+
res = @client.post(@uri, params, header)
|
66
|
+
|
62
67
|
if autoparse
|
63
68
|
return JSON.parse(res.body)
|
64
69
|
else
|
data/lib/mediawiki/edit.rb
CHANGED
@@ -73,7 +73,7 @@ module MediaWiki
|
|
73
73
|
# through regex. Optional. If ommitted, it will be everything after
|
74
74
|
# the last slash in the URL.
|
75
75
|
# @return [Boolean/String] true if the upload was successful, else the
|
76
|
-
# warning's key.
|
76
|
+
# warning's key. Returns false if the file extension is not valid.
|
77
77
|
def upload(url, *filename)
|
78
78
|
params = {
|
79
79
|
action: 'upload',
|
@@ -87,15 +87,22 @@ module MediaWiki
|
|
87
87
|
filename = url.split('/')[-1]
|
88
88
|
end
|
89
89
|
|
90
|
-
|
91
|
-
|
92
|
-
|
90
|
+
ext = filename.split('.')[-1]
|
91
|
+
allowed_extensions = get_allowed_file_extensions
|
92
|
+
if allowed_extensions.include? ext
|
93
93
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
94
|
+
token = get_token('edit', filename)
|
95
|
+
params[:filename] = filename
|
96
|
+
params[:token] = token
|
97
|
+
|
98
|
+
response = post(params)
|
99
|
+
if response['upload']['result'] == 'Success'
|
100
|
+
return true
|
101
|
+
elsif response['upload']['result'] == 'Warning'
|
102
|
+
return response['upload']['warnings'].keys[0]
|
103
|
+
end
|
104
|
+
else
|
105
|
+
return false
|
99
106
|
end
|
100
107
|
end
|
101
108
|
|
data/lib/mediawiki/query.rb
CHANGED
@@ -3,41 +3,389 @@ require_relative 'constants'
|
|
3
3
|
|
4
4
|
module MediaWiki
|
5
5
|
module Query
|
6
|
-
# TODO: Actually decide on a good way to deal with meta information queries.
|
7
|
-
# The metainformation could probably be handled in a much less verbose
|
8
|
-
# way. Perhaps we should get hashes instead?
|
9
6
|
module Meta
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
7
|
+
module SiteInfo
|
8
|
+
# Gets wiki information. This method should rarely be used by
|
9
|
+
# normal users.
|
10
|
+
# @param prop [String] The siprop parameter.
|
11
|
+
# @return [Response] Parsed full response.
|
12
|
+
def get_siteinfo(prop)
|
13
|
+
params = {
|
14
|
+
action: 'query',
|
15
|
+
meta: 'siteinfo',
|
16
|
+
siprop: prop
|
17
|
+
}
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
result['query']['repos'].each { |repo| ret.push(repo['name']) }
|
19
|
+
post(params)
|
20
|
+
end
|
22
21
|
|
23
|
-
|
22
|
+
# Gets the statistics for the wiki.
|
23
|
+
# @return [Hash] The statistics and their according values.
|
24
|
+
def get_statistics
|
25
|
+
response = get_siteinfo('statistics')
|
26
|
+
ret = {}
|
27
|
+
response['query']['statistics'].each { |k, v| ret[k] = v }
|
28
|
+
ret
|
29
|
+
end
|
30
|
+
|
31
|
+
# Gets the general information for the wiki.
|
32
|
+
# @return [Hash] The general info and their according values.
|
33
|
+
def get_general
|
34
|
+
response = get_siteinfo('general')
|
35
|
+
ret = {}
|
36
|
+
response['query']['general'].each { |k, v| ret[k] = v }
|
37
|
+
ret
|
38
|
+
end
|
39
|
+
|
40
|
+
# Gets all extensions installed on the wiki.
|
41
|
+
# @return [Array] All extension names.
|
42
|
+
def get_extensions
|
43
|
+
response = get_siteinfo('extensions')
|
44
|
+
ret = []
|
45
|
+
response['query']['extensions'].each { |e| ret.push(e['name']) }
|
46
|
+
ret
|
47
|
+
end
|
48
|
+
|
49
|
+
# Gets all languages and their codes.
|
50
|
+
# @return [Hash] All languages. Hash key value pair formatted as
|
51
|
+
# code => name.
|
52
|
+
def get_languages
|
53
|
+
response = get_siteinfo('languages')
|
54
|
+
ret = {}
|
55
|
+
response['query']['languages'].each { |l| ret[l['code']] = l['*'] }
|
56
|
+
ret
|
57
|
+
end
|
58
|
+
|
59
|
+
# Gets all namespaces on the wiki and their IDs. Different from the
|
60
|
+
# Namespaces module.
|
61
|
+
# @return [Hash] All namespaces, formatted as ID => Name.
|
62
|
+
def get_namespaces
|
63
|
+
response = get_siteinfo('namespaces')
|
64
|
+
ret = {}
|
65
|
+
response['query']['namespaces'].each do |id, hash|
|
66
|
+
idid = response['query']['namespaces'][id]['id']
|
67
|
+
name = response['query']['namespaces'][id]['*']
|
68
|
+
ret[idid] = name
|
69
|
+
end
|
70
|
+
ret
|
71
|
+
end
|
72
|
+
|
73
|
+
# Gets all namespace aliases and their IDs.
|
74
|
+
# @return [Hash] All aliases, formatted as ID => Alias.
|
75
|
+
def get_namespace_aliases
|
76
|
+
response = get_siteinfo('namespacealiases')
|
77
|
+
ret = {}
|
78
|
+
response['query']['namespacealiases'].each do |a|
|
79
|
+
ret[i['id']] = i['*']
|
80
|
+
end
|
81
|
+
ret
|
82
|
+
end
|
83
|
+
|
84
|
+
# Gets all special page aliases.
|
85
|
+
# @return [Hash] All aliases, formatted as RealName => Alias.
|
86
|
+
def get_special_page_aliases
|
87
|
+
response = get_siteinfo('specialpagealiases')
|
88
|
+
ret = {}
|
89
|
+
response['query']['specialpagealiases'].each do |a|
|
90
|
+
ret[i['realname']] = i['aliases']
|
91
|
+
end
|
92
|
+
ret
|
93
|
+
end
|
94
|
+
|
95
|
+
# Gets all magic words and their aliases.
|
96
|
+
# @return [Hash] All magic words, formatted as Name => Alias.
|
97
|
+
def get_magic_words
|
98
|
+
response = get_siteinfo('magicwords')
|
99
|
+
ret = {}
|
100
|
+
response['query']['magicwords'].each do |w|
|
101
|
+
ret[w['name']] = w['aliases']
|
102
|
+
end
|
103
|
+
ret
|
104
|
+
end
|
105
|
+
|
106
|
+
# Gets all user groups total.
|
107
|
+
# @return [Hash] All groups, formatted as Name => [Rights].
|
108
|
+
def get_all_usergroups
|
109
|
+
response = get_siteinfo('usergroups')
|
110
|
+
ret = {}
|
111
|
+
response['query']['usergroups'].each do |g|
|
112
|
+
ret[g['name']] = g['rights']
|
113
|
+
end
|
114
|
+
ret
|
115
|
+
end
|
116
|
+
|
117
|
+
# Gets all file extensions that are allowed to be uploaded.
|
118
|
+
# @return [Array] All file extensions.
|
119
|
+
def get_allowed_file_extensions
|
120
|
+
response = get_siteinfo('fileextensions')
|
121
|
+
ret = []
|
122
|
+
response['query']['fileextensions'].each do |e|
|
123
|
+
ret.push(e['ext'])
|
124
|
+
end
|
125
|
+
ret
|
126
|
+
end
|
127
|
+
|
128
|
+
# Gets the response for the restrictions siteinfo API. Not really for
|
129
|
+
# use by users, mostly for the other two restriction methods.
|
130
|
+
def get_restrictions_data
|
131
|
+
response = get_siteinfo('restrictions')
|
132
|
+
return response['query']['restrictions']
|
133
|
+
end
|
134
|
+
|
135
|
+
# Gets all restriction/protection types.
|
136
|
+
# @return [Array] All protection types.
|
137
|
+
def get_restriction_types
|
138
|
+
restrictions = get_restrictions_data
|
139
|
+
ret = []
|
140
|
+
restrictions['types'].each { |t| ret.push(t) }
|
141
|
+
ret
|
142
|
+
end
|
143
|
+
|
144
|
+
# Gets all restriction/protection levels.
|
145
|
+
# @return [Array] All protection levels.
|
146
|
+
def get_restriction_levels
|
147
|
+
restrictions = get_restrictions_data
|
148
|
+
ret = []
|
149
|
+
restrictions['levels'].each { |l| ret.push(l) }
|
150
|
+
ret
|
151
|
+
end
|
152
|
+
|
153
|
+
# Gets all skins and their codes.
|
154
|
+
# @return [Hash] All skins, formatted as Code => Name
|
155
|
+
def get_skins
|
156
|
+
response = get_siteinfo('skins')
|
157
|
+
ret = {}
|
158
|
+
response['query']['skins'].each do |s|
|
159
|
+
ret[s['code']] = s['*']
|
160
|
+
end
|
161
|
+
ret
|
162
|
+
end
|
163
|
+
|
164
|
+
# Gets all HTML tags added by installed extensions.
|
165
|
+
# @return [Array] All extension tags.
|
166
|
+
def get_extension_tags
|
167
|
+
response = get_siteinfo('extensiontags')
|
168
|
+
ret = []
|
169
|
+
response['query']['extensiontags'].each do |t|
|
170
|
+
ret.push(t)
|
171
|
+
end
|
172
|
+
ret
|
173
|
+
end
|
174
|
+
|
175
|
+
# Gets all function hooks.
|
176
|
+
# @return [Array] All function hooks.
|
177
|
+
def get_function_hooks
|
178
|
+
response = get_siteinfo('functionhooks')
|
179
|
+
ret = []
|
180
|
+
response['query']['functionhooks'].each do |h|
|
181
|
+
ret.push(h)
|
182
|
+
end
|
183
|
+
ret
|
184
|
+
end
|
185
|
+
|
186
|
+
# Gets all variables that are usable on the wiki, such as NUMBEROFPAGES.
|
187
|
+
# @return [Array] All variable string values.
|
188
|
+
def get_variables
|
189
|
+
response = get_siteinfo('variables')
|
190
|
+
ret = []
|
191
|
+
response['query']['variables'].each do |v|
|
192
|
+
ret.push(v)
|
193
|
+
end
|
194
|
+
ret
|
195
|
+
end
|
24
196
|
end
|
25
197
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
if @logged_in
|
198
|
+
module FileRepoInfo
|
199
|
+
# Gets FileRepoInfo for the property.
|
200
|
+
# @param prop [String] The friprop to get.
|
201
|
+
# @return [Response] The full parsed response.
|
202
|
+
def get_filerepoinfo(prop)
|
32
203
|
params = {
|
33
204
|
action: 'query',
|
34
|
-
meta: '
|
35
|
-
|
205
|
+
meta: 'filerepoinfo',
|
206
|
+
friprop: prop
|
36
207
|
}
|
37
208
|
|
38
|
-
|
39
|
-
|
40
|
-
|
209
|
+
post(params)
|
210
|
+
end
|
211
|
+
|
212
|
+
# Returns an array of all the wiki's file repository names.
|
213
|
+
# @return [Array] All wiki's file repository names.
|
214
|
+
def get_filerepo_names
|
215
|
+
response = get_filerepoinfo('name|displayname')
|
216
|
+
ret = {}
|
217
|
+
response['query']['repos'].each { |n, dn| ret[n] = dn }
|
218
|
+
ret
|
219
|
+
end
|
220
|
+
|
221
|
+
# Gets the root URLs for the file repositories.
|
222
|
+
# @return [Hash] A hash containing keys of the names, and values of the
|
223
|
+
# root URLs.
|
224
|
+
def get_filerepo_rooturls
|
225
|
+
response = get_filerepoinfo('name|rootUrl')
|
226
|
+
ret = {}
|
227
|
+
response['query']['repos'].each { |n, r| ret[n] = r }
|
228
|
+
ret
|
229
|
+
end
|
230
|
+
|
231
|
+
# Gets an array containing all local repositories.
|
232
|
+
# @return [Array] All repositories that are marked as local.
|
233
|
+
def get_local_filerepos
|
234
|
+
response = get_filerepoinfo('name|local')
|
235
|
+
ret = []
|
236
|
+
response['query']['repos'].each do |n, l|
|
237
|
+
ret.push(n) if l == 'true'
|
238
|
+
end
|
239
|
+
|
240
|
+
ret
|
241
|
+
end
|
242
|
+
|
243
|
+
# Gets an array containing all repositories that aren't local.
|
244
|
+
# @return [Array] All repositories that are not marked as local.
|
245
|
+
def get_nonlocal_filerepos
|
246
|
+
response = get_filerepoinfo('name|local')
|
247
|
+
ret = []
|
248
|
+
response['query']['repos'].each do |n, l|
|
249
|
+
ret.push(n) if l == 'false'
|
250
|
+
end
|
251
|
+
|
252
|
+
ret
|
253
|
+
end
|
254
|
+
|
255
|
+
# Gets the repository names and their according URLs.
|
256
|
+
# @return [Hash] Names as the keys, with their URLs as the values.
|
257
|
+
def get_filerepo_urls
|
258
|
+
response = get_filerepoinfo('name|url')
|
259
|
+
ret = {}
|
260
|
+
response['query']['repos'].each { |n, u| ret[n] = u }
|
261
|
+
ret
|
262
|
+
end
|
263
|
+
|
264
|
+
# Gets the repository names and their accoring thumbnail URLs.
|
265
|
+
# @return [Hash] Names as the keys, with their URLs as the values.
|
266
|
+
def get_filerepo_thumburls
|
267
|
+
response = get_filerepoinfo('name|thumbUrl')
|
268
|
+
ret = {}
|
269
|
+
response['query']['repos'].each { |n, u| ret[n] = u }
|
270
|
+
ret
|
271
|
+
end
|
272
|
+
|
273
|
+
# Gets the repository names and their according favicon URLs.
|
274
|
+
# @return [Hash] Names as the keys, with their favicons as the values.
|
275
|
+
def get_filerepo_favicons
|
276
|
+
response = get_filerepoinfo('name|favicon')
|
277
|
+
ret = {}
|
278
|
+
response['query']['repos'].each { |n, f| ret[n] = f }
|
279
|
+
ret
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
283
|
+
module UserInfo
|
284
|
+
# Gets meta information for the currently logged in user.
|
285
|
+
# @param prop [String] The uiprop to get. Optional.
|
286
|
+
# @return [Response/Boolean] Either a full, parsed response, or false if
|
287
|
+
# not logged in.
|
288
|
+
def get_current_user_meta(prop = nil)
|
289
|
+
if @logged_in
|
290
|
+
params = {
|
291
|
+
action: 'query',
|
292
|
+
meta: 'userinfo',
|
293
|
+
uiprop: prop
|
294
|
+
}
|
295
|
+
|
296
|
+
post(params)
|
297
|
+
else
|
298
|
+
return false
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
# Gets the current user's username.
|
303
|
+
# @return [String/Boolean] Returns the username, or false.
|
304
|
+
def get_current_user_name
|
305
|
+
if !@name.nil?
|
306
|
+
return @name
|
307
|
+
else
|
308
|
+
name = get_current_user_meta
|
309
|
+
if name != false
|
310
|
+
name = name['query']['userinfo']['name']
|
311
|
+
end
|
312
|
+
|
313
|
+
name
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
# Returns whether or not the currently logged in user has any unread
|
318
|
+
# messages on their talk page.
|
319
|
+
# @return [Boolean] True if they have unreads, else false.
|
320
|
+
def current_user_hasmsg?
|
321
|
+
response = get_current_user_meta('hasmsg')
|
322
|
+
if response != false
|
323
|
+
if !response['query']['userinfo']['messages'] == ''
|
324
|
+
return false
|
325
|
+
else
|
326
|
+
return true
|
327
|
+
end
|
328
|
+
else
|
329
|
+
return false
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
# Gets a hash-of-arrays containing all the groups the user can add and
|
334
|
+
# remove people from.
|
335
|
+
# @return [Boolean/Hash] False if get_current_user_meta is false, else
|
336
|
+
# a hash containing arrays of all the groups the user can add/remove
|
337
|
+
# people from.
|
338
|
+
def get_changeable_groups
|
339
|
+
response = get_current_user_meta('changeablegroups')
|
340
|
+
if response != false
|
341
|
+
ret = {}
|
342
|
+
add = []
|
343
|
+
remove = []
|
344
|
+
addself = []
|
345
|
+
removeself = []
|
346
|
+
changeablegroups = response['query']['userinfo']['changeablegroups']
|
347
|
+
puts changeablegroups
|
348
|
+
changeablegroups['add'].each { |g| puts g; add.push(g) }
|
349
|
+
changeablegroups['remove'].each { |g| puts g; remove.push(g) }
|
350
|
+
changeablegroups['add-self'].each { |g| puts g; addself.push(g) }
|
351
|
+
changeablegroups['remove-self'].each { |g| puts g; removeself.push(g) }
|
352
|
+
ret['add'] = add
|
353
|
+
ret['remove'] = remove
|
354
|
+
ret['addself'] = addself
|
355
|
+
ret['removeself'] = removeself
|
356
|
+
return ret
|
357
|
+
else
|
358
|
+
return false
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
# Gets the currently logged in user's real name.
|
363
|
+
# @return [String/Nil] Nil if they don't have a real name set, or their
|
364
|
+
# real name.
|
365
|
+
def get_realname
|
366
|
+
response = get_current_user_meta('realname')
|
367
|
+
if response['query']['userinfo']['realname'] == ''
|
368
|
+
return nil
|
369
|
+
else
|
370
|
+
return response['query']['userinfo']['realname']
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
374
|
+
# Gets the currently logged in user's email address.
|
375
|
+
# @return [String/Nil] Nil if their email is not set, or their email.
|
376
|
+
def get_email_address
|
377
|
+
response = get_current_user_meta('email')
|
378
|
+
if response['query']['userinfo']['email'] == ''
|
379
|
+
return nil
|
380
|
+
else
|
381
|
+
return response['query']['userinfo']['email']
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
385
|
+
def get_current_user_options
|
386
|
+
response = get_current_user_meta('options')
|
387
|
+
ret = {}
|
388
|
+
response['query']['userinfo']['options'].each { |k, v| ret[k] = v }
|
41
389
|
end
|
42
390
|
end
|
43
391
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediawiki-butt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eli Foster
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-10-
|
12
|
+
date: 2015-10-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: string-utility
|
@@ -40,7 +40,8 @@ dependencies:
|
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
description: " MediaWiki::Butt is a Ruby Gem that provides a fully-featured MediaWiki
|
43
|
-
API interface
|
43
|
+
API interface. It includes methods for changing wiki content, authentication,
|
44
|
+
\ and queries.\n\n"
|
44
45
|
email: elifosterwy@gmail.com
|
45
46
|
executables: []
|
46
47
|
extensions: []
|