mediawiki-butt 0.9.0 → 0.10.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.
@@ -0,0 +1,33 @@
1
+ module MediaWiki
2
+ module Query
3
+ module Lists
4
+ module Log
5
+ module Merge
6
+ # Gets merge/merge logs.
7
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
8
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
9
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
10
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
11
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
12
+ # @see {MediaWiki::Query::Lists::Log#get_log}
13
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
14
+ # Logevents API Docs
15
+ # @since 0.10.0
16
+ # @return [Array<Hash>] The events, containing the following keys: id,
17
+ # title, user, comment, destination_title, mergepoint, timestamp.
18
+ def get_merge_log(user = nil, title = nil, start = nil, stop = nil,
19
+ limit = 500)
20
+ response = get_log('merge/merge', user, title, start, stop, limit)
21
+
22
+ ret = []
23
+ response['query']['logevents'].each do |log|
24
+ ret << get_mergemerge(log)
25
+ end
26
+
27
+ ret
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,57 @@
1
+ module MediaWiki
2
+ module Query
3
+ module Lists
4
+ module Log
5
+ module Move
6
+ # Gets move/move logs.
7
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
8
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
9
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
10
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
11
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
12
+ # @see {MediaWiki::Query::Lists::Log#get_log}
13
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
14
+ # Logevents API Docs
15
+ # @since 0.10.0
16
+ # @return [Array<Hash>] The events, containing the following keys: id,
17
+ # title, user, comment, timestamp.
18
+ def get_move_log(user = nil, title = nil, start = nil, stop = nil,
19
+ limit = 500)
20
+ response = get_log('move/move', user, title, start, stop, limit)
21
+
22
+ ret = []
23
+ response['query']['logevents'].each do |log|
24
+ ret << get_move(log)
25
+ end
26
+
27
+ ret
28
+ end
29
+
30
+ # Gets move/move_redir logs for redirects.
31
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
32
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
33
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
34
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
35
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
36
+ # @see {MediaWiki::Query::Lists::Log#get_log}
37
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
38
+ # Logevents API Docs
39
+ # @since 0.10.0
40
+ # @return [Array<Hash>] The events, containing the following keys: id,
41
+ # title, user, comment, timestamp.
42
+ def get_move_redirect_log(user = nil, title = nil, start = nil,
43
+ stop = nil, limit = 500)
44
+ resp = get_log('move/move_redir', user, title, start, stop, limit)
45
+
46
+ ret = []
47
+ resp['query']['logevents'].each do |log|
48
+ ret << get_move(log)
49
+ end
50
+
51
+ ret
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,82 @@
1
+ module MediaWiki
2
+ module Query
3
+ module Lists
4
+ module Log
5
+ module NewUsers
6
+ # Gets newusers/autocreate logs.
7
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
8
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
9
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
10
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
11
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
12
+ # @see {MediaWiki::Query::Lists::Log#get_log}
13
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
14
+ # Logevents API Docs
15
+ # @since 0.10.0
16
+ # @return [Array<Hash>] The events, containing the following keys: id,
17
+ # new_user, user, comment, timestamp.
18
+ def get_autocreate_users_log(user = nil, title = nil, start = nil,
19
+ stop = nil, limit = 500)
20
+ response = get_log('newusers/autocreate', user, title, start, stop,
21
+ limit)
22
+
23
+ ret = []
24
+ response['query']['logevents'].each do |log|
25
+ ret << get_user(log)
26
+ end
27
+
28
+ ret
29
+ end
30
+
31
+ # Gets newusers/create2, when one user creates another user, logs.
32
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
33
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
34
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
35
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
36
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
37
+ # @see {MediaWiki::Query::Lists::Log#get_log}
38
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
39
+ # Logevents API Docs
40
+ # @since 0.10.0
41
+ # @return [Array<Hash>] The events, containing the following keys: id,
42
+ # title, new_user, user, comment, timestamp.
43
+ def get_user_create2_log(user = nil, title = nil, start = nil,
44
+ stop = nil, limit = 500)
45
+ resp = get_log('newusers/create2', user, title, start, stop, limit)
46
+
47
+ ret = []
48
+ resp['query']['logevents'].each do |log|
49
+ ret << get_user(log)
50
+ end
51
+
52
+ ret
53
+ end
54
+
55
+ # Gets newusers/create, when one user creates their own account, logs.
56
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
57
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
58
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
59
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
60
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
61
+ # @see {MediaWiki::Query::Lists::Log#get_log}
62
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
63
+ # Logevents API Docs
64
+ # @since 0.10.0
65
+ # @return [Array<Hash>] The events, containing the following keys: id,
66
+ # title, user, comment, timestamp.
67
+ def get_user_create_log(user = nil, title = nil, start = nil,
68
+ stop = nil, limit = 500)
69
+ resp = get_log('newusers/create', user, title, start, stop, limit)
70
+
71
+ ret = []
72
+ resp['query']['logevents'].each do |log|
73
+ ret << get_user(log)
74
+ end
75
+
76
+ ret
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,34 @@
1
+ module MediaWiki
2
+ module Query
3
+ module Lists
4
+ module Log
5
+ module Patrol
6
+ # Gets patrol/patrol logs.
7
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
8
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
9
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
10
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
11
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
12
+ # @see {MediaWiki::Query::Lists::Log#get_log}
13
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
14
+ # Logevents API Docs
15
+ # @since 0.10.0
16
+ # @return [Array<Hash>] The events, containing the following keys: id,
17
+ # title, user, comment, current_revision, previous_revision,
18
+ # timestamp.
19
+ def get_patrol_log(user = nil, title = nil, start = nil, stop = nil,
20
+ limit = 500)
21
+ response = get_log('patrol/patrol', user, title, start, stop, limit)
22
+
23
+ ret = []
24
+ response['query']['logevents'].each do |log|
25
+ ret << get_patrol(log)
26
+ end
27
+
28
+ ret
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,59 @@
1
+ module MediaWiki
2
+ module Query
3
+ module Lists
4
+ module Log
5
+ # @todo rights/erevoke
6
+ module Rights
7
+ # Gets rights/autopromote logs.
8
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
9
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
10
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
11
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
12
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
13
+ # @see {MediaWiki::Query::Lists::Log#get_log}
14
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
15
+ # Logevents API Docs
16
+ # @since 0.10.0
17
+ # @return [Array<Hash>] The events, containing the following keys: id,
18
+ # title, user, new_rights, old_rights, comment, timestamp.
19
+ def get_autopromotion_log(user = nil, title = nil, start = nil,
20
+ stop = nil, limit = 500)
21
+ resp = get_log('rights/autopromote', user, title, start, stop,
22
+ limit)
23
+
24
+ ret = []
25
+ resp['query']['logevents'].each do |log|
26
+ ret << get_rightsautopromote(log)
27
+ end
28
+
29
+ ret
30
+ end
31
+
32
+ # Gets rights/rights logs.
33
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
34
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
35
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
36
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
37
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
38
+ # @see {MediaWiki::Query::Lists::Log#get_log}
39
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
40
+ # Logevents API Docs
41
+ # @since 0.10.0
42
+ # @return [Array<Hash>] The events, containing the following keys: id,
43
+ # title, to, from, new_rights, old_rights, comment, timestamp.
44
+ def get_rights_log(user = nil, title = nil, start = nil, stop = nil,
45
+ limit = 500)
46
+ resp = get_log('rights/rights', user, title, start, stop, limit)
47
+
48
+ ret = []
49
+ resp['query']['logevents'].each do |log|
50
+ ret << get_rightsrights(log)
51
+ end
52
+
53
+ ret
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,58 @@
1
+ module MediaWiki
2
+ module Query
3
+ module Lists
4
+ module Log
5
+ # @todo upload/revert
6
+ module Upload
7
+ # Gets upload/overwrite logs.
8
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
9
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
10
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
11
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
12
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
13
+ # @see {MediaWiki::Query::Lists::Log#get_log}
14
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
15
+ # Logevents API Docs
16
+ # @since 0.10.0
17
+ # @return [Array<Hash>] The events, containing the following keys: id,
18
+ # title, user, sha, comment, timestamp.
19
+ def get_upload_overwrite_log(user = nil, title = nil, start = nil,
20
+ stop = nil, limit = 500)
21
+ resp = get_log('upload/overwrite', user, title, start, stop, limit)
22
+
23
+ ret = []
24
+ resp['query']['logevents'].each do |log|
25
+ ret << get_upload(log)
26
+ end
27
+
28
+ ret
29
+ end
30
+
31
+ # Gets upload/upload logs.
32
+ # @param user [String] See {MediaWiki::Query::Lists::Log#get_log}
33
+ # @param title [String] See {MediaWiki::Query::Lists::Log#get_log}
34
+ # @param start [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
35
+ # @param stop [DateTime] See {MediaWiki::Query::Lists::Log#get_log}
36
+ # @param limit [Int] See {MediaWiki::Query::Lists::Log#get_log}
37
+ # @see {MediaWiki::Query::Lists::Log#get_log}
38
+ # @see https://www.mediawiki.org/wiki/API:Logevents MediaWiki
39
+ # Logevents API Docs
40
+ # @since 0.10.0
41
+ # @return [Array<Hash>] The events, containing the following keys: id,
42
+ # title, user, sha, comment, timestamp.
43
+ def get_upload_log(user = nil, title = nil, start = nil, stop = nil,
44
+ limit = 500)
45
+ resp = get_log('upload/upload', user, title, start, stop, limit)
46
+
47
+ ret = []
48
+ resp['query']['logevents'].each do |log|
49
+ ret << get_upload(log)
50
+ end
51
+
52
+ ret
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,55 @@
1
+ module MediaWiki
2
+ module Query
3
+ module Lists
4
+ module Miscellaneous
5
+ # Returns an array of random pages titles.
6
+ # @param number_of_pages [Int] The number of articles to get.
7
+ # Defaults to 1. Cannot be greater than 10 for normal users,
8
+ # or 20 for bots.
9
+ # @param namespace [Int] The namespace ID. Defaults to
10
+ # 0 (the main namespace).
11
+ # @see https://www.mediawiki.org/wiki/API:Random MediaWiki Random API
12
+ # Docs
13
+ # @since 0.2.0
14
+ # @return [Array] All members
15
+ def get_random_pages(number_of_pages = 1, namespace = 0)
16
+ params = {
17
+ action: 'query',
18
+ list: 'random',
19
+ rnlimit: get_limited(number_of_pages, 10, 20)
20
+ }
21
+
22
+ if MediaWiki::Constants::NAMESPACES.value?(namespace)
23
+ params[:rnnamespace] = namespace
24
+ else
25
+ params[:rnnamespace] = 0
26
+ end
27
+
28
+ ret = []
29
+ responce = post(params)
30
+ responce['query']['random'].each { |a| ret << a['title'] }
31
+
32
+ ret
33
+ end
34
+
35
+ # Gets the valid change tags on the wiki.
36
+ # @param limit [Int] The maximum number of results to get. Maximum 5000
37
+ # for bots and 500 for users.
38
+ # @see https://www.mediawiki.org/wiki/API:Tags MediaWiki Tags API Docs
39
+ # @since 0.10.0
40
+ # @return [Array<String>] All tag names.
41
+ def get_tags(limit = 500)
42
+ params = {
43
+ action: 'query',
44
+ list: 'tags',
45
+ limit: get_limited(limit)
46
+ }
47
+ response = post(params)
48
+ ret = []
49
+ response['query']['tags'].each { |tag| ret << tag['name'] }
50
+ ret
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,203 @@
1
+ require_relative 'users'
2
+
3
+ module MediaWiki
4
+ module Query
5
+ module Lists
6
+ module QueryPage
7
+ include MediaWiki::Query::Lists::Users
8
+
9
+ # @since 0.10.0
10
+ # @see #get_querypage
11
+ def get_mostrevisions_page(limit = 500)
12
+ get_querypage('Mostrevisions', limit)
13
+ end
14
+
15
+ # @since 0.10.0
16
+ # @see #get_querypage
17
+ def get_mostlinked_page(limit = 500)
18
+ get_querypage('Mostlinked', limit)
19
+ end
20
+
21
+ # @since 0.10.0
22
+ # @see #get_querypage
23
+ def get_mostlinkedtemplates_page(limit = 500)
24
+ get_querypage('Mostlinkedtemplates', limit)
25
+ end
26
+
27
+ # @since 0.10.0
28
+ # @see #get_querypage
29
+ def get_mostlinkedcategories_page(limit = 500)
30
+ get_querypage('Mostlinkedcategories', limit)
31
+ end
32
+
33
+ # @since 0.10.0
34
+ # @see #get_querypage
35
+ def get_mostinterwikis_page(limit = 500)
36
+ get_querypage('Mostinterwikis', limit)
37
+ end
38
+
39
+ # @since 0.10.0
40
+ # @see #get_querypage
41
+ def get_mostimages_page(limit = 500)
42
+ get_querypage('Mostimages', limit)
43
+ end
44
+
45
+ # @since 0.10.0
46
+ # @see #get_querypage
47
+ def get_mostcategories_page(limit = 500)
48
+ get_querypage('Mostcactegories', limit)
49
+ end
50
+
51
+ # @since 0.10.0
52
+ # @see #get_querypage
53
+ def get_listduplicatedfiles_page(limit = 500)
54
+ get_querypage('ListDuplicatedFiles', limit)
55
+ end
56
+
57
+ # @since 0.10.0
58
+ # @see #get_querypage
59
+ def get_listredirects_page(limit = 500)
60
+ get_querypage('Listredirects', limit)
61
+ end
62
+
63
+ # @since 0.10.0
64
+ # @see #get_querypage
65
+ def get_wantedtemplates_page(limit = 500)
66
+ get_querypage('Wantedtemplates', limit)
67
+ end
68
+
69
+ # @since 0.10.0
70
+ # @see #get_querypage
71
+ def get_wantedpages_page(limit = 500)
72
+ get_querypage('Wantedpages', limit)
73
+ end
74
+
75
+ # @since 0.10.0
76
+ # @see #get_querypage
77
+ def get_wantedfiles_page(limit = 500)
78
+ get_querypage('Wantedfiles', limit)
79
+ end
80
+
81
+ # @since 0.10.0
82
+ # @see #get_querypage
83
+ def get_wantedcategories_page(limit = 500)
84
+ get_querypage('Wantedcategories', limit)
85
+ end
86
+
87
+ # @since 0.10.0
88
+ # @see #get_querypage
89
+ # @return [Nil] If the user does not have the necessary rights.
90
+ def get_unwatchedpages_page(limit = 500)
91
+ rights = get_userrights
92
+ if rights != false && rights.include?('unwatchedpages')
93
+ get_querypage('Unwatchedpages', limit)
94
+ else
95
+ return nil
96
+ end
97
+ end
98
+
99
+ # @since 0.10.0
100
+ # @see #get_querypage
101
+ def get_unusedtemplates_page(limit = 500)
102
+ get_querypage('Unusedtemplates', limit)
103
+ end
104
+
105
+ # @since 0.10.0
106
+ # @see #get_querypage
107
+ def get_unusedcategories_page(limit = 500)
108
+ get_querypage('Unusedcategories', limit)
109
+ end
110
+
111
+ # @since 0.10.0
112
+ # @see #get_querypage
113
+ def get_uncategorizedtemplates_page(limit = 500)
114
+ get_querypage('Uncategorizedtemplates', limit)
115
+ end
116
+
117
+ # @since 0.10.0
118
+ # @see #get_querypage
119
+ def get_uncategorizedpages_page(limit = 500)
120
+ get_querypage('Uncategorizedpages', limit)
121
+ end
122
+
123
+ # @since 0.10.0
124
+ # @see #get_querypage
125
+ def get_uncategorizedcategories_page(limit = 500)
126
+ get_querypage('Uncategorizedcategories', limit)
127
+ end
128
+
129
+ # @since 0.10.0
130
+ # @see #get_querypage
131
+ def get_shortpages_page(limit = 500)
132
+ get_querypage('Shortpages', limit)
133
+ end
134
+
135
+ # @since 0.10.0
136
+ # @see #get_querypage
137
+ def get_withoutinterwiki_page(limit = 500)
138
+ get_querypage('Withoutinterwiki', limit)
139
+ end
140
+
141
+ # @since 0.10.0
142
+ # @see #get_querypage
143
+ def get_fewestrevisions_page(limit = 500)
144
+ get_querypage('Fewestrevisions', limit)
145
+ end
146
+
147
+ # @since 0.10.0
148
+ # @see #get_querypage
149
+ def get_lonelypages_page(limit = 500)
150
+ get_querypage('Lonelypages', limit)
151
+ end
152
+
153
+ # @since 0.10.0
154
+ # @see #get_querypage
155
+ def get_ancientpages_page(limit = 500)
156
+ get_querypage('Ancientpages', limit)
157
+ end
158
+
159
+ # @since 0.10.0
160
+ # @see #get_querypage
161
+ def get_longpages_page(limit = 500)
162
+ get_querypage('Longpages', limit)
163
+ end
164
+
165
+ # @since 0.10.0
166
+ # @see #get_querypage
167
+ def get_doubleredirects_page(limit = 500)
168
+ get_querypage('DoubleRedirects', limit)
169
+ end
170
+
171
+ # @since 0.10.0
172
+ # @see #get_querypage
173
+ def get_brokenredirects_page(limit = 500)
174
+ get_querypage('BrokenRedirects', limit)
175
+ end
176
+
177
+ # Performs a QueryPage request.
178
+ # @param page [String] The special page (not including Special:) to
179
+ # query.
180
+ # @param limit [Int] The limit.
181
+ # @see https://www.mediawiki.org/wiki/API:Querypage MediaWiki QueryPage
182
+ # API Docs
183
+ # @since 0.10.0
184
+ # @return [Hash] The response.
185
+ def get_querypage(page, limit = 500)
186
+ params = {
187
+ action: 'query',
188
+ list: 'querypage',
189
+ qppage: page,
190
+ qplimit: get_limited(limit)
191
+ }
192
+ response = post(params)
193
+ ret = []
194
+ response['query']['querypage']['results'].each do |result|
195
+ ret << result['title']
196
+ end
197
+
198
+ ret
199
+ end
200
+ end
201
+ end
202
+ end
203
+ end