mediawiki-butt 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ require_relative 'meta/meta'
2
+ require_relative 'lists'
3
+ require_relative 'properties'
4
+
5
+ module MediaWiki
6
+ module Query
7
+ include MediaWiki::Query::Meta
8
+ include MediaWiki::Query::Lists
9
+ include MediaWiki::Query::Properties
10
+ end
11
+ 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.6.0
4
+ version: 0.7.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-09 00:00:00.000000000 Z
12
+ date: 2015-10-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: string-utility
@@ -55,7 +55,13 @@ files:
55
55
  - lib/mediawiki/constants.rb
56
56
  - lib/mediawiki/edit.rb
57
57
  - lib/mediawiki/exceptions.rb
58
- - lib/mediawiki/query.rb
58
+ - lib/mediawiki/query/lists.rb
59
+ - lib/mediawiki/query/meta/filerepoinfo.rb
60
+ - lib/mediawiki/query/meta/meta.rb
61
+ - lib/mediawiki/query/meta/siteinfo.rb
62
+ - lib/mediawiki/query/meta/userinfo.rb
63
+ - lib/mediawiki/query/properties.rb
64
+ - lib/mediawiki/query/query.rb
59
65
  homepage: https://github.com/ftb-gamepedia/mediawiki-butt-ruby
60
66
  licenses:
61
67
  - CC-BY-NC-ND-4.0
