mediawiki-butt 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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