mediawiki-gateway 0.1.0 → 0.1.1
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.
- data/README +4 -0
- data/Rakefile +4 -3
- data/VERSION +1 -1
- data/doc/classes/MediaWiki.html +8 -8
- data/doc/classes/MediaWiki/Config.html +71 -71
- data/doc/classes/MediaWiki/Gateway.html +474 -262
- data/doc/created.rid +1 -1
- data/doc/files/{README_txt.html → README.html} +8 -5
- data/doc/files/{script/delete_book_rb.html → lib/media_wiki/config_rb.html} +7 -6
- data/doc/files/{media_wiki → lib/media_wiki}/gateway_rb.html +3 -4
- data/doc/files/{media_wiki → lib/media_wiki}/utils_rb.html +2 -2
- data/doc/files/script/create_page_rb.html +2 -3
- data/doc/files/{media_wiki/config_rb.html → script/delete_batch_rb.html} +5 -5
- data/doc/files/script/export_xml_rb.html +2 -2
- data/doc/files/script/get_page_rb.html +2 -2
- data/doc/files/script/import_xml_rb.html +2 -2
- data/doc/files/script/run_fake_media_wiki_rb.html +117 -0
- data/doc/files/script/upload_commons_rb.html +2 -3
- data/doc/files/script/upload_file_rb.html +2 -3
- data/doc/fr_file_index.html +6 -6
- data/doc/fr_method_index.html +13 -11
- data/doc/index.html +1 -1
- data/lib/media_wiki/gateway.rb +128 -15
- data/mediawiki-gateway.gemspec +12 -10
- data/script/create_page.rb +1 -2
- data/script/{delete_book.rb → delete_batch.rb} +1 -1
- data/script/export_xml.rb +1 -1
- data/script/get_page.rb +1 -1
- data/script/import_xml.rb +1 -1
- data/script/upload_commons.rb +1 -2
- data/script/upload_file.rb +1 -2
- data/spec/gateway_spec.rb +1 -1
- metadata +26 -14
- data/doc/files/script/undelete_page_rb.html +0 -101
- data/script/undelete_page.rb +0 -15
data/doc/index.html
CHANGED
data/lib/media_wiki/gateway.rb
CHANGED
@@ -152,28 +152,141 @@ module MediaWiki
|
|
152
152
|
titles += REXML::XPath.match(make_api_request(form_data), "//p").map { |x| x.attributes["title"] }
|
153
153
|
end
|
154
154
|
|
155
|
-
# Upload file
|
155
|
+
# Upload a file, or get the status of pending uploads. Several
|
156
|
+
# methods are available:
|
157
|
+
#
|
158
|
+
# * Upload file contents directly.
|
159
|
+
# * Have the MediaWiki server fetch a file from a URL, using the
|
160
|
+
# "url" parameter
|
161
|
+
#
|
156
162
|
# Requires Mediawiki 1.16+
|
157
163
|
#
|
158
|
-
#
|
159
|
-
# [
|
164
|
+
# Arguments:
|
165
|
+
# * [path] Path to file to upload. Set to nil if uploading from URL.
|
166
|
+
# * [options] Hash of additional options
|
167
|
+
#
|
168
|
+
# Note that queries using session keys must be done in the same login
|
169
|
+
# session as the query that originally returned the key (i.e. do not
|
170
|
+
# log out and then log back in).
|
160
171
|
#
|
161
172
|
# Options:
|
162
|
-
# * [
|
163
|
-
# *
|
164
|
-
# *
|
173
|
+
# * 'filename' - Target filename (defaults to local name if not given), options[:target] is alias for this.
|
174
|
+
# * 'comment' - Upload comment. Also used as the initial page text for new files if "text" is not specified.
|
175
|
+
# * 'text' - Initial page text for new files
|
176
|
+
# * 'watch' - Watch the page
|
177
|
+
# * 'ignorewarnings' - Ignore any warnings
|
178
|
+
# * 'url' - Url to fetch the file from. Set path to nil if you want to use this.
|
179
|
+
#
|
180
|
+
# Deprecated but still supported options:
|
181
|
+
# * :description - Description of this file. Used as 'text'.
|
182
|
+
# * :target - Target filename, same as 'filename'.
|
183
|
+
# * :summary - Edit summary for history. Used as 'comment'. Also used as 'text' if neither it or :description is specified.
|
184
|
+
#
|
185
|
+
# Examples:
|
186
|
+
# mw.upload('/path/to/local/file.jpg', 'filename' => "RemoteFile.jpg")
|
187
|
+
# mw.upload(nil, 'filename' => "RemoteFile2.jpg", 'url' => 'http://remote.com/server/file.jpg')
|
188
|
+
#
|
165
189
|
def upload(path, options={})
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
'
|
173
|
-
|
174
|
-
|
190
|
+
if options[:description]
|
191
|
+
options['text'] = options[:description]
|
192
|
+
options.delete(:description)
|
193
|
+
end
|
194
|
+
|
195
|
+
if options[:target]
|
196
|
+
options['filename'] = options[:target]
|
197
|
+
options.delete(:target)
|
198
|
+
end
|
199
|
+
|
200
|
+
if options[:summary]
|
201
|
+
options['text'] ||= options[:summary]
|
202
|
+
options['comment'] = options[:summary]
|
203
|
+
options.delete(:summary)
|
204
|
+
end
|
205
|
+
|
206
|
+
options['comment'] ||= "Uploaded by MediaWiki::Gateway"
|
207
|
+
options['file'] = File.new(path) if path
|
208
|
+
full_name = path || options['url']
|
209
|
+
options['filename'] ||= File.basename(full_name) if full_name
|
210
|
+
|
211
|
+
raise ArgumentError.new(
|
212
|
+
"One of the 'file', 'url' or 'sessionkey' options must be specified!"
|
213
|
+
) unless options['file'] || options['url'] || options['sessionkey']
|
214
|
+
|
215
|
+
form_data = options.merge(
|
216
|
+
'action' => 'upload',
|
217
|
+
'token' => get_token('edit', options['filename'])
|
218
|
+
)
|
219
|
+
|
175
220
|
make_api_request(form_data)
|
176
221
|
end
|
222
|
+
|
223
|
+
# Requests image info from MediaWiki. Follows redirects.
|
224
|
+
#
|
225
|
+
# _file_name_or_page_id_ should be either:
|
226
|
+
# * a file name (String) you want info about without File: prefix.
|
227
|
+
# * or a Fixnum page id you of the file.
|
228
|
+
#
|
229
|
+
# _options_ is +Hash+ passed as query arguments. See
|
230
|
+
# http://www.mediawiki.org/wiki/API:Query_-_Properties#imageinfo_.2F_ii
|
231
|
+
# for more information.
|
232
|
+
#
|
233
|
+
# options['iiprop'] should be either a string of properties joined by
|
234
|
+
# '|' or an +Array+ (or more precisely something that responds to #join).
|
235
|
+
#
|
236
|
+
# +Hash+ like object is returned where keys are image properties.
|
237
|
+
#
|
238
|
+
# Example:
|
239
|
+
# mw.image_info(
|
240
|
+
# "Trooper.jpg", 'iiprop' => ['timestamp', 'user']
|
241
|
+
# ).each do |key, value|
|
242
|
+
# puts "#{key.inspect} => #{value.inspect}"
|
243
|
+
# end
|
244
|
+
#
|
245
|
+
# Output:
|
246
|
+
# "timestamp" => "2009-10-31T12:59:11Z"
|
247
|
+
# "user" => "Valdas"
|
248
|
+
#
|
249
|
+
def image_info(file_name_or_page_id, options={})
|
250
|
+
options['iiprop'] = options['iiprop'].join('|') \
|
251
|
+
if options['iiprop'].respond_to?(:join)
|
252
|
+
form_data = options.merge(
|
253
|
+
'action' => 'query',
|
254
|
+
'prop' => 'imageinfo',
|
255
|
+
'redirects' => true
|
256
|
+
)
|
257
|
+
|
258
|
+
case file_name_or_page_id
|
259
|
+
when Fixnum
|
260
|
+
form_data['pageids'] = file_name_or_page_id
|
261
|
+
else
|
262
|
+
form_data['titles'] = "File:#{file_name_or_page_id}"
|
263
|
+
end
|
264
|
+
|
265
|
+
xml = make_api_request(form_data)
|
266
|
+
page = xml.elements["query/pages/page"]
|
267
|
+
if ! page or page.attributes["missing"]
|
268
|
+
nil
|
269
|
+
elsif xml.elements["query/redirects/r"]
|
270
|
+
# We're dealing with redirect here.
|
271
|
+
image_info(page.attributes["pageid"].to_i, options)
|
272
|
+
else
|
273
|
+
page.elements["imageinfo/ii"].attributes
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
277
|
+
# Download _file_name_. Returns file contents. All options are passed to
|
278
|
+
# #image_info however options['iiprop'] is forced to url. You can still
|
279
|
+
# set other options to control what file you want to download.
|
280
|
+
def download(file_name, options={})
|
281
|
+
options['iiprop'] = 'url'
|
282
|
+
|
283
|
+
attributes = image_info(file_name, options)
|
284
|
+
if attributes
|
285
|
+
RestClient.get attributes['url']
|
286
|
+
else
|
287
|
+
nil
|
288
|
+
end
|
289
|
+
end
|
177
290
|
|
178
291
|
# Imports a MediaWiki XML dump
|
179
292
|
#
|
data/mediawiki-gateway.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mediawiki-gateway}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jani Patokallio"]
|
12
|
-
s.date = %q{2010-10-
|
12
|
+
s.date = %q{2010-10-15}
|
13
13
|
s.description = %q{}
|
14
14
|
s.email = %q{jpatokal@iki.fi}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -25,16 +25,16 @@ Gem::Specification.new do |s|
|
|
25
25
|
"doc/classes/MediaWiki/Config.html",
|
26
26
|
"doc/classes/MediaWiki/Gateway.html",
|
27
27
|
"doc/created.rid",
|
28
|
-
"doc/files/
|
29
|
-
"doc/files/media_wiki/config_rb.html",
|
30
|
-
"doc/files/media_wiki/gateway_rb.html",
|
31
|
-
"doc/files/media_wiki/utils_rb.html",
|
28
|
+
"doc/files/README.html",
|
29
|
+
"doc/files/lib/media_wiki/config_rb.html",
|
30
|
+
"doc/files/lib/media_wiki/gateway_rb.html",
|
31
|
+
"doc/files/lib/media_wiki/utils_rb.html",
|
32
32
|
"doc/files/script/create_page_rb.html",
|
33
|
-
"doc/files/script/
|
33
|
+
"doc/files/script/delete_batch_rb.html",
|
34
34
|
"doc/files/script/export_xml_rb.html",
|
35
35
|
"doc/files/script/get_page_rb.html",
|
36
36
|
"doc/files/script/import_xml_rb.html",
|
37
|
-
"doc/files/script/
|
37
|
+
"doc/files/script/run_fake_media_wiki_rb.html",
|
38
38
|
"doc/files/script/upload_commons_rb.html",
|
39
39
|
"doc/files/script/upload_file_rb.html",
|
40
40
|
"doc/fr_class_index.html",
|
@@ -48,12 +48,11 @@ Gem::Specification.new do |s|
|
|
48
48
|
"lib/media_wiki/utils.rb",
|
49
49
|
"mediawiki-gateway.gemspec",
|
50
50
|
"script/create_page.rb",
|
51
|
-
"script/
|
51
|
+
"script/delete_batch.rb",
|
52
52
|
"script/export_xml.rb",
|
53
53
|
"script/get_page.rb",
|
54
54
|
"script/import_xml.rb",
|
55
55
|
"script/run_fake_media_wiki.rb",
|
56
|
-
"script/undelete_page.rb",
|
57
56
|
"script/upload_commons.rb",
|
58
57
|
"script/upload_file.rb",
|
59
58
|
"spec/fake_media_wiki/api_pages.rb",
|
@@ -80,9 +79,12 @@ Gem::Specification.new do |s|
|
|
80
79
|
s.specification_version = 3
|
81
80
|
|
82
81
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
82
|
+
s.add_runtime_dependency(%q<rest_client>, [">= 0"])
|
83
83
|
else
|
84
|
+
s.add_dependency(%q<rest_client>, [">= 0"])
|
84
85
|
end
|
85
86
|
else
|
87
|
+
s.add_dependency(%q<rest_client>, [">= 0"])
|
86
88
|
end
|
87
89
|
end
|
88
90
|
|
data/script/create_page.rb
CHANGED
@@ -2,8 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# Sample script for fetching a page's current contents in Wiki markup
|
4
4
|
#
|
5
|
-
require 'media_wiki
|
6
|
-
require 'media_wiki/config'
|
5
|
+
require 'lib/media_wiki'
|
7
6
|
|
8
7
|
config = MediaWiki::Config.new ARGV
|
9
8
|
config.abort("Name of article is mandatory.") unless config.article
|
data/script/export_xml.rb
CHANGED
data/script/get_page.rb
CHANGED
data/script/import_xml.rb
CHANGED
data/script/upload_commons.rb
CHANGED
data/script/upload_file.rb
CHANGED
@@ -2,8 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# Sample script for fetching a page's current contents in Wiki markup
|
4
4
|
#
|
5
|
-
require 'media_wiki
|
6
|
-
require 'media_wiki/config'
|
5
|
+
require 'lib/media_wiki'
|
7
6
|
|
8
7
|
config = MediaWiki::Config.new(ARGV, "upload")
|
9
8
|
config.abort("Name of file to upload is mandatory.") unless ARGV[0]
|
data/spec/gateway_spec.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediawiki-gateway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jani Patokallio
|
@@ -15,10 +15,23 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-15 00:00:00 +11:00
|
19
19
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rest_client
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
22
35
|
description: ""
|
23
36
|
email: jpatokal@iki.fi
|
24
37
|
executables: []
|
@@ -37,16 +50,16 @@ files:
|
|
37
50
|
- doc/classes/MediaWiki/Config.html
|
38
51
|
- doc/classes/MediaWiki/Gateway.html
|
39
52
|
- doc/created.rid
|
40
|
-
- doc/files/
|
41
|
-
- doc/files/media_wiki/config_rb.html
|
42
|
-
- doc/files/media_wiki/gateway_rb.html
|
43
|
-
- doc/files/media_wiki/utils_rb.html
|
53
|
+
- doc/files/README.html
|
54
|
+
- doc/files/lib/media_wiki/config_rb.html
|
55
|
+
- doc/files/lib/media_wiki/gateway_rb.html
|
56
|
+
- doc/files/lib/media_wiki/utils_rb.html
|
44
57
|
- doc/files/script/create_page_rb.html
|
45
|
-
- doc/files/script/
|
58
|
+
- doc/files/script/delete_batch_rb.html
|
46
59
|
- doc/files/script/export_xml_rb.html
|
47
60
|
- doc/files/script/get_page_rb.html
|
48
61
|
- doc/files/script/import_xml_rb.html
|
49
|
-
- doc/files/script/
|
62
|
+
- doc/files/script/run_fake_media_wiki_rb.html
|
50
63
|
- doc/files/script/upload_commons_rb.html
|
51
64
|
- doc/files/script/upload_file_rb.html
|
52
65
|
- doc/fr_class_index.html
|
@@ -60,12 +73,11 @@ files:
|
|
60
73
|
- lib/media_wiki/utils.rb
|
61
74
|
- mediawiki-gateway.gemspec
|
62
75
|
- script/create_page.rb
|
63
|
-
- script/
|
76
|
+
- script/delete_batch.rb
|
64
77
|
- script/export_xml.rb
|
65
78
|
- script/get_page.rb
|
66
79
|
- script/import_xml.rb
|
67
80
|
- script/run_fake_media_wiki.rb
|
68
|
-
- script/undelete_page.rb
|
69
81
|
- script/upload_commons.rb
|
70
82
|
- script/upload_file.rb
|
71
83
|
- spec/fake_media_wiki/api_pages.rb
|
@@ -1,101 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
-
<!DOCTYPE html
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
-
|
6
|
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
7
|
-
<head>
|
8
|
-
<title>File: undelete_page.rb</title>
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
-
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
11
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
12
|
-
<script type="text/javascript">
|
13
|
-
// <![CDATA[
|
14
|
-
|
15
|
-
function popupCode( url ) {
|
16
|
-
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
17
|
-
}
|
18
|
-
|
19
|
-
function toggleCode( id ) {
|
20
|
-
if ( document.getElementById )
|
21
|
-
elem = document.getElementById( id );
|
22
|
-
else if ( document.all )
|
23
|
-
elem = eval( "document.all." + id );
|
24
|
-
else
|
25
|
-
return false;
|
26
|
-
|
27
|
-
elemStyle = elem.style;
|
28
|
-
|
29
|
-
if ( elemStyle.display != "block" ) {
|
30
|
-
elemStyle.display = "block"
|
31
|
-
} else {
|
32
|
-
elemStyle.display = "none"
|
33
|
-
}
|
34
|
-
|
35
|
-
return true;
|
36
|
-
}
|
37
|
-
|
38
|
-
// Make codeblocks hidden by default
|
39
|
-
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
|
40
|
-
|
41
|
-
// ]]>
|
42
|
-
</script>
|
43
|
-
|
44
|
-
</head>
|
45
|
-
<body>
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
<div id="fileHeader">
|
50
|
-
<h1>undelete_page.rb</h1>
|
51
|
-
<table class="header-table">
|
52
|
-
<tr class="top-aligned-row">
|
53
|
-
<td><strong>Path:</strong></td>
|
54
|
-
<td>script/undelete_page.rb
|
55
|
-
</td>
|
56
|
-
</tr>
|
57
|
-
<tr class="top-aligned-row">
|
58
|
-
<td><strong>Last Update:</strong></td>
|
59
|
-
<td>Thu Aug 05 17:26:12 +1000 2010</td>
|
60
|
-
</tr>
|
61
|
-
</table>
|
62
|
-
</div>
|
63
|
-
<!-- banner header -->
|
64
|
-
|
65
|
-
<div id="bodyContent">
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
<div id="contextContent">
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
</div>
|
74
|
-
|
75
|
-
|
76
|
-
</div>
|
77
|
-
|
78
|
-
|
79
|
-
<!-- if includes -->
|
80
|
-
|
81
|
-
<div id="section">
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
<!-- if method_list -->
|
91
|
-
|
92
|
-
|
93
|
-
</div>
|
94
|
-
|
95
|
-
|
96
|
-
<div id="validator-badges">
|
97
|
-
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
98
|
-
</div>
|
99
|
-
|
100
|
-
</body>
|
101
|
-
</html>
|