@@ -1,789 +0,0 @@
1
- require 'string-utility'
2
- require_relative 'constants'
3
-
4
- module MediaWiki
5
- module Query
6
- module Meta
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
-
19
- post(params)
20
- end
21
-
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
196
- end
197
-
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)
203
- params = {
204
- action: 'query',
205
- meta: 'filerepoinfo',
206
- friprop: prop
207
- }
208
-
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 }
389
- end
390
- end
391
- end
392
-
393
- module Properties
394
- # Gets the wiki text for the given page. Returns nil if it for some
395
- # reason cannot get the text, for example, if the page does not exist.
396
- # @param title [String] The page title
397
- # @return [String/nil] String containing page contents, or nil
398
- def get_text(title)
399
- params = {
400
- action: 'query',
401
- prop: 'revisions',
402
- rvprop: 'content',
403
- titles: title
404
- }
405
-
406
- response = post(params)
407
- revid = nil
408
- response['query']['pages'].each { |r, _| revid = r }
409
-
410
- if response['query']['pages'][revid]['missing'] == ''
411
- return nil
412
- else
413
- return response['query']['pages'][revid]['revisions'][0]['*']
414
- end
415
- end
416
-
417
- # Gets the revision ID for the given page.
418
- # @param title [String] The page title
419
- # @return [Int/nil] the ID or nil
420
- def get_id(title)
421
- params = {
422
- action: 'query',
423
- prop: 'revisions',
424
- rvprop: 'content',
425
- titles: title
426
- }
427
-
428
- response = post(params)
429
- response['query']['pages'].each do |revid, _|
430
- if revid != '-1'
431
- return revid.to_i
432
- else
433
- return nil
434
- end
435
- end
436
- end
437
-
438
- # Gets the token for the given type. This method should rarely be
439
- # used by normal users.
440
- # @param type [String] The type of token.
441
- # @param title [String] The page title for the token. Optional.
442
- # @return [String] The token. If the butt isn't logged in, it returns
443
- # with '+\\'.
444
- def get_token(type, title = nil)
445
- if @logged_in == true
446
- # There is some weird thing with MediaWiki where you must pass a valid
447
- # inprop parameter in order to get any response at all. This is why
448
- # there is a displaytitle inprop as well as gibberish in the titles
449
- # parameter. And to avoid normalization, it's capitalized.
450
- params = {
451
- action: 'query',
452
- prop: 'info',
453
- inprop: 'displaytitle',
454
- intoken: type
455
- }
456
-
457
- title = 'Somegibberish' if title.nil?
458
- params[:titles] = title
459
- response = post(params)
460
- revid = nil
461
- response['query']['pages'].each { |r, _| revid = r }
462
-
463
- # URL encoding is not needed for some reason.
464
- return response['query']['pages'][revid]["#{type}token"]
465
- else
466
- return '+\\'
467
- end
468
- end
469
- end
470
-
471
- module Lists
472
- using StringUtility
473
-
474
- # Gets an array of backlinks to a given title.
475
- # @param title [String] The page to get the backlinks of.
476
- # @param limit [Int] The maximum number of pages to get. Defaults to 500,
477
- # and cannot be greater than that unless the user is a bot. If the user
478
- # is a bot, the limit cannot be greater than 5000.
479
- # @return [Array] All backlinks until the limit
480
- def what_links_here(title, limit = 500)
481
- params = {
482
- action: 'query',
483
- bltitle: title
484
- }
485
-
486
- if limit > 500
487
- if is_user_bot? == true
488
- if limit > 5000
489
- params[:bllimit] = 5000
490
- else
491
- params[:bllimit] = limit
492
- end
493
- else
494
- params[:bllimit] = 500
495
- end
496
- else
497
- params[:bllimit] = limit
498
- end
499
-
500
- ret = []
501
- response = post(params)
502
- response['query']['backlinks'].each { |bl| ret.push(bl['title']) }
503
-
504
- ret
505
- end
506
-
507
- # Returns an array of all page titles that belong to a given category.
508
- # @param category [String] The category title. It can include "Category:",
509
- # or not, it doesn't really matter because we will add it if it is
510
- # missing.
511
- # @param limit [Int] The maximum number of members to get. Defaults to
512
- # 500, and cannot be greater than that unless the user is a bot.
513
- # If the user is a bot, the limit cannot be greater than 5000.
514
- # @return [Array] All category members until the limit
515
- def get_category_members(category, limit = 500)
516
- params = {
517
- action: 'query',
518
- list: 'categorymembers',
519
- cmprop: 'title'
520
- }
521
-
522
- if category =~ /[Cc]ategory\:/
523
- params[:cmtitle] = category
524
- else
525
- params[:cmtitle] = "Category:#{category}"
526
- end
527
-
528
- if limit > 500
529
- if is_user_bot?
530
- if limit > 5000
531
- params[:cmlimit] = 5000
532
- else
533
- params[:cmlimit] = limit
534
- end
535
- else
536
- params[:cmlimit] = 500
537
- end
538
- else
539
- params[:cmlimit] = limit
540
- end
541
-
542
- ret = []
543
- response = post(params)
544
- response['query']['categorymembers'].each { |cm| ret.push(cm['title']) }
545
-
546
- ret
547
- end
548
-
549
- # Returns an array of random pages titles.
550
- # @param number_of_pages [Int] The number of articles to get.
551
- # Defaults to 1. Cannot be greater than 10 for normal users,
552
- # or 20 for bots.
553
- # @param namespace [Int] The namespace ID. Defaults to
554
- # 0 (the main namespace).
555
- # @return [Array] All members
556
- def get_random_pages(number_of_pages = 1, namespace = 0)
557
- params = {
558
- action: 'query',
559
- list: 'random'
560
- }
561
-
562
- if $namespaces.value?(namespace)
563
- params[:rnnamespace] = namespace
564
- else
565
- params[:rnnamespace] = 0
566
- end
567
-
568
- if number_of_pages > 10
569
- if is_user_bot?
570
- if limit > 20
571
- params[:rnlimit] = 20
572
- else
573
- params[:rnlimit] = limit
574
- end
575
- else
576
- params[:rnlimit] = 10
577
- end
578
- else
579
- params[:rnlimit] = number_of_pages
580
- end
581
-
582
- ret = []
583
- responce = post(params)
584
- responce['query']['random'].each { |a| ret.push(a['title']) }
585
-
586
- ret
587
- end
588
-
589
- # Gets user information. This method should rarely be used by
590
- # normal users.
591
- # @param prop [String] The usprop parameter.
592
- # @param username [String] The username to get info for. Optional.
593
- # Defaults to the currently logged in user if ommitted.
594
- # @return [String/Nil] Parsed full response if successful, nil if
595
- # the username is nil and the Butt is not logged in.
596
- def get_userlists(prop, username = nil)
597
- if username.nil?
598
- if @logged_in
599
- response = get_current_user_meta(prop)
600
- else
601
- return false
602
- end
603
- else
604
- params = {
605
- action: 'query',
606
- list: 'users',
607
- usprop: prop,
608
- ususers: username
609
- }
610
-
611
- response = post(params)
612
- end
613
-
614
- response
615
- end
616
-
617
- # Gets an array of all the user's groups.
618
- # @param username [String] The username to get groups of. Optional.
619
- # Defaults to the currently logged in user.
620
- # @return [Array/Boolean] All of the user's groups, or false if username
621
- # is nil and Butt is not logged in.
622
- def get_usergroups(username = nil)
623
- ret = []
624
- if username.nil?
625
- if @logged_in
626
- info = get_userlists('groups')
627
- info['query']['userinfo']['groups'].each { |i| ret.push(i) }
628
- else
629
- return false
630
- end
631
- else
632
- info = get_userlists('groups', username)
633
- info['query']['users'].each do |i|
634
- i['groups'].each { |g| ret.push(g) }
635
- end
636
- end
637
-
638
- ret
639
- end
640
-
641
- # Gets the user rights for the user.
642
- # @param username [String] The user to get the rights for. Optional.
643
- # Defaults to the currently logged in user.
644
- # @return [Array/Boolean] All of the user's groups, or false if username
645
- # is nil and Butt is not logged in.
646
- def get_userrights(username = nil)
647
- ret = []
648
- if username.nil?
649
- if @logged_in
650
- info = get_userlists('rights')
651
- info['query']['userinfo']['rights'].each { |i| ret.push(i) }
652
- else
653
- return false
654
- end
655
- else
656
- info = get_userlists('rights', username)
657
- info['query']['users'].each do |i|
658
- i['rights'].each do |g|
659
- ret.push(g)
660
- end
661
- end
662
- end
663
-
664
- ret
665
- end
666
-
667
- # Gets contribution count for the user.
668
- # @param username [String] The username to get the contribution count of.
669
- # Optional. Defaults to the currently logged in user.
670
- # @param autoparse [Boolean] Whether to automatically format the string
671
- # with commas using string-utility. Defaults to true.
672
- # @return [Boolean/Int/String] False if username is nil and Butt is not
673
- # logged in. An integer value of the contribution count if autoparse is
674
- # false. A formatted string version of the contribution count if
675
- # autoparse is true.
676
- def get_contrib_count(username = nil, autoparse = true)
677
- count = nil
678
- if username.nil?
679
- if @logged_in
680
- info = get_userlists('editcount')
681
- count = info['query']['userinfo']['editcount']
682
- else
683
- return false
684
- end
685
- else
686
- info = get_userlists('editcount', username)
687
- info['query']['users'].each { |i| count = i['editcount'] }
688
- end
689
-
690
- if autoparse
691
- countstring = count.to_s.separate
692
- return countstring
693
- end
694
-
695
- count
696
- end
697
-
698
- # Gets when the user registered.
699
- # @param username [String] The username to get the registration date and
700
- # time of. Optional. Defaults to the currently logged in user.
701
- # @return [DateTime] The registration date and time as a DateTime object.
702
- def get_registration_time(username = nil)
703
- time = nil
704
- # Do note that in Userinfo, registration is called registrationdate.
705
- if username.nil?
706
- if @logged_in
707
- info = get_userlists('registrationdate')
708
- time = info['query']['userinfo']['registrationdate']
709
- else
710
- return false
711
- end
712
- else
713
- info = get_userlists('registration', username)
714
- info['query']['users'].each { |i| time = i['registration'] }
715
- end
716
-
717
- # %Y: Year including century
718
- # %m: Month num
719
- # %d: day of month
720
- # %T: Time as HH:MM:SS
721
- timeformat = '%Y-%m-%dT%T'
722
- time = DateTime.strptime(time, timeformat)
723
-
724
- time
725
- end
726
-
727
- # Gets the gender for the provded user.
728
- # @param username [String] The user.
729
- # @return [String] The gender. 'male', 'female', or 'unknown'.
730
- def get_user_gender(username)
731
- gender = nil
732
- info = get_userlists('gender', username)
733
- info['query']['users'].each { |i| gender = i['gender'] }
734
-
735
-
736
- gender
737
- end
738
-
739
- # Gets the amount of results for the search value.
740
- # @param search_value [String] The thing to search for.
741
- # @param namespace [Int] The namespace to search in.
742
- # Defaults to 0 (the main namespace).
743
- # @return [Int] The number of pages that matched the search.
744
- def get_search_result_amount(search_value, namespace = 0)
745
- params = {
746
- action: 'query',
747
- list: 'search',
748
- srsearch: search_value
749
- }
750
-
751
- if $namespaces.value?(namespace)
752
- params[:srnamespace] = namespace
753
- else
754
- params[:srnamespace] = 0
755
- end
756
-
757
- response = post(params)
758
-
759
- response['query']['searchinfo']['totalhits']
760
- end
761
-
762
- # Gets an array containing page titles that matched the search.
763
- # @param search_value [String] The thing to search for.
764
- # @param namespace [Int] The namespace to search in.
765
- # Defaults to 0 (the main namespace).
766
- # @return [Array] The page titles that matched the search.
767
- def get_search_results(search_value, namespace = 0)
768
- params = {
769
- action: 'query',
770
- list: 'search',
771
- srsearch: search_value
772
- }
773
-
774
- if $namespaces.value?(namespace)
775
- params[:srnamespace] = namespace
776
- else
777
- params[:srnamespace] = 0
778
- end
779
-
780
- response = post(params)
781
-
782
- ret = []
783
- response['query']['search'].each { |search| ret.push(search['title']) }
784
-
785
- ret
786
- end
787
- end
788
- end
789
- end