mediawiki-butt 0.11.1 → 1.0.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 +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
@@ -6,10 +6,9 @@ module MediaWiki
|
|
6
6
|
module Pages
|
7
7
|
# Gets all categories in the page.
|
8
8
|
# @param title [String] The page title.
|
9
|
-
# @see https://www.mediawiki.org/wiki/API:Property/Categories
|
10
|
-
# MediaWiki Categories Property API Docs
|
9
|
+
# @see https://www.mediawiki.org/wiki/API:Property/Categories MediaWiki Categories Property API Docs
|
11
10
|
# @since 0.8.0
|
12
|
-
# @return [Array] All the categories
|
11
|
+
# @return [Array<String>] All the categories
|
13
12
|
# @return [Nil] If the title does not exist.
|
14
13
|
def get_categories_in_page(title)
|
15
14
|
params = {
|
@@ -22,24 +21,17 @@ module MediaWiki
|
|
22
21
|
pageid = nil
|
23
22
|
ret = []
|
24
23
|
response['query']['pages'].each { |r, _| pageid = r }
|
25
|
-
if response['query']['pages'][pageid]['missing'] == ''
|
26
|
-
return nil
|
27
|
-
else
|
28
|
-
response['query']['pages'][pageid]['categories'].each do |c|
|
29
|
-
ret.push(c['title'])
|
30
|
-
end
|
31
|
-
end
|
24
|
+
return if response['query']['pages'][pageid]['missing'] == ''
|
32
25
|
|
33
|
-
|
26
|
+
response['query']['pages'][pageid].fetch('categories', []).map { |c| c['title'] }
|
34
27
|
end
|
35
28
|
|
36
|
-
# Gets the wiki text for the given page. Returns nil if it for some
|
37
|
-
#
|
38
|
-
# @param
|
39
|
-
# @see https://www.mediawiki.org/wiki/API:Revisions MediaWiki Revisions
|
40
|
-
# API Docs
|
29
|
+
# Gets the wiki text for the given page. Returns nil if it for some reason cannot get the text, for example,
|
30
|
+
# if the page does not exist.
|
31
|
+
# @param (see #get_categories_in_page)
|
32
|
+
# @see https://www.mediawiki.org/wiki/API:Revisions MediaWiki Revisions API Docs
|
41
33
|
# @since 0.8.0
|
42
|
-
# @return [String
|
34
|
+
# @return [String] String containing page contents.
|
43
35
|
# @return [Nil] If the page does not exist.
|
44
36
|
def get_text(title)
|
45
37
|
params = {
|
@@ -53,19 +45,16 @@ module MediaWiki
|
|
53
45
|
revid = nil
|
54
46
|
response['query']['pages'].each { |r, _| revid = r }
|
55
47
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
return response['query']['pages'][revid]['revisions'][0]['*']
|
60
|
-
end
|
48
|
+
revision = response['query']['pages'][revid]
|
49
|
+
|
50
|
+
revision['missing'] == '' ? nil : revision['revisions'][0]['*']
|
61
51
|
end
|
62
52
|
|
63
53
|
# Gets the revision ID for the given page.
|
64
|
-
# @param
|
65
|
-
# @see
|
66
|
-
# API Docs
|
54
|
+
# @param (see #get_categories_in_page)
|
55
|
+
# @see (see #get_text)
|
67
56
|
# @since 0.8.0
|
68
|
-
# @return [
|
57
|
+
# @return [Fixnum] The page's ID
|
69
58
|
# @return [Nil] If the page does not exist.
|
70
59
|
def get_id(title)
|
71
60
|
params = {
|
@@ -77,27 +66,21 @@ module MediaWiki
|
|
77
66
|
|
78
67
|
response = post(params)
|
79
68
|
response['query']['pages'].each do |revid, _|
|
80
|
-
|
81
|
-
return revid.to_i
|
82
|
-
else
|
83
|
-
return nil
|
84
|
-
end
|
69
|
+
return revid == '-1' ? nil : revid.to_i
|
85
70
|
end
|
86
71
|
end
|
87
72
|
|
88
73
|
# Gets all the external links on a given page.
|
89
|
-
# @param
|
90
|
-
# @param limit [
|
91
|
-
#
|
92
|
-
#
|
93
|
-
# @see https://www.mediawiki.org/wiki/API:Extlinks MediaWiki Extlinks
|
94
|
-
# API Docs
|
74
|
+
# @param (see #get_categories_in_page)
|
75
|
+
# @param limit [Fixnum] The maximum number of members to get. Defaults to 500, and cannot be greater than
|
76
|
+
# that unless the user is a bot. If the user is a bot, the limit cannot be greater than 5000.
|
77
|
+
# @see https://www.mediawiki.org/wiki/API:Extlinks MediaWiki Extlinks API Docs
|
95
78
|
# @since 0.8.0
|
96
|
-
# @return [Array] All external link URLs.
|
97
|
-
def get_external_links(
|
79
|
+
# @return [Array<String>] All external link URLs.
|
80
|
+
def get_external_links(title, limit = @query_limit_default)
|
98
81
|
params = {
|
99
82
|
action: 'query',
|
100
|
-
titles:
|
83
|
+
titles: title,
|
101
84
|
prop: 'extlinks',
|
102
85
|
ellimit: get_limited(limit)
|
103
86
|
}
|
@@ -105,12 +88,9 @@ module MediaWiki
|
|
105
88
|
response = post(params)
|
106
89
|
ret = []
|
107
90
|
response['query']['pages'].each do |revid, _|
|
108
|
-
if revid
|
109
|
-
|
110
|
-
|
111
|
-
end
|
112
|
-
else
|
113
|
-
return nil
|
91
|
+
return if revid == '-1'
|
92
|
+
response['query']['pages'][revid]['extlinks'].each do |l|
|
93
|
+
ret << l['*']
|
114
94
|
end
|
115
95
|
end
|
116
96
|
|
@@ -118,235 +98,193 @@ module MediaWiki
|
|
118
98
|
end
|
119
99
|
|
120
100
|
# Gets whether the current user watches the page.
|
121
|
-
# @param
|
101
|
+
# @param (see #get_categories_in_page)
|
122
102
|
# @see https://www.mediawiki.org/wiki/API:Info MediaWiki Info API Docs
|
123
103
|
# @since 0.8.0
|
124
104
|
# @return [Boolean] Whether the user watches the page.
|
125
105
|
# @return [Boolean] False if the user is not logged in.
|
126
106
|
# @return [Nil] If the page does not exist.
|
127
|
-
def do_i_watch?(
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
return response['query']['pages'][revid].key?('watched')
|
140
|
-
else
|
141
|
-
return nil
|
142
|
-
end
|
143
|
-
end
|
144
|
-
else
|
145
|
-
return false
|
107
|
+
def do_i_watch?(title)
|
108
|
+
return false unless @logged_in
|
109
|
+
params = {
|
110
|
+
action: 'query',
|
111
|
+
titles: title,
|
112
|
+
prop: 'info',
|
113
|
+
inprop: 'watched'
|
114
|
+
}
|
115
|
+
|
116
|
+
response = post(params)
|
117
|
+
response['query']['pages'].each do |revid, _|
|
118
|
+
return revid == '-1' ? nil : response['query']['pages'][revid].key?('watched')
|
146
119
|
end
|
147
120
|
end
|
148
121
|
|
149
122
|
# Gets whether the current user (can be anonymous) can read the page.
|
150
|
-
# @param
|
151
|
-
# @see
|
123
|
+
# @param (see #get_categories_in_page)
|
124
|
+
# @see (see #do_i_watch?)
|
152
125
|
# @since 0.8.0
|
153
126
|
# @return [Boolean] Whether the user can read the page.
|
154
127
|
# @return [Nil] If the page does not exist.
|
155
|
-
def can_i_read?(
|
128
|
+
def can_i_read?(title)
|
156
129
|
params = {
|
157
130
|
action: 'query',
|
158
|
-
titles:
|
131
|
+
titles: title,
|
159
132
|
prop: 'info',
|
160
133
|
inprop: 'readable'
|
161
134
|
}
|
162
135
|
|
163
136
|
response = post(params)
|
164
137
|
response['query']['pages'].each do |revid, _|
|
165
|
-
|
166
|
-
return response['query']['pages'][revid].key?('readable')
|
167
|
-
else
|
168
|
-
return nil
|
169
|
-
end
|
138
|
+
return revid == '-1' ? nil : response['query']['pages'][revid].key?('readable')
|
170
139
|
end
|
171
140
|
end
|
172
141
|
|
173
142
|
# Gets whether the given page is a redirect.
|
174
|
-
# @param
|
175
|
-
# @see
|
143
|
+
# @param (see #get_categories_in_page)
|
144
|
+
# @see (see #do_i_watch?)
|
176
145
|
# @since 0.8.0
|
177
146
|
# @return [Boolean] Whether the page is a redirect.
|
178
147
|
# @return [Nil] If the page does not exist.
|
179
|
-
def page_redirect?(
|
148
|
+
def page_redirect?(title)
|
180
149
|
params = {
|
181
150
|
action: 'query',
|
182
|
-
titles:
|
151
|
+
titles: title,
|
183
152
|
prop: 'info'
|
184
153
|
}
|
185
154
|
|
186
155
|
response = post(params)
|
187
156
|
response['query']['pages'].each do |revid, _|
|
188
|
-
|
189
|
-
return response['query']['pages'][revid].key?('redirect')
|
190
|
-
else
|
191
|
-
return nil
|
192
|
-
end
|
157
|
+
return revid == '-1' ? nil : response['query']['pages'][revid].key?('redirect')
|
193
158
|
end
|
194
159
|
end
|
195
160
|
|
196
161
|
# Gets whether the given page only has one edit.
|
197
|
-
# @param
|
198
|
-
# @see
|
162
|
+
# @param (see #get_categories_in_page)
|
163
|
+
# @see (see #do_i_watch?)
|
199
164
|
# @since 0.8.0
|
200
165
|
# @return [Boolean] Whether the page only has one edit.
|
201
166
|
# @return [Nil] If the page does not exist.
|
202
|
-
def page_new?(
|
167
|
+
def page_new?(title)
|
203
168
|
params = {
|
204
169
|
action: 'query',
|
205
|
-
titles:
|
170
|
+
titles: title,
|
206
171
|
prop: 'info'
|
207
172
|
}
|
208
173
|
|
209
174
|
response = post(params)
|
210
175
|
response['query']['pages'].each do |revid, _|
|
211
|
-
|
212
|
-
return response['query']['pages'][revid].key?('new')
|
213
|
-
else
|
214
|
-
return nil
|
215
|
-
end
|
176
|
+
return revid == '-1' ? nil : response['query']['pages'][revid].key?('new')
|
216
177
|
end
|
217
178
|
end
|
218
179
|
|
219
180
|
# Gets the number of users that watch the given page.
|
220
|
-
# @param
|
221
|
-
# @see
|
181
|
+
# @param (see #get_categoeries_in_page)
|
182
|
+
# @see (see #do_i_watch?)
|
222
183
|
# @since 0.8.0
|
223
184
|
# @return [Fixnum] The number of watchers.
|
224
185
|
# @return [Nil] If the page does not exist.
|
225
|
-
def get_number_of_watchers(
|
186
|
+
def get_number_of_watchers(title)
|
226
187
|
params = {
|
227
188
|
action: 'query',
|
228
|
-
titles:
|
189
|
+
titles: title,
|
229
190
|
prop: 'info',
|
230
191
|
inprop: 'watchers'
|
231
192
|
}
|
232
193
|
|
233
194
|
response = post(params)
|
234
195
|
response['query']['pages'].each do |revid, _|
|
235
|
-
|
236
|
-
return response['query']['pages'][revid]['watchers']
|
237
|
-
else
|
238
|
-
return nil
|
239
|
-
end
|
196
|
+
return revid == '-1' ? nil : response['query']['pages'][revid]['watchers']
|
240
197
|
end
|
241
198
|
end
|
242
199
|
|
243
|
-
# Gets the way the title is actually displayed, after any in-page
|
244
|
-
#
|
245
|
-
#
|
246
|
-
# @
|
247
|
-
# @see https://www.mediawiki.org/wiki/API:Info MediaWiki Info API Docs
|
200
|
+
# Gets the way the title is actually displayed, after any in-page changes to its display, e.g., using a
|
201
|
+
# template to make the first letter lowercase, in cases like iPhone.
|
202
|
+
# @param (see #get_categories_in_page)
|
203
|
+
# @see (see #do_i_watch?)
|
248
204
|
# @since 0.8.0
|
249
205
|
# @return [String] The page's display title.
|
250
206
|
# @return [Nil] If the page does not exist.
|
251
|
-
def get_display_title(
|
207
|
+
def get_display_title(title)
|
252
208
|
params = {
|
253
209
|
action: 'query',
|
254
|
-
titles:
|
210
|
+
titles: title,
|
255
211
|
prop: 'info',
|
256
212
|
inprop: 'displaytitle'
|
257
213
|
}
|
258
214
|
|
259
215
|
response = post(params)
|
260
216
|
response['query']['pages'].each do |revid, _|
|
261
|
-
|
262
|
-
return response['query']['pages'][revid]['displaytitle']
|
263
|
-
else
|
264
|
-
return nil
|
265
|
-
end
|
217
|
+
return revid == '-1' ? nil : response['query']['pages'][revid]['displaytitle']
|
266
218
|
end
|
267
219
|
end
|
268
220
|
|
269
221
|
# Gets the levels of protection on the page.
|
270
|
-
# @param
|
271
|
-
# @
|
272
|
-
# a 'type', a 'level', and an 'expiry'. Type refers to the type of
|
273
|
-
# change protected against, like 'edit'. Level refers to the usergroup
|
274
|
-
# that is needed to perform that type of edit, like 'sysop'. Expiry
|
275
|
-
# refers to when the protection will expire, if never, it will be
|
276
|
-
# 'infinity'.
|
277
|
-
# @see https://www.mediawiki.org/wiki/API:Info MediaWiki Info API Docs
|
222
|
+
# @param (see #get_categories_in_page)
|
223
|
+
# @see (see #do_i_watch?)
|
278
224
|
# @since 0.8.0
|
225
|
+
# @return [Array<Hash<Symbol, String>>] Hashes of all the protection levels. Each has includes a 'type', a
|
226
|
+
# 'level', and an 'expiry'. Type refers to the type of change protected against, like 'edit'. Level refers to
|
227
|
+
# the usergroup that is needed to perform that type of edit, like 'sysop'. Expiry refers to when the
|
228
|
+
# protection will expire, if never, it will be 'infinity.
|
279
229
|
# @return [Nil] If the page does not exist.
|
280
|
-
def get_protection_levels(
|
230
|
+
def get_protection_levels(title)
|
281
231
|
params = {
|
282
232
|
action: 'query',
|
283
|
-
titles:
|
233
|
+
titles: title,
|
284
234
|
prop: 'info',
|
285
235
|
inprop: 'protection'
|
286
236
|
}
|
287
237
|
|
288
238
|
response = post(params)
|
289
239
|
response['query']['pages'].each do |revid, _|
|
290
|
-
if revid
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
end
|
295
|
-
return protection
|
296
|
-
else
|
297
|
-
return nil
|
240
|
+
return if revid == '-1'
|
241
|
+
protection = response['query']['pages'][revid]['protection']
|
242
|
+
protection.each do |p|
|
243
|
+
p.keys.each { |k| p[k.to_sym] = p.delete(k) }
|
298
244
|
end
|
245
|
+
return protection
|
299
246
|
end
|
300
247
|
end
|
301
248
|
|
302
249
|
# Gets the size, in bytes, of the page.
|
303
|
-
# @param
|
304
|
-
# @see
|
250
|
+
# @param (see #get_categories_in_page)
|
251
|
+
# @see (see #do_i_watch?)
|
305
252
|
# @since 0.8.0
|
306
253
|
# @return [Fixnum] The number of bytes.
|
307
254
|
# @return [Nil] If the page does not exist.
|
308
|
-
def get_page_size(
|
255
|
+
def get_page_size(title)
|
309
256
|
params = {
|
310
257
|
action: 'query',
|
311
|
-
titles:
|
258
|
+
titles: title,
|
312
259
|
prop: 'info'
|
313
260
|
}
|
314
261
|
|
315
262
|
response = post(params)
|
316
263
|
response['query']['pages'].each do |revid, _|
|
317
|
-
|
318
|
-
return response['query']['pages'][revid]['length']
|
319
|
-
else
|
320
|
-
return nil
|
321
|
-
end
|
264
|
+
return revid == '-1' ? nil : response['query']['pages'][revid]['length']
|
322
265
|
end
|
323
266
|
end
|
324
267
|
|
325
268
|
# Gets all of the images in the given page.
|
326
|
-
# @param
|
327
|
-
# @
|
328
|
-
# @see https://www.mediawiki.org/wiki/API:Images MediaWiki Images API
|
329
|
-
# Docs
|
269
|
+
# @param (see #get_external_links)
|
270
|
+
# @see https://www.mediawiki.org/wiki/API:Images MediaWiki Images API Docs
|
330
271
|
# @since 0.8.0
|
331
|
-
# @return [Array] All of the image titles in the page.
|
272
|
+
# @return [Array<String>] All of the image titles in the page.
|
332
273
|
# @return [Nil] If the page does not exist.
|
333
|
-
def get_images_in_page(
|
274
|
+
def get_images_in_page(title, limit = @query_limit_default)
|
334
275
|
params = {
|
335
276
|
action: 'query',
|
336
277
|
prop: 'images',
|
337
|
-
titles:
|
278
|
+
titles: title,
|
338
279
|
imlimit: get_limited(limit)
|
339
280
|
}
|
340
281
|
|
341
282
|
response = post(params)
|
342
283
|
ret = []
|
343
284
|
response['query']['pages'].each do |revid, _|
|
344
|
-
if revid
|
345
|
-
|
346
|
-
|
347
|
-
end
|
348
|
-
else
|
349
|
-
return nil
|
285
|
+
return if revid == '-1'
|
286
|
+
response['query']['pages'][revid]['images'].each do |img|
|
287
|
+
ret << img['title']
|
350
288
|
end
|
351
289
|
end
|
352
290
|
|
@@ -354,30 +292,25 @@ module MediaWiki
|
|
354
292
|
end
|
355
293
|
|
356
294
|
# Gets all of the templates in the given page.
|
357
|
-
# @param
|
358
|
-
# @
|
359
|
-
# @see https://www.mediawiki.org/wiki/API:Templates MediaWiki Templates
|
360
|
-
# API Docs
|
295
|
+
# @param (see #get_external_links)
|
296
|
+
# @see https://www.mediawiki.org/wiki/API:Templates MediaWiki Templates API Docs
|
361
297
|
# @since 0.8.0
|
362
|
-
# @return [Array] All of the
|
298
|
+
# @return [Array<String>] All of the template titles in the page.
|
363
299
|
# @return [Nil] If the page does not exist.
|
364
|
-
def get_templates_in_page(
|
300
|
+
def get_templates_in_page(title, limit = @query_limit_default)
|
365
301
|
params = {
|
366
302
|
action: 'query',
|
367
303
|
prop: 'templates',
|
368
|
-
titles:
|
304
|
+
titles: title,
|
369
305
|
tllimit: get_limited(limit)
|
370
306
|
}
|
371
307
|
|
372
308
|
response = post(params)
|
373
309
|
ret = []
|
374
310
|
response['query']['pages'].each do |revid, _|
|
375
|
-
if revid
|
376
|
-
|
377
|
-
|
378
|
-
end
|
379
|
-
else
|
380
|
-
return nil
|
311
|
+
return if revid == '-1'
|
312
|
+
response['query']['pages'][revid]['templates'].each do |tmp|
|
313
|
+
ret << tmp['title']
|
381
314
|
end
|
382
315
|
end
|
383
316
|
|
@@ -385,51 +318,43 @@ module MediaWiki
|
|
385
318
|
end
|
386
319
|
|
387
320
|
# Gets all of the interwiki links on the given page.
|
388
|
-
# @param
|
389
|
-
# @
|
390
|
-
# @see https://www.mediawiki.org/wiki/API:Iwlinks MediaWiki Interwiki
|
391
|
-
# Links API Docs
|
321
|
+
# @param (see #get_external_links)
|
322
|
+
# @see https://www.mediawiki.org/wiki/API:Iwlinks MediaWiki Interwiki Links API Docs
|
392
323
|
# @since 0.8.0
|
393
|
-
# @return [Array] All interwiki link titles.
|
324
|
+
# @return [Array<String>] All interwiki link titles.
|
394
325
|
# @return [Nil] If the page does not exist.
|
395
|
-
def get_interwiki_links_in_page(
|
326
|
+
def get_interwiki_links_in_page(title, limit = @query_limit_default)
|
396
327
|
params = {
|
397
328
|
action: 'query',
|
398
329
|
prop: 'iwlinks',
|
399
|
-
titles:
|
330
|
+
titles: title,
|
400
331
|
tllimit: get_limited(limit)
|
401
332
|
}
|
402
333
|
|
403
334
|
response = post(params)
|
404
335
|
ret = []
|
405
336
|
response['query']['pages'].each do |revid, _|
|
406
|
-
if revid
|
407
|
-
|
408
|
-
|
409
|
-
end
|
410
|
-
else
|
411
|
-
return nil
|
337
|
+
return if revid == '-1'
|
338
|
+
response['query']['pages'][revid]['iwlinks'].each do |l|
|
339
|
+
ret << l['*']
|
412
340
|
end
|
413
341
|
end
|
414
342
|
|
415
343
|
ret
|
416
344
|
end
|
417
345
|
|
418
|
-
# Gets a hash of data for the page in every language that it is
|
419
|
-
#
|
420
|
-
#
|
421
|
-
# @
|
422
|
-
# @param limit [Fixnum] See #get_external_links
|
423
|
-
# @see https://www.mediawiki.org/wiki/API:Langlinks MediaWiki Langlinks
|
424
|
-
# API Docs
|
346
|
+
# Gets a hash of data for the page in every language that it is available in. This includes url, language
|
347
|
+
# name, autonym, and its title. This method does not work with the Translate extension.
|
348
|
+
# @param (see #get_external_links)
|
349
|
+
# @see https://www.mediawiki.org/wiki/API:Langlinks MediaWiki Langlinks API Docs
|
425
350
|
# @since 0.8.0
|
426
351
|
# @return [Hash] The data described previously.
|
427
352
|
# @return [Nil] If the page does not exist.
|
428
|
-
def get_other_langs_of_page(
|
353
|
+
def get_other_langs_of_page(title, limit = @query_limit_default)
|
429
354
|
params = {
|
430
355
|
action: 'query',
|
431
356
|
prop: 'langlinks',
|
432
|
-
titles:
|
357
|
+
titles: title,
|
433
358
|
lllimit: get_limited(limit),
|
434
359
|
llprop: 'url|langname|autonym'
|
435
360
|
}
|
@@ -437,17 +362,14 @@ module MediaWiki
|
|
437
362
|
response = post(params)
|
438
363
|
ret = {}
|
439
364
|
response['query']['pages'].each do |revid, _|
|
440
|
-
if revid
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
end
|
449
|
-
else
|
450
|
-
return nil
|
365
|
+
return if revid == '-1'
|
366
|
+
response['query']['pages'][revid]['langlinks'].each do |l|
|
367
|
+
ret[l['lang'].to_sym] = {
|
368
|
+
url: l['url'],
|
369
|
+
langname: l['langname'],
|
370
|
+
autonym: l['autonym'],
|
371
|
+
title: l['*']
|
372
|
+
}
|
451
373
|
end
|
452
374
|
end
|
453
375
|
|
@@ -455,29 +377,25 @@ module MediaWiki
|
|
455
377
|
end
|
456
378
|
|
457
379
|
# Gets every single link in a page.
|
458
|
-
# @param
|
459
|
-
# @param limit [Fixnum] See #get_external_links.
|
380
|
+
# @param (see #get_external_links)
|
460
381
|
# @see https://www.mediawiki.org/wiki/API:Links MediaWiki Links API Docs
|
461
382
|
# @since 0.8.0
|
462
|
-
# @return [Array] All link titles.
|
383
|
+
# @return [Array<String>] All link titles.
|
463
384
|
# @return [Nil] If the page does not exist.
|
464
|
-
def get_all_links_in_page(
|
385
|
+
def get_all_links_in_page(title, limit = @query_limit_default)
|
465
386
|
params = {
|
466
387
|
action: 'query',
|
467
388
|
prop: 'links',
|
468
|
-
titles:
|
389
|
+
titles: title,
|
469
390
|
pllimit: get_limited(limit)
|
470
391
|
}
|
471
392
|
|
472
393
|
response = post(params)
|
473
394
|
ret = []
|
474
395
|
response['query']['pages'].each do |revid, _|
|
475
|
-
if revid
|
476
|
-
|
477
|
-
|
478
|
-
end
|
479
|
-
else
|
480
|
-
return nil
|
396
|
+
return if revid == '-1'
|
397
|
+
response['query']['pages'][revid]['links'].each do |l|
|
398
|
+
ret << l['title']
|
481
399
|
end
|
482
400
|
end
|
483
401
|
|