mediawiki-gateway 1.0.0 → 1.1.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 +15 -0
- data/README.md +6 -1
- data/lib/media_wiki/exception.rb +1 -1
- data/lib/media_wiki/gateway.rb +18 -4
- data/lib/media_wiki/gateway/pages.rb +14 -0
- data/lib/media_wiki/gateway/query.rb +3 -3
- data/lib/media_wiki/gateway/users.rb +3 -2
- data/lib/media_wiki/version.rb +1 -1
- data/spec/media_wiki/live_gateway_spec.rb +1 -1
- metadata +49 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3bf439067ecdc78862001617673b8f7eca06812b
|
4
|
+
data.tar.gz: 2bc0d1305900bbc69f8bd66ab3809d3fefa64849
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a357d4c39d1d86a2a493e1c0f954c8e5a3095eaa8d4afb6eeb583cbd8512744f0d011eae82914a4455f1fde499cd75dd18bd895bc1dd4d872b58b2e87a9205d
|
7
|
+
data.tar.gz: eaa97ac659108a0cf6fead74380619706c274309b8a7073aa64b22d7fa38a6492385895a0ee7a2312393aded3951c63ecc82c28b70c26b78f5694c9209a265de
|
data/ChangeLog
CHANGED
@@ -2,6 +2,21 @@
|
|
2
2
|
|
3
3
|
= Revision history for mediawiki-gateway
|
4
4
|
|
5
|
+
== 1.1.0 [2016-01-05]
|
6
|
+
|
7
|
+
* Allow empty params for semantic_query.
|
8
|
+
* Add a method to purge a page. Pull request #93 by MusikAnimal.
|
9
|
+
* Follow redirects if HTTP 301, 302 or 307 is returned. Pull request #86
|
10
|
+
by Brandon Liu.
|
11
|
+
* Change exception superclass to StandardError. Pull request #85 by
|
12
|
+
Brandon Liu.
|
13
|
+
* Fixed categorymembers to use new continue rules. Pull request #82
|
14
|
+
by Asaf Bartov.
|
15
|
+
* Fix search to return nil if namespace not found. Pull request #88 by
|
16
|
+
Alexander Adrianov.
|
17
|
+
* Fixed MediaWiki::Gateway::Users#contributions to not continue when enough
|
18
|
+
contributions have been received. Pull request #79 by Michaël Witrant.
|
19
|
+
|
5
20
|
== 1.0.0 [2014-10-31]
|
6
21
|
|
7
22
|
* <b>Required Ruby version is now 1.9.3 or higher.</b>
|
data/README.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
A Ruby framework for [MediaWiki API](http://www.mediawiki.org/wiki/API:Main_page) manipulation.
|
4
4
|
|
5
|
+
**Note**: This library is not actively maintained and uses deprecated API methods.
|
6
|
+
If you are starting a new project, please use the official Wikimedia Ruby client at
|
7
|
+
https://github.com/wikimedia/mediawiki-ruby-api instead.
|
8
|
+
|
5
9
|
## Features
|
6
10
|
|
7
11
|
* Simple, elegant syntax for common operations
|
@@ -9,7 +13,8 @@ A Ruby framework for [MediaWiki API](http://www.mediawiki.org/wiki/API:Main_page
|
|
9
13
|
* List, search operations work around API limits to fetch all results
|
10
14
|
* Support for maxlag detection and automated retries on 503
|
11
15
|
* Integrated logging
|
12
|
-
* Tested up to MediaWiki 1.
|
16
|
+
* Tested up to MediaWiki 1.24
|
17
|
+
* For 1.25+, you must skip deprecation warnings with `:ignorewarnings => true` in `MediaWiki::Gateway.new`. See [issue #69](https://github.com/jpatokal/mediawiki-gateway/issues/69).
|
13
18
|
* Should work with Ruby 1.9.3 and higher
|
14
19
|
|
15
20
|
## Links
|
data/lib/media_wiki/exception.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module MediaWiki
|
2
2
|
|
3
3
|
# General exception occurred within MediaWiki::Gateway, and parent class for MediaWiki::APIError, MediaWiki::Unauthorized.
|
4
|
-
class Exception < ::
|
4
|
+
class Exception < ::StandardError
|
5
5
|
end
|
6
6
|
|
7
7
|
# Wrapper for errors returned by MediaWiki API. Possible codes are defined in http://www.mediawiki.org/wiki/API:Errors_and_warnings.
|
data/lib/media_wiki/gateway.rb
CHANGED
@@ -127,7 +127,7 @@ module MediaWiki
|
|
127
127
|
def make_api_request(form_data, continue_xpath = nil, retry_count = 1)
|
128
128
|
form_data.update('format' => 'xml', 'maxlag' => @options[:maxlag])
|
129
129
|
|
130
|
-
http_send(@wiki_url, form_data, @headers.merge(cookies: @cookies))
|
130
|
+
http_send(@wiki_url, form_data, @headers.merge(cookies: @cookies)) do |response|
|
131
131
|
if response.code == 503 && retry_count < @options[:retry_count]
|
132
132
|
log.warn("503 Service Unavailable: #{response.body}. Retry in #{@options[:retry_delay]} seconds.")
|
133
133
|
sleep(@options[:retry_delay])
|
@@ -168,10 +168,11 @@ module MediaWiki
|
|
168
168
|
|
169
169
|
return [doc, (continue_xpath && doc.elements['query-continue']) ?
|
170
170
|
REXML::XPath.first(doc, continue_xpath) : nil]
|
171
|
-
|
171
|
+
end
|
172
172
|
end
|
173
173
|
|
174
|
-
# Execute the HTTP request using either GET or POST as appropriate
|
174
|
+
# Execute the HTTP request using either GET or POST as appropriate.
|
175
|
+
# @yieldparam response
|
175
176
|
def http_send url, form_data, headers, &block
|
176
177
|
opts = @http_options.merge(url: url, headers: headers)
|
177
178
|
opts[:method] = form_data['action'] == 'query' ? :get : :post
|
@@ -179,7 +180,20 @@ module MediaWiki
|
|
179
180
|
|
180
181
|
log.debug("#{opts[:method].upcase}: #{form_data.inspect}, #{@cookies.inspect}")
|
181
182
|
|
182
|
-
RestClient::Request.execute(opts,
|
183
|
+
RestClient::Request.execute(opts) do |response, request, result|
|
184
|
+
# When a block is passed to RestClient::Request.execute, we must
|
185
|
+
# manually handle response codes ourselves. If no block is passed,
|
186
|
+
# then redirects are automatically handled, but HTTP errors also
|
187
|
+
# result in exceptions being raised. For now, we manually check for
|
188
|
+
# HTTP 503 errors (see: #make_api_request), but we must also manually
|
189
|
+
# handle HTTP redirects.
|
190
|
+
if [301, 302, 307].include?(response.code) && request.method == :get
|
191
|
+
response = response.follow_redirection(request, result)
|
192
|
+
end
|
193
|
+
|
194
|
+
block.call(response)
|
195
|
+
end
|
196
|
+
|
183
197
|
end
|
184
198
|
|
185
199
|
# Get API XML response
|
@@ -274,6 +274,7 @@ module MediaWiki
|
|
274
274
|
def category_members(category, options = {})
|
275
275
|
iterate_query('categorymembers', '//cm', 'title', 'cmcontinue', options.merge(
|
276
276
|
'cmtitle' => category,
|
277
|
+
'continue' => '', # new format, per https://www.mediawiki.org/wiki/API:Query#Continuing_queries
|
277
278
|
'cmlimit' => @options[:limit]
|
278
279
|
))
|
279
280
|
end
|
@@ -341,6 +342,19 @@ module MediaWiki
|
|
341
342
|
end
|
342
343
|
end
|
343
344
|
|
345
|
+
# Purge MediaWiki page. Does not follow redirects.
|
346
|
+
#
|
347
|
+
# [page_titles] Page titles to purge
|
348
|
+
# [options] Hash of additional options
|
349
|
+
#
|
350
|
+
# Returns purge object
|
351
|
+
def purge(page_titles, options = {})
|
352
|
+
page = send_request(options.merge(
|
353
|
+
'action' => 'purge',
|
354
|
+
'titles' => page_titles
|
355
|
+
))
|
356
|
+
end
|
357
|
+
|
344
358
|
# Convenience wrapper for _langlinks_ returning the title in language _lang_ (ISO code) for a given article of pageid, if it exists, via the interlanguage link
|
345
359
|
#
|
346
360
|
# Example:
|
@@ -25,7 +25,7 @@ module MediaWiki
|
|
25
25
|
if namespaces
|
26
26
|
form_data['srnamespace'] = Array(namespaces).map! { |ns|
|
27
27
|
namespaces_by_prefix[ns]
|
28
|
-
}.join('|')
|
28
|
+
}.compact.join('|')
|
29
29
|
end
|
30
30
|
|
31
31
|
begin
|
@@ -55,13 +55,13 @@ module MediaWiki
|
|
55
55
|
if smw_version.to_f >= 1.7
|
56
56
|
send_request(options.merge(
|
57
57
|
'action' => 'ask',
|
58
|
-
'query' =>
|
58
|
+
'query' => [query, *params].join('|')
|
59
59
|
))
|
60
60
|
else
|
61
61
|
send_request(options.merge(
|
62
62
|
'action' => 'parse',
|
63
63
|
'prop' => 'text',
|
64
|
-
'text' => "{{#ask:#{query
|
64
|
+
'text' => "{{#ask:#{[query, 'format=list', *params].join('|')}}}"
|
65
65
|
)).elements['parse/text'].text
|
66
66
|
end
|
67
67
|
end
|
@@ -37,8 +37,8 @@ module MediaWiki
|
|
37
37
|
|
38
38
|
# Get user contributions
|
39
39
|
#
|
40
|
-
# user
|
41
|
-
# count
|
40
|
+
# [user] The user name
|
41
|
+
# [count] Maximum number of contributions to retrieve, or nil for all
|
42
42
|
# [options] Optional hash of options, eg. { 'ucnamespace' => 4 }. See http://www.mediawiki.org/wiki/API:Usercontribs
|
43
43
|
#
|
44
44
|
# Returns array of hashes containing the "item" attributes defined here: http://www.mediawiki.org/wiki/API:Usercontribs
|
@@ -51,6 +51,7 @@ module MediaWiki
|
|
51
51
|
)) { |element|
|
52
52
|
result << hash = {}
|
53
53
|
element.attributes.each { |key, value| hash[key] = value }
|
54
|
+
break if count && result.size >= count
|
54
55
|
}
|
55
56
|
|
56
57
|
count ? result.take(count) : result
|
data/lib/media_wiki/version.rb
CHANGED
@@ -753,7 +753,7 @@ end
|
|
753
753
|
unless (pool_size = Integer(ENV['LIVE_POOL_SIZE'] || 2)) > 1
|
754
754
|
warn 'Docker pool size must be greater than 1.'
|
755
755
|
else
|
756
|
-
ENV.fetch('LIVE_VERSION', '1.23.
|
756
|
+
ENV.fetch('LIVE_VERSION', '1.23.7').split(/[\s:,]/).each { |version|
|
757
757
|
describe_live(MediaWiki::Gateway, version: version, pool_size: pool_size) {
|
758
758
|
include_examples 'live gateway'
|
759
759
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediawiki-gateway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jani Patokallio
|
@@ -9,124 +9,124 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-01-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - ~>
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '1.7'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '1.7'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: equivalent-xml
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - '>='
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - '>='
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: nokogiri
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- -
|
46
|
+
- - '>='
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- -
|
53
|
+
- - '>='
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: sham_rack
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - '>='
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - '>='
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: sinatra
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - '>='
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - '>='
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: hen
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- -
|
88
|
+
- - ~>
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0.8'
|
91
|
-
- -
|
91
|
+
- - '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
version: 0.8.
|
93
|
+
version: 0.8.3
|
94
94
|
type: :development
|
95
95
|
prerelease: false
|
96
96
|
version_requirements: !ruby/object:Gem::Requirement
|
97
97
|
requirements:
|
98
|
-
- -
|
98
|
+
- - ~>
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '0.8'
|
101
|
-
- -
|
101
|
+
- - '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.8.
|
103
|
+
version: 0.8.3
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: rake
|
106
106
|
requirement: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
- !ruby/object:Gem::Dependency
|
119
119
|
name: rspec
|
120
120
|
requirement: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - '>='
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
type: :development
|
126
126
|
prerelease: false
|
127
127
|
version_requirements: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - '>='
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
description: A Ruby framework for MediaWiki API manipulation.
|
@@ -141,11 +141,6 @@ extra_rdoc_files:
|
|
141
141
|
- ChangeLog
|
142
142
|
- README.md
|
143
143
|
files:
|
144
|
-
- COPYING
|
145
|
-
- ChangeLog
|
146
|
-
- README.md
|
147
|
-
- Rakefile
|
148
|
-
- bin/mediawiki-gateway
|
149
144
|
- lib/media_wiki.rb
|
150
145
|
- lib/media_wiki/exception.rb
|
151
146
|
- lib/media_wiki/fake_wiki.rb
|
@@ -158,6 +153,11 @@ files:
|
|
158
153
|
- lib/media_wiki/utils.rb
|
159
154
|
- lib/media_wiki/version.rb
|
160
155
|
- lib/mediawiki-gateway.rb
|
156
|
+
- bin/mediawiki-gateway
|
157
|
+
- COPYING
|
158
|
+
- ChangeLog
|
159
|
+
- README.md
|
160
|
+
- Rakefile
|
161
161
|
- spec/data/import.xml
|
162
162
|
- spec/media_wiki/gateway/files_spec.rb
|
163
163
|
- spec/media_wiki/gateway/pages_spec.rb
|
@@ -174,47 +174,45 @@ licenses:
|
|
174
174
|
metadata: {}
|
175
175
|
post_install_message: |2+
|
176
176
|
|
177
|
-
mediawiki-gateway-1.
|
177
|
+
mediawiki-gateway-1.1.0 [2016-01-05]:
|
178
178
|
|
179
|
-
*
|
180
|
-
*
|
181
|
-
*
|
182
|
-
|
183
|
-
*
|
184
|
-
|
185
|
-
*
|
186
|
-
|
187
|
-
*
|
188
|
-
|
189
|
-
* MediaWiki::Gateway#
|
190
|
-
|
191
|
-
* Changed or removed some of the dependencies.
|
192
|
-
* Housekeeping and internal refactoring.
|
179
|
+
* Allow empty params for semantic_query.
|
180
|
+
* Add a method to purge a page. Pull request #93 by MusikAnimal.
|
181
|
+
* Follow redirects if HTTP 301, 302 or 307 is returned. Pull request #86
|
182
|
+
by Brandon Liu.
|
183
|
+
* Change exception superclass to StandardError. Pull request #85 by
|
184
|
+
Brandon Liu.
|
185
|
+
* Fixed categorymembers to use new continue rules. Pull request #82
|
186
|
+
by Asaf Bartov.
|
187
|
+
* Fix search to return nil if namespace not found. Pull request #88 by
|
188
|
+
Alexander Adrianov.
|
189
|
+
* Fixed MediaWiki::Gateway::Users#contributions to not continue when enough
|
190
|
+
contributions have been received. Pull request #79 by Michaël Witrant.
|
193
191
|
|
194
192
|
rdoc_options:
|
195
|
-
-
|
196
|
-
- mediawiki-gateway Application documentation (v1.
|
197
|
-
-
|
193
|
+
- --title
|
194
|
+
- mediawiki-gateway Application documentation (v1.1.0)
|
195
|
+
- --charset
|
198
196
|
- UTF-8
|
199
|
-
-
|
200
|
-
-
|
201
|
-
-
|
197
|
+
- --line-numbers
|
198
|
+
- --all
|
199
|
+
- --main
|
202
200
|
- README.md
|
203
201
|
require_paths:
|
204
202
|
- lib
|
205
203
|
required_ruby_version: !ruby/object:Gem::Requirement
|
206
204
|
requirements:
|
207
|
-
- -
|
205
|
+
- - '>='
|
208
206
|
- !ruby/object:Gem::Version
|
209
207
|
version: 1.9.3
|
210
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
209
|
requirements:
|
212
|
-
- -
|
210
|
+
- - '>='
|
213
211
|
- !ruby/object:Gem::Version
|
214
212
|
version: '0'
|
215
213
|
requirements: []
|
216
214
|
rubyforge_project:
|
217
|
-
rubygems_version: 2.
|
215
|
+
rubygems_version: 2.0.14
|
218
216
|
signing_key:
|
219
217
|
specification_version: 4
|
220
218
|
summary: Connect to the MediaWiki API.
|