mediawiki-gateway 0.2.6 → 0.3.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.
- data/README +14 -5
- data/Rakefile +3 -2
- data/doc/classes/MediaWiki.html +16 -14
- data/doc/classes/MediaWiki/Gateway.html +381 -328
- data/doc/created.rid +1 -1
- data/doc/files/README.html +37 -10
- data/doc/files/lib/media_wiki/gateway_rb.html +1 -1
- data/doc/files/lib/media_wiki/utils_rb.html +1 -1
- data/lib/media_wiki.rb +1 -1
- data/lib/media_wiki/gateway.rb +49 -26
- data/mediawiki-gateway.gemspec +13 -8
- data/spec/fake_media_wiki/app.rb +3 -1
- data/spec/gateway_spec.rb +22 -13
- data/spec/spec_helper.rb +16 -0
- data/spec/utils_spec.rb +1 -1
- metadata +23 -7
data/README
CHANGED
@@ -1,13 +1,20 @@
|
|
1
1
|
= MediaWiki::Gateway
|
2
2
|
|
3
|
-
Ruby framework for MediaWiki API manipulation
|
3
|
+
A Ruby framework for MediaWiki API manipulation. Features out of the box:
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
* Simple, elegant syntax for common operations
|
6
|
+
* Handles login, edit, move etc tokens for you
|
7
|
+
* Support for maxlag detection and automated retries on 503
|
8
|
+
* Integrated logging
|
9
|
+
* Tested up to MediaWiki 1.16
|
10
|
+
|
11
|
+
Gem: http://rubygems.org/gems/mediawiki-gateway
|
12
|
+
RDoc: http://rubydoc.info/gems/mediawiki-gateway
|
13
|
+
Git: https://github.com/jpatokal/mediawiki-gateway
|
7
14
|
|
8
15
|
== Example
|
9
16
|
|
10
|
-
|
17
|
+
Simple page creation script:
|
11
18
|
|
12
19
|
require 'media_wiki'
|
13
20
|
mw = MediaWiki::Gateway.new('http://my-wiki.example/w/api.php')
|
@@ -16,5 +23,7 @@
|
|
16
23
|
|
17
24
|
== Credits
|
18
25
|
|
19
|
-
|
26
|
+
Maintained by Jani Patokallio.
|
27
|
+
|
28
|
+
Thanks to John Carney, Mike Williams, Daniel Heath and the rest of the Lonely Planet Atlas team.
|
20
29
|
|
data/Rakefile
CHANGED
@@ -37,9 +37,10 @@ begin
|
|
37
37
|
gemspec.authors = ["Jani Patokallio"]
|
38
38
|
gemspec.version = MediaWiki::VERSION
|
39
39
|
gemspec.add_dependency 'rest-client'
|
40
|
-
gemspec.add_development_dependency 'sham_rack'
|
41
|
-
gemspec.add_development_dependency 'jeweler'
|
42
40
|
gemspec.add_development_dependency 'activesupport'
|
41
|
+
gemspec.add_development_dependency 'jeweler'
|
42
|
+
gemspec.add_development_dependency 'sham_rack'
|
43
|
+
gemspec.add_development_dependency 'rr'
|
43
44
|
end
|
44
45
|
rescue LoadError
|
45
46
|
puts "Jeweler not available. Install it with: gem install jeweler"
|
data/doc/classes/MediaWiki.html
CHANGED
@@ -211,7 +211,9 @@ href="MediaWiki.html#M000002">get_subpage</a>("Namespace:Foo")
|
|
211
211
|
<div class="method-description">
|
212
212
|
<p>
|
213
213
|
Convert URL-ized page name ("getting_there_%26_away") into Wiki
|
214
|
-
display format page name ("getting there & away")
|
214
|
+
display format page name ("getting there & away"). Also
|
215
|
+
strips out any illegal characters (#<>[]|{}, cf. <a
|
216
|
+
href="http://meta.wikimedia.org/wiki/Help:Page_name#Restrictions">meta.wikimedia.org/wiki/Help:Page_name#Restrictions</a>).
|
215
217
|
</p>
|
216
218
|
<dl>
|
217
219
|
<dt>wiki</dt><dd>Page name string in URL
|
@@ -222,10 +224,10 @@ display format page name ("getting there & away")
|
|
222
224
|
onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
|
223
225
|
<div class="method-source-code" id="M000003-source">
|
224
226
|
<pre>
|
225
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line
|
226
|
-
|
227
|
-
|
228
|
-
|
227
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line 31</span>
|
228
|
+
31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">uri_to_wiki</span>(<span class="ruby-identifier">uri</span>)
|
229
|
+
32: <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">unescape</span>(<span class="ruby-identifier">uri</span>).<span class="ruby-identifier">tr</span>(<span class="ruby-value str">'_'</span>, <span class="ruby-value str">' '</span>).<span class="ruby-identifier">tr</span>(<span class="ruby-value str">'#<>[]|{}'</span>, <span class="ruby-value str">''</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri</span>
|
230
|
+
33: <span class="ruby-keyword kw">end</span>
|
229
231
|
</pre>
|
230
232
|
</div>
|
231
233
|
</div>
|
@@ -249,10 +251,10 @@ href="MediaWiki/Gateway.html">MediaWiki::Gateway</a>
|
|
249
251
|
onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
|
250
252
|
<div class="method-source-code" id="M000005-source">
|
251
253
|
<pre>
|
252
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line
|
253
|
-
|
254
|
-
|
255
|
-
|
254
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line 43</span>
|
255
|
+
43: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">version</span>
|
256
|
+
44: <span class="ruby-constant">MediaWiki</span><span class="ruby-operator">::</span><span class="ruby-constant">VERSION</span>
|
257
|
+
45: <span class="ruby-keyword kw">end</span>
|
256
258
|
</pre>
|
257
259
|
</div>
|
258
260
|
</div>
|
@@ -271,7 +273,7 @@ href="MediaWiki/Gateway.html">MediaWiki::Gateway</a>
|
|
271
273
|
<p>
|
272
274
|
Convert a Wiki page name ("getting there & away") to URI-safe
|
273
275
|
format ("getting_there_%26_away"), taking care not to mangle
|
274
|
-
slashes
|
276
|
+
slashes or colons
|
275
277
|
</p>
|
276
278
|
<dl>
|
277
279
|
<dt>wiki</dt><dd>Page name string in Wiki format
|
@@ -282,10 +284,10 @@ slashes
|
|
282
284
|
onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
|
283
285
|
<div class="method-source-code" id="M000004-source">
|
284
286
|
<pre>
|
285
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line
|
286
|
-
|
287
|
-
|
288
|
-
|
287
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line 38</span>
|
288
|
+
38: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wiki_to_uri</span>(<span class="ruby-identifier">wiki</span>)
|
289
|
+
39: <span class="ruby-identifier">wiki</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">chunk</span><span class="ruby-operator">|</span> <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">escape</span>(<span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">tr</span>(<span class="ruby-value str">' '</span>, <span class="ruby-value str">'_'</span>)) }.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'%3A'</span>, <span class="ruby-value str">':'</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">wiki</span>
|
290
|
+
40: <span class="ruby-keyword kw">end</span>
|
289
291
|
</pre>
|
290
292
|
</div>
|
291
293
|
</div>
|
@@ -120,19 +120,6 @@
|
|
120
120
|
<div id="section">
|
121
121
|
|
122
122
|
|
123
|
-
<div id="constants-list">
|
124
|
-
<h3 class="section-bar">Constants</h3>
|
125
|
-
|
126
|
-
<div class="name-list">
|
127
|
-
<table summary="Constants">
|
128
|
-
<tr class="top-aligned-row context-row">
|
129
|
-
<td class="context-item-name">API_MAX_LIMIT</td>
|
130
|
-
<td>=</td>
|
131
|
-
<td class="context-item-value">500</td>
|
132
|
-
</tr>
|
133
|
-
</table>
|
134
|
-
</div>
|
135
|
-
</div>
|
136
123
|
|
137
124
|
|
138
125
|
|
@@ -146,6 +133,11 @@
|
|
146
133
|
<td class="context-item-value"> [R] </td>
|
147
134
|
<td class="context-item-desc"></td>
|
148
135
|
</tr>
|
136
|
+
<tr class="top-aligned-row context-row">
|
137
|
+
<td class="context-item-name">log</td>
|
138
|
+
<td class="context-item-value"> [R] </td>
|
139
|
+
<td class="context-item-desc"></td>
|
140
|
+
</tr>
|
149
141
|
</table>
|
150
142
|
</div>
|
151
143
|
</div>
|
@@ -161,7 +153,7 @@
|
|
161
153
|
|
162
154
|
<div class="method-heading">
|
163
155
|
<a href="#M000006" class="method-signature">
|
164
|
-
<span class="method-name">new</span><span class="method-args">(url,
|
156
|
+
<span class="method-name">new</span><span class="method-args">(url, options={})</span>
|
165
157
|
</a>
|
166
158
|
</div>
|
167
159
|
|
@@ -176,7 +168,36 @@ href="../MediaWiki.html">MediaWiki</a> installation
|
|
176
168
|
href="http://en.wikipedia.org/w/api.php">en.wikipedia.org/w/api.php</a>")
|
177
169
|
|
178
170
|
</dd>
|
179
|
-
<dt>
|
171
|
+
<dt>options</dt><dd>Hash of options
|
172
|
+
|
173
|
+
</dd>
|
174
|
+
</dl>
|
175
|
+
<p>
|
176
|
+
Options:
|
177
|
+
</p>
|
178
|
+
<dl>
|
179
|
+
<dt>:limit</dt><dd>Maximum number of results returned per <a
|
180
|
+
href="Gateway.html#M000016">search</a> (see <a
|
181
|
+
href="http://www.mediawiki.org/wiki/API:Query_-_Lists#Limits">www.mediawiki.org/wiki/API:Query_-_Lists#Limits</a>),
|
182
|
+
defaults to the <a href="../MediaWiki.html">MediaWiki</a> default of 500.
|
183
|
+
|
184
|
+
</dd>
|
185
|
+
<dt>:loglevel</dt><dd>Log level to use, defaults to Logger::WARN. Set to Logger::DEBUG to dump
|
186
|
+
every request and response to the log.
|
187
|
+
|
188
|
+
</dd>
|
189
|
+
<dt>:maxlag</dt><dd>Maximum allowed server lag (see <a
|
190
|
+
href="http://www.mediawiki.org/wiki/Manual:Maxlag_parameter">www.mediawiki.org/wiki/Manual:Maxlag_parameter</a>),
|
191
|
+
defaults to 5 seconds.
|
192
|
+
|
193
|
+
</dd>
|
194
|
+
<dt>:retry_count</dt><dd>Number of times to try before giving up if <a
|
195
|
+
href="../MediaWiki.html">MediaWiki</a> returns 503 Service Unavailable,
|
196
|
+
defaults to 3 (original request plus two retries).
|
197
|
+
|
198
|
+
</dd>
|
199
|
+
<dt>:retry_delay</dt><dd>Seconds to wait before retry if <a href="../MediaWiki.html">MediaWiki</a>
|
200
|
+
returns 503 Service Unavailable, defaults to 10 seconds.
|
180
201
|
|
181
202
|
</dd>
|
182
203
|
</dl>
|
@@ -184,14 +205,22 @@ href="http://en.wikipedia.org/w/api.php">en.wikipedia.org/w/api.php</a>")
|
|
184
205
|
onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
|
185
206
|
<div class="method-source-code" id="M000006-source">
|
186
207
|
<pre>
|
187
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
208
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 23</span>
|
209
|
+
23: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">url</span>, <span class="ruby-identifier">options</span>={})
|
210
|
+
24: <span class="ruby-identifier">default_options</span> = {
|
211
|
+
25: <span class="ruby-identifier">:limit</span> =<span class="ruby-operator">></span> <span class="ruby-value">500</span>,
|
212
|
+
26: <span class="ruby-identifier">:loglevel</span> =<span class="ruby-operator">></span> <span class="ruby-constant">Logger</span><span class="ruby-operator">::</span><span class="ruby-constant">WARN</span>,
|
213
|
+
27: <span class="ruby-identifier">:maxlag</span> =<span class="ruby-operator">></span> <span class="ruby-value">5</span>,
|
214
|
+
28: <span class="ruby-identifier">:retry_count</span> =<span class="ruby-operator">></span> <span class="ruby-value">3</span>,
|
215
|
+
29: <span class="ruby-identifier">:retry_delay</span> =<span class="ruby-operator">></span> <span class="ruby-value">10</span>
|
216
|
+
30: }
|
217
|
+
31: <span class="ruby-ivar">@options</span> = <span class="ruby-identifier">default_options</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">options</span>)
|
218
|
+
32: <span class="ruby-ivar">@wiki_url</span> = <span class="ruby-identifier">url</span>
|
219
|
+
33: <span class="ruby-ivar">@log</span> = <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">STDERR</span>)
|
220
|
+
34: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">level</span> = <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:loglevel</span>]
|
221
|
+
35: <span class="ruby-ivar">@headers</span> = { <span class="ruby-value str">"User-Agent"</span> =<span class="ruby-operator">></span> <span class="ruby-node">"MediaWiki::Gateway/#{MediaWiki::VERSION}"</span> }
|
222
|
+
36: <span class="ruby-ivar">@cookies</span> = {}
|
223
|
+
37: <span class="ruby-keyword kw">end</span>
|
195
224
|
</pre>
|
196
225
|
</div>
|
197
226
|
</div>
|
@@ -229,24 +258,24 @@ Returns array of page titles (empty if no matches)
|
|
229
258
|
onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
|
230
259
|
<div class="method-source-code" id="M000015-source">
|
231
260
|
<pre>
|
232
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
261
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 199</span>
|
262
|
+
199: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backlinks</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">filter</span> = <span class="ruby-value str">"all"</span>)
|
263
|
+
200: <span class="ruby-identifier">titles</span> = []
|
264
|
+
201: <span class="ruby-identifier">blcontinue</span> = <span class="ruby-keyword kw">nil</span>
|
265
|
+
202: <span class="ruby-keyword kw">begin</span>
|
266
|
+
203: <span class="ruby-identifier">form_data</span> =
|
267
|
+
204: {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>,
|
268
|
+
205: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'backlinks'</span>,
|
269
|
+
206: <span class="ruby-value str">'bltitle'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">title</span>,
|
270
|
+
207: <span class="ruby-value str">'blfilterredir'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">filter</span>,
|
271
|
+
208: <span class="ruby-value str">'bllimit'</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:limit</span>] }
|
272
|
+
209: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'blcontinue'</span>] = <span class="ruby-identifier">blcontinue</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">blcontinue</span>
|
273
|
+
210: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
274
|
+
211: <span class="ruby-identifier">blcontinue</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">'query-continue'</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">'query-continue/backlinks'</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'blcontinue'</span>] <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
|
275
|
+
212: <span class="ruby-identifier">titles</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">res</span>, <span class="ruby-value str">"//bl"</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"title"</span>] }
|
276
|
+
213: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">blcontinue</span>
|
277
|
+
214: <span class="ruby-identifier">titles</span>
|
278
|
+
215: <span class="ruby-keyword kw">end</span>
|
250
279
|
</pre>
|
251
280
|
</div>
|
252
281
|
</div>
|
@@ -282,13 +311,13 @@ string
|
|
282
311
|
Options:
|
283
312
|
</p>
|
284
313
|
<ul>
|
285
|
-
<li>[overwrite] Allow overwriting existing pages
|
314
|
+
<li>[:overwrite] Allow overwriting existing pages
|
286
315
|
|
287
316
|
</li>
|
288
|
-
<li>[summary] Edit summary for history, string
|
317
|
+
<li>[:summary] Edit summary for history, string
|
289
318
|
|
290
319
|
</li>
|
291
|
-
<li>[token] Use this existing edit token instead requesting a <a
|
320
|
+
<li>[:token] Use this existing edit token instead requesting a <a
|
292
321
|
href="Gateway.html#M000006">new</a> one (useful for bulk loads)
|
293
322
|
|
294
323
|
</li>
|
@@ -297,12 +326,12 @@ href="Gateway.html#M000006">new</a> one (useful for bulk loads)
|
|
297
326
|
onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
|
298
327
|
<div class="method-source-code" id="M000010-source">
|
299
328
|
<pre>
|
300
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
329
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 117</span>
|
330
|
+
117: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">content</span>, <span class="ruby-identifier">options</span>={})
|
331
|
+
118: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'edit'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'text'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">content</span>, <span class="ruby-value str">'summary'</span> =<span class="ruby-operator">></span> (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">""</span>), <span class="ruby-value str">'token'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'edit'</span>, <span class="ruby-identifier">title</span>)}
|
332
|
+
119: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'createonly'</span>] = <span class="ruby-value str">""</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:overwrite</span>]
|
333
|
+
120: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
334
|
+
121: <span class="ruby-keyword kw">end</span>
|
306
335
|
</pre>
|
307
336
|
</div>
|
308
337
|
</div>
|
@@ -331,11 +360,11 @@ support deleting multiple pages at a time.)
|
|
331
360
|
onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
|
332
361
|
<div class="method-source-code" id="M000012-source">
|
333
362
|
<pre>
|
334
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
363
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 147</span>
|
364
|
+
147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete</span>(<span class="ruby-identifier">title</span>)
|
365
|
+
148: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'delete'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'delete'</span>, <span class="ruby-identifier">title</span>)}
|
366
|
+
149: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
367
|
+
150: <span class="ruby-keyword kw">end</span>
|
339
368
|
</pre>
|
340
369
|
</div>
|
341
370
|
</div>
|
@@ -362,17 +391,17 @@ href="Gateway.html#M000019">download</a>.
|
|
362
391
|
onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
|
363
392
|
<div class="method-source-code" id="M000019-source">
|
364
393
|
<pre>
|
365
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
394
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 363</span>
|
395
|
+
363: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">download</span>(<span class="ruby-identifier">file_name</span>, <span class="ruby-identifier">options</span>={})
|
396
|
+
364: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>] = <span class="ruby-value str">'url'</span>
|
397
|
+
365:
|
398
|
+
366: <span class="ruby-identifier">attributes</span> = <span class="ruby-identifier">image_info</span>(<span class="ruby-identifier">file_name</span>, <span class="ruby-identifier">options</span>)
|
399
|
+
367: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attributes</span>
|
400
|
+
368: <span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">get</span> <span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'url'</span>]
|
401
|
+
369: <span class="ruby-keyword kw">else</span>
|
402
|
+
370: <span class="ruby-keyword kw">nil</span>
|
403
|
+
371: <span class="ruby-keyword kw">end</span>
|
404
|
+
372: <span class="ruby-keyword kw">end</span>
|
376
405
|
</pre>
|
377
406
|
</div>
|
378
407
|
</div>
|
@@ -403,11 +432,11 @@ Returns <a href="../MediaWiki.html">MediaWiki</a> XML dump
|
|
403
432
|
onclick="toggleCode('M000021-source');return false;">[Source]</a></p>
|
404
433
|
<div class="method-source-code" id="M000021-source">
|
405
434
|
<pre>
|
406
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
435
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 394</span>
|
436
|
+
394: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">export</span>(<span class="ruby-identifier">page_titles</span>)
|
437
|
+
395: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">></span> [<span class="ruby-identifier">page_titles</span>].<span class="ruby-identifier">join</span>(<span class="ruby-value str">'|'</span>), <span class="ruby-value str">'export'</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">'exportnowrap'</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">nil</span>}
|
438
|
+
396: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
439
|
+
397: <span class="ruby-keyword kw">end</span>
|
411
440
|
</pre>
|
412
441
|
</div>
|
413
442
|
</div>
|
@@ -435,16 +464,16 @@ version)
|
|
435
464
|
onclick="toggleCode('M000023-source');return false;">[Source]</a></p>
|
436
465
|
<div class="method-source-code" id="M000023-source">
|
437
466
|
<pre>
|
438
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
467
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 415</span>
|
468
|
+
415: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">extensions</span>
|
469
|
+
416: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'meta'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'siteinfo'</span>, <span class="ruby-value str">'siprop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'extensions'</span> }
|
470
|
+
417: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
471
|
+
418: <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">res</span>, <span class="ruby-value str">"//ext"</span>).<span class="ruby-identifier">inject</span>(<span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">extensions</span>, <span class="ruby-identifier">extension</span><span class="ruby-operator">|</span>
|
472
|
+
419: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">extension</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"name"</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">""</span>
|
473
|
+
420: <span class="ruby-identifier">extensions</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">extension</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"version"</span>]
|
474
|
+
421: <span class="ruby-identifier">extensions</span>
|
475
|
+
422: <span class="ruby-keyword kw">end</span>
|
476
|
+
423: <span class="ruby-keyword kw">end</span>
|
448
477
|
</pre>
|
449
478
|
</div>
|
450
479
|
</div>
|
@@ -476,16 +505,16 @@ Returns content of page as string, nil if the page does not exist
|
|
476
505
|
onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
|
477
506
|
<div class="method-source-code" id="M000008-source">
|
478
507
|
<pre>
|
479
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
508
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 60</span>
|
509
|
+
60: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get</span>(<span class="ruby-identifier">page_title</span>)
|
510
|
+
61: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'revisions'</span>, <span class="ruby-value str">'rvprop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'content'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">page_title</span>}
|
511
|
+
62: <span class="ruby-identifier">page</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>).<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/pages/page"</span>]
|
512
|
+
63: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span> <span class="ruby-identifier">page</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"missing"</span>]
|
513
|
+
64: <span class="ruby-keyword kw">nil</span>
|
514
|
+
65: <span class="ruby-keyword kw">else</span>
|
515
|
+
66: <span class="ruby-identifier">page</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"revisions/rev"</span>].<span class="ruby-identifier">text</span> <span class="ruby-operator">||</span> <span class="ruby-value str">""</span>
|
516
|
+
67: <span class="ruby-keyword kw">end</span>
|
517
|
+
68: <span class="ruby-keyword kw">end</span>
|
489
518
|
</pre>
|
490
519
|
</div>
|
491
520
|
</div>
|
@@ -550,34 +579,34 @@ Output:
|
|
550
579
|
onclick="toggleCode('M000018-source');return false;">[Source]</a></p>
|
551
580
|
<div class="method-source-code" id="M000018-source">
|
552
581
|
<pre>
|
553
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
582
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 332</span>
|
583
|
+
332: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">image_info</span>(<span class="ruby-identifier">file_name_or_page_id</span>, <span class="ruby-identifier">options</span>={})
|
584
|
+
333: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>].<span class="ruby-identifier">join</span>(<span class="ruby-value str">'|'</span>) \
|
585
|
+
334: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:join</span>)
|
586
|
+
335: <span class="ruby-identifier">form_data</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(
|
587
|
+
336: <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>,
|
588
|
+
337: <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'imageinfo'</span>,
|
589
|
+
338: <span class="ruby-value str">'redirects'</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">true</span>
|
590
|
+
339: )
|
591
|
+
340:
|
592
|
+
341: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">file_name_or_page_id</span>
|
593
|
+
342: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Fixnum</span>
|
594
|
+
343: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'pageids'</span>] = <span class="ruby-identifier">file_name_or_page_id</span>
|
595
|
+
344: <span class="ruby-keyword kw">else</span>
|
596
|
+
345: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'titles'</span>] = <span class="ruby-node">"File:#{file_name_or_page_id}"</span>
|
597
|
+
346: <span class="ruby-keyword kw">end</span>
|
598
|
+
347:
|
599
|
+
348: <span class="ruby-identifier">xml</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
600
|
+
349: <span class="ruby-identifier">page</span> = <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/pages/page"</span>]
|
601
|
+
350: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span> <span class="ruby-identifier">page</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"missing"</span>]
|
602
|
+
351: <span class="ruby-keyword kw">nil</span>
|
603
|
+
352: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/redirects/r"</span>]
|
604
|
+
353: <span class="ruby-comment cmt"># We're dealing with redirect here.</span>
|
605
|
+
354: <span class="ruby-identifier">image_info</span>(<span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"pageid"</span>].<span class="ruby-identifier">to_i</span>, <span class="ruby-identifier">options</span>)
|
606
|
+
355: <span class="ruby-keyword kw">else</span>
|
607
|
+
356: <span class="ruby-identifier">page</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"imageinfo/ii"</span>].<span class="ruby-identifier">attributes</span>
|
608
|
+
357: <span class="ruby-keyword kw">end</span>
|
609
|
+
358: <span class="ruby-keyword kw">end</span>
|
581
610
|
</pre>
|
582
611
|
</div>
|
583
612
|
</div>
|
@@ -611,14 +640,14 @@ href="Gateway.html#M000020">import</a>><page/><page/>…
|
|
611
640
|
onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
|
612
641
|
<div class="method-source-code" id="M000020-source">
|
613
642
|
<pre>
|
614
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
643
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 381</span>
|
644
|
+
381: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">import</span>(<span class="ruby-identifier">xmlfile</span>)
|
645
|
+
382: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">"action"</span> =<span class="ruby-operator">></span> <span class="ruby-value str">"import"</span>,
|
646
|
+
383: <span class="ruby-value str">"xml"</span> =<span class="ruby-operator">></span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">xmlfile</span>),
|
647
|
+
384: <span class="ruby-value str">"token"</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'import'</span>, <span class="ruby-value str">'Main Page'</span>), <span class="ruby-comment cmt"># NB: dummy page name</span>
|
648
|
+
385: <span class="ruby-value str">"format"</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'xml'</span> }
|
649
|
+
386: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
650
|
+
387: <span class="ruby-keyword kw">end</span>
|
622
651
|
</pre>
|
623
652
|
</div>
|
624
653
|
</div>
|
@@ -651,26 +680,26 @@ Returns array of page titles (empty if no matches)
|
|
651
680
|
onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
|
652
681
|
<div class="method-source-code" id="M000014-source">
|
653
682
|
<pre>
|
654
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
683
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 173</span>
|
684
|
+
173: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">list</span>(<span class="ruby-identifier">key</span>)
|
685
|
+
174: <span class="ruby-identifier">titles</span> = []
|
686
|
+
175: <span class="ruby-identifier">apfrom</span> = <span class="ruby-keyword kw">nil</span>
|
687
|
+
176: <span class="ruby-identifier">key</span>, <span class="ruby-identifier">namespace</span> = <span class="ruby-identifier">key</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">":"</span>, <span class="ruby-value">2</span>).<span class="ruby-identifier">reverse</span>
|
688
|
+
177: <span class="ruby-identifier">namespace</span> = <span class="ruby-identifier">namespaces_by_prefix</span>[<span class="ruby-identifier">namespace</span>] <span class="ruby-operator">||</span> <span class="ruby-value">0</span>
|
689
|
+
178: <span class="ruby-keyword kw">begin</span>
|
690
|
+
179: <span class="ruby-identifier">form_data</span> =
|
691
|
+
180: {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>,
|
692
|
+
181: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'allpages'</span>,
|
693
|
+
182: <span class="ruby-value str">'apfrom'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">apfrom</span>,
|
694
|
+
183: <span class="ruby-value str">'apprefix'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">key</span>,
|
695
|
+
184: <span class="ruby-value str">'aplimit'</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:limit</span>],
|
696
|
+
185: <span class="ruby-value str">'apnamespace'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">namespace</span>}
|
697
|
+
186: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
698
|
+
187: <span class="ruby-identifier">apfrom</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">'query-continue'</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">'query-continue/allpages'</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'apfrom'</span>] <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
|
699
|
+
188: <span class="ruby-identifier">titles</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">res</span>, <span class="ruby-value str">"//p"</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"title"</span>] }
|
700
|
+
189: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">apfrom</span>
|
701
|
+
190: <span class="ruby-identifier">titles</span>
|
702
|
+
191: <span class="ruby-keyword kw">end</span>
|
674
703
|
</pre>
|
675
704
|
</div>
|
676
705
|
</div>
|
@@ -708,13 +737,13 @@ Throws error if <a href="Gateway.html#M000007">login</a> fails
|
|
708
737
|
onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
|
709
738
|
<div class="method-source-code" id="M000007-source">
|
710
739
|
<pre>
|
711
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
740
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 48</span>
|
741
|
+
48: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">login</span>(<span class="ruby-identifier">username</span>, <span class="ruby-identifier">password</span>, <span class="ruby-identifier">domain</span> = <span class="ruby-value str">'local'</span>)
|
742
|
+
49: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'login'</span>, <span class="ruby-value str">'lgname'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">username</span>, <span class="ruby-value str">'lgpassword'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">password</span>, <span class="ruby-value str">'lgdomain'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">domain</span>}
|
743
|
+
50: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
744
|
+
51: <span class="ruby-ivar">@password</span> = <span class="ruby-identifier">password</span>
|
745
|
+
52: <span class="ruby-ivar">@username</span> = <span class="ruby-identifier">username</span>
|
746
|
+
53: <span class="ruby-keyword kw">end</span>
|
718
747
|
</pre>
|
719
748
|
</div>
|
720
749
|
</div>
|
@@ -748,10 +777,25 @@ Move a page to a <a href="Gateway.html#M000006">new</a> title
|
|
748
777
|
Options:
|
749
778
|
</p>
|
750
779
|
<ul>
|
751
|
-
<li>[movesubpages] Move associated subpages
|
780
|
+
<li>[:movesubpages] Move associated subpages
|
781
|
+
|
782
|
+
</li>
|
783
|
+
<li>[:movetalk] Move associated talkpages
|
784
|
+
|
785
|
+
</li>
|
786
|
+
<li>[:noredirect] Do not <a href="Gateway.html#M000010">create</a> a redirect
|
787
|
+
page from old name. Requires the ‘suppressredirect’ user right,
|
788
|
+
otherwise MW will silently ignore the option and <a
|
789
|
+
href="Gateway.html#M000010">create</a> the redirect anyway.
|
752
790
|
|
753
791
|
</li>
|
754
|
-
<li>[
|
792
|
+
<li>[:reason] Reason for <a href="Gateway.html#M000011">move</a>
|
793
|
+
|
794
|
+
</li>
|
795
|
+
<li>[:watch] Add page and any redirect to watchlist
|
796
|
+
|
797
|
+
</li>
|
798
|
+
<li>[:unwatch] Remove page and any redirect from watchlist
|
755
799
|
|
756
800
|
</li>
|
757
801
|
</ul>
|
@@ -759,14 +803,14 @@ Options:
|
|
759
803
|
onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
|
760
804
|
<div class="method-source-code" id="M000011-source">
|
761
805
|
<pre>
|
762
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
806
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 136</span>
|
807
|
+
136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">move</span>(<span class="ruby-identifier">from</span>, <span class="ruby-identifier">to</span>, <span class="ruby-identifier">options</span>={})
|
808
|
+
137: <span class="ruby-identifier">valid_options</span> = <span class="ruby-node">%w(movesubpages movetalk noredirect reason watch unwatch)</span>
|
809
|
+
138: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">opt</span><span class="ruby-operator">|</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">"Unknown option '#{opt}'"</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">valid_options</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">to_s</span>)}
|
810
|
+
139:
|
811
|
+
140: <span class="ruby-identifier">form_data</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'move'</span>, <span class="ruby-value str">'from'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">from</span>, <span class="ruby-value str">'to'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">to</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'move'</span>, <span class="ruby-identifier">from</span>)})
|
812
|
+
141: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
813
|
+
142: <span class="ruby-keyword kw">end</span>
|
770
814
|
</pre>
|
771
815
|
</div>
|
772
816
|
</div>
|
@@ -792,16 +836,16 @@ Returns array of namespaces (name => id)
|
|
792
836
|
onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
|
793
837
|
<div class="method-source-code" id="M000022-source">
|
794
838
|
<pre>
|
795
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
839
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 402</span>
|
840
|
+
402: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">namespaces_by_prefix</span>
|
841
|
+
403: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'meta'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'siteinfo'</span>, <span class="ruby-value str">'siprop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'namespaces'</span> }
|
842
|
+
404: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
843
|
+
405: <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">res</span>, <span class="ruby-value str">"//ns"</span>).<span class="ruby-identifier">inject</span>(<span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">namespaces</span>, <span class="ruby-identifier">namespace</span><span class="ruby-operator">|</span>
|
844
|
+
406: <span class="ruby-identifier">prefix</span> = <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"canonical"</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">""</span>
|
845
|
+
407: <span class="ruby-identifier">namespaces</span>[<span class="ruby-identifier">prefix</span>] = <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"id"</span>].<span class="ruby-identifier">to_i</span>
|
846
|
+
408: <span class="ruby-identifier">namespaces</span>
|
847
|
+
409: <span class="ruby-keyword kw">end</span>
|
848
|
+
410: <span class="ruby-keyword kw">end</span>
|
805
849
|
</pre>
|
806
850
|
</div>
|
807
851
|
</div>
|
@@ -832,14 +876,14 @@ Render a <a href="../MediaWiki.html">MediaWiki</a> page as HTML
|
|
832
876
|
Options:
|
833
877
|
</p>
|
834
878
|
<ul>
|
835
|
-
<li>[linkbase] supply a String to prefix all internal (relative) links with.
|
879
|
+
<li>[:linkbase] supply a String to prefix all internal (relative) links with.
|
836
880
|
’/wiki/’ is assumed to be the base of a relative link
|
837
881
|
|
838
882
|
</li>
|
839
|
-
<li>[noeditsections] strips all edit-links if set to <tt>true</tt>
|
883
|
+
<li>[:noeditsections] strips all edit-links if set to <tt>true</tt>
|
840
884
|
|
841
885
|
</li>
|
842
|
-
<li>[noimages] strips all <tt>img</tt> tags from the rendered text if set to
|
886
|
+
<li>[:noimages] strips all <tt>img</tt> tags from the rendered text if set to
|
843
887
|
<tt>true</tt>
|
844
888
|
|
845
889
|
</li>
|
@@ -851,32 +895,32 @@ Returns rendered page as string, or nil if the page does not exist
|
|
851
895
|
onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
|
852
896
|
<div class="method-source-code" id="M000009-source">
|
853
897
|
<pre>
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
898
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 81</span>
|
899
|
+
81: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render</span>(<span class="ruby-identifier">page_title</span>, <span class="ruby-identifier">options</span> = {})
|
900
|
+
82: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'parse'</span>, <span class="ruby-value str">'page'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">page_title</span>}
|
901
|
+
83:
|
902
|
+
84: <span class="ruby-identifier">valid_options</span> = <span class="ruby-node">%w(linkbase noeditsections noimages)</span>
|
903
|
+
85: <span class="ruby-comment cmt"># Check options</span>
|
904
|
+
86: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">opt</span><span class="ruby-operator">|</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">"Unknown option '#{opt}'"</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">valid_options</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">to_s</span>)}
|
905
|
+
87:
|
906
|
+
88: <span class="ruby-identifier">rendered</span> = <span class="ruby-keyword kw">nil</span>
|
907
|
+
89: <span class="ruby-identifier">parsed</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>).<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"parse"</span>]
|
908
|
+
90: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parsed</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"revid"</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'0'</span>
|
909
|
+
91: <span class="ruby-identifier">rendered</span> = <span class="ruby-identifier">parsed</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"text"</span>].<span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/<!--(.|\s)*?-->/</span>, <span class="ruby-value str">''</span>)
|
910
|
+
92: <span class="ruby-comment cmt"># OPTIMIZE: unifiy the keys in +options+ like symbolize_keys! but w/o</span>
|
911
|
+
93: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">"linkbase"</span>] <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:linkbase</span>]
|
912
|
+
94: <span class="ruby-identifier">linkbase</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value str">"linkbase"</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:linkbase</span>]
|
913
|
+
95: <span class="ruby-identifier">rendered</span> = <span class="ruby-identifier">rendered</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\shref="\/wiki\/([\w\(\)_\-\.%\d:,]*)"/</span>, <span class="ruby-value str">' href="'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">linkbase</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/wiki/\1"'</span>)
|
914
|
+
96: <span class="ruby-keyword kw">end</span>
|
915
|
+
97: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">"noeditsections"</span>] <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:noeditsections</span>]
|
916
|
+
98: <span class="ruby-identifier">rendered</span> = <span class="ruby-identifier">rendered</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/<span class="editsection">\[.+\]<\/span>/</span>, <span class="ruby-value str">''</span>)
|
917
|
+
99: <span class="ruby-keyword kw">end</span>
|
918
|
+
100: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">"noimages"</span>] <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:noimages</span>]
|
919
|
+
101: <span class="ruby-identifier">rendered</span> = <span class="ruby-identifier">rendered</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/<img.*\/>/</span>, <span class="ruby-value str">''</span>)
|
920
|
+
102: <span class="ruby-keyword kw">end</span>
|
921
|
+
103: <span class="ruby-keyword kw">end</span>
|
922
|
+
104: <span class="ruby-identifier">rendered</span>
|
923
|
+
105: <span class="ruby-keyword kw">end</span>
|
880
924
|
</pre>
|
881
925
|
</div>
|
882
926
|
</div>
|
@@ -915,20 +959,20 @@ Returns array of page titles (empty if no matches)
|
|
915
959
|
onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
|
916
960
|
<div class="method-source-code" id="M000016-source">
|
917
961
|
<pre>
|
918
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
930
|
-
|
931
|
-
|
962
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 224</span>
|
963
|
+
224: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">search</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">namespaces</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">limit</span>=<span class="ruby-value">10</span>)
|
964
|
+
225: <span class="ruby-identifier">titles</span> = []
|
965
|
+
226: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>,
|
966
|
+
227: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'search'</span>,
|
967
|
+
228: <span class="ruby-value str">'srwhat'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'text'</span>,
|
968
|
+
229: <span class="ruby-value str">'srsearch'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">key</span>,
|
969
|
+
230: <span class="ruby-value str">'srlimit'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">limit</span>}
|
970
|
+
231: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespaces</span>
|
971
|
+
232: <span class="ruby-identifier">namespaces</span> = [ <span class="ruby-identifier">namespaces</span> ] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">namespaces</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Array</span>
|
972
|
+
233: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'srnamespace'</span>] = <span class="ruby-identifier">namespaces</span>.<span class="ruby-identifier">map!</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ns</span><span class="ruby-operator">|</span> <span class="ruby-identifier">namespaces_by_prefix</span>[<span class="ruby-identifier">ns</span>] <span class="ruby-keyword kw">end</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'|'</span>)
|
973
|
+
234: <span class="ruby-keyword kw">end</span>
|
974
|
+
235: <span class="ruby-identifier">titles</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>), <span class="ruby-value str">"//p"</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"title"</span>] }
|
975
|
+
236: <span class="ruby-keyword kw">end</span>
|
932
976
|
</pre>
|
933
977
|
</div>
|
934
978
|
</div>
|
@@ -963,13 +1007,13 @@ Returns result as an HTML string
|
|
963
1007
|
onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
|
964
1008
|
<div class="method-source-code" id="M000024-source">
|
965
1009
|
<pre>
|
966
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
1010
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 431</span>
|
1011
|
+
431: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">semantic_query</span>(<span class="ruby-identifier">query</span>, <span class="ruby-identifier">params</span> = [])
|
1012
|
+
432: <span class="ruby-identifier">params</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"format=list"</span>
|
1013
|
+
433: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'parse'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'text'</span>, <span class="ruby-value str">'text'</span> =<span class="ruby-operator">></span> <span class="ruby-node">"{{#ask:#{query}|#{params.join('|')}}}"</span> }
|
1014
|
+
434: <span class="ruby-identifier">xml</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
1015
|
+
435: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"parse/text"</span>].<span class="ruby-identifier">text</span>
|
1016
|
+
436: <span class="ruby-keyword kw">end</span>
|
973
1017
|
</pre>
|
974
1018
|
</div>
|
975
1019
|
</div>
|
@@ -1001,17 +1045,17 @@ href="Gateway.html#M000013">undelete</a>
|
|
1001
1045
|
onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
|
1002
1046
|
<div class="method-source-code" id="M000013-source">
|
1003
1047
|
<pre>
|
1004
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1048
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 157</span>
|
1049
|
+
157: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">undelete</span>(<span class="ruby-identifier">title</span>)
|
1050
|
+
158: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">get_undelete_token</span>(<span class="ruby-identifier">title</span>)
|
1051
|
+
159: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>
|
1052
|
+
160: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'undelete'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">token</span> }
|
1053
|
+
161: <span class="ruby-identifier">xml</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
1054
|
+
162: <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"undelete"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"revisions"</span>].<span class="ruby-identifier">to_i</span>
|
1055
|
+
163: <span class="ruby-keyword kw">else</span>
|
1056
|
+
164: <span class="ruby-value">0</span> <span class="ruby-comment cmt"># No revisions to undelete</span>
|
1057
|
+
165: <span class="ruby-keyword kw">end</span>
|
1058
|
+
166: <span class="ruby-keyword kw">end</span>
|
1015
1059
|
</pre>
|
1016
1060
|
</div>
|
1017
1061
|
</div>
|
@@ -1114,40 +1158,40 @@ Examples:
|
|
1114
1158
|
onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
|
1115
1159
|
<div class="method-source-code" id="M000017-source">
|
1116
1160
|
<pre>
|
1117
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1161
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 272</span>
|
1162
|
+
272: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">upload</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">options</span>={})
|
1163
|
+
273: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:description</span>]
|
1164
|
+
274: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'text'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:description</span>]
|
1165
|
+
275: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:description</span>)
|
1166
|
+
276: <span class="ruby-keyword kw">end</span>
|
1167
|
+
277:
|
1168
|
+
278: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:target</span>]
|
1169
|
+
279: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'filename'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:target</span>]
|
1170
|
+
280: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:target</span>)
|
1171
|
+
281: <span class="ruby-keyword kw">end</span>
|
1172
|
+
282:
|
1173
|
+
283: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>]
|
1174
|
+
284: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'text'</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>]
|
1175
|
+
285: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'comment'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>]
|
1176
|
+
286: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:summary</span>)
|
1177
|
+
287: <span class="ruby-keyword kw">end</span>
|
1178
|
+
288:
|
1179
|
+
289: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'comment'</span>] <span class="ruby-operator">||=</span> <span class="ruby-value str">"Uploaded by MediaWiki::Gateway"</span>
|
1180
|
+
290: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'file'</span>] = <span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">path</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">path</span>
|
1181
|
+
291: <span class="ruby-identifier">full_name</span> = <span class="ruby-identifier">path</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'url'</span>]
|
1182
|
+
292: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'filename'</span>] <span class="ruby-operator">||=</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">full_name</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">full_name</span>
|
1183
|
+
293:
|
1184
|
+
294: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(
|
1185
|
+
295: <span class="ruby-value str">"One of the 'file', 'url' or 'sessionkey' options must be specified!"</span>
|
1186
|
+
296: ) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'file'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'url'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'sessionkey'</span>]
|
1187
|
+
297:
|
1188
|
+
298: <span class="ruby-identifier">form_data</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(
|
1189
|
+
299: <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'upload'</span>,
|
1190
|
+
300: <span class="ruby-value str">'token'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'edit'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value str">'filename'</span>])
|
1191
|
+
301: )
|
1192
|
+
302:
|
1193
|
+
303: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
1194
|
+
304: <span class="ruby-keyword kw">end</span>
|
1151
1195
|
</pre>
|
1152
1196
|
</div>
|
1153
1197
|
</div>
|
@@ -1173,22 +1217,22 @@ XML root
|
|
1173
1217
|
onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
|
1174
1218
|
<div class="method-source-code" id="M000028-source">
|
1175
1219
|
<pre>
|
1176
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1220
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 498</span>
|
1221
|
+
498: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_response</span>(<span class="ruby-identifier">res</span>)
|
1222
|
+
499: <span class="ruby-keyword kw">begin</span>
|
1223
|
+
500: <span class="ruby-identifier">doc</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">Document</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">res</span>).<span class="ruby-identifier">root</span>
|
1224
|
+
501: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseException</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
|
1225
|
+
502: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Response is not XML. Are you sure you are pointing to api.php?"</span>
|
1226
|
+
503: <span class="ruby-keyword kw">end</span>
|
1227
|
+
504: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"RES: #{doc}"</span>)
|
1228
|
+
505: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Response does not contain Mediawiki API XML: #{res}"</span> <span class="ruby-keyword kw">unless</span> [ <span class="ruby-value str">"api"</span>, <span class="ruby-value str">"mediawiki"</span> ].<span class="ruby-identifier">include?</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">name</span>
|
1229
|
+
506: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"error"</span>]
|
1230
|
+
507: <span class="ruby-identifier">code</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"error"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"code"</span>]
|
1231
|
+
508: <span class="ruby-identifier">info</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"error"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"info"</span>]
|
1232
|
+
509: <span class="ruby-identifier">raise</span> <span class="ruby-node">"API error: code '#{code}', info '#{info}'"</span>
|
1233
|
+
510: <span class="ruby-keyword kw">end</span>
|
1234
|
+
511: <span class="ruby-identifier">doc</span>
|
1235
|
+
512: <span class="ruby-keyword kw">end</span>
|
1192
1236
|
</pre>
|
1193
1237
|
</div>
|
1194
1238
|
</div>
|
@@ -1207,20 +1251,21 @@ XML root
|
|
1207
1251
|
<p>
|
1208
1252
|
Fetch token (type ‘<a href="Gateway.html#M000012">delete</a>’,
|
1209
1253
|
‘edit’, ‘<a
|
1210
|
-
href="Gateway.html#M000020">import</a>’
|
1254
|
+
href="Gateway.html#M000020">import</a>’, ‘<a
|
1255
|
+
href="Gateway.html#M000011">move</a>’)
|
1211
1256
|
</p>
|
1212
1257
|
<p><a class="source-toggle" href="#"
|
1213
1258
|
onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
|
1214
1259
|
<div class="method-source-code" id="M000025-source">
|
1215
1260
|
<pre>
|
1216
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1261
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 441</span>
|
1262
|
+
441: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_token</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">page_titles</span>)
|
1263
|
+
442: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'intoken'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">type</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">page_titles</span>}
|
1264
|
+
443: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
1265
|
+
444: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/pages/page"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">type</span> <span class="ruby-operator">+</span> <span class="ruby-value str">"token"</span>]
|
1266
|
+
445: <span class="ruby-identifier">raise</span> <span class="ruby-node">"User is not permitted to perform this operation: #{type}"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">nil?</span>
|
1267
|
+
446: <span class="ruby-identifier">token</span>
|
1268
|
+
447: <span class="ruby-keyword kw">end</span>
|
1224
1269
|
</pre>
|
1225
1270
|
</div>
|
1226
1271
|
</div>
|
@@ -1240,18 +1285,18 @@ href="Gateway.html#M000020">import</a>’)
|
|
1240
1285
|
onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
|
1241
1286
|
<div class="method-source-code" id="M000026-source">
|
1242
1287
|
<pre>
|
1243
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1288
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 449</span>
|
1289
|
+
449: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_undelete_token</span>(<span class="ruby-identifier">page_titles</span>)
|
1290
|
+
450: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'list'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'deletedrevs'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'drprop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'token'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">page_titles</span>}
|
1291
|
+
451: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
1292
|
+
452: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/deletedrevs/page"</span>]
|
1293
|
+
453: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/deletedrevs/page"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"token"</span>]
|
1294
|
+
454: <span class="ruby-identifier">raise</span> <span class="ruby-node">"User is not permitted to perform this operation: #{type}"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">nil?</span>
|
1295
|
+
455: <span class="ruby-identifier">token</span>
|
1296
|
+
456: <span class="ruby-keyword kw">else</span>
|
1297
|
+
457: <span class="ruby-keyword kw">nil</span>
|
1298
|
+
458: <span class="ruby-keyword kw">end</span>
|
1299
|
+
459: <span class="ruby-keyword kw">end</span>
|
1255
1300
|
</pre>
|
1256
1301
|
</div>
|
1257
1302
|
</div>
|
@@ -1262,7 +1307,7 @@ href="Gateway.html#M000020">import</a>’)
|
|
1262
1307
|
|
1263
1308
|
<div class="method-heading">
|
1264
1309
|
<a href="#M000027" class="method-signature">
|
1265
|
-
<span class="method-name">make_api_request</span><span class="method-args">(form_data)</span>
|
1310
|
+
<span class="method-name">make_api_request</span><span class="method-args">(form_data, retry_count=1)</span>
|
1266
1311
|
</a>
|
1267
1312
|
</div>
|
1268
1313
|
|
@@ -1282,27 +1327,35 @@ Returns XML document
|
|
1282
1327
|
onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
|
1283
1328
|
<div class="method-source-code" id="M000027-source">
|
1284
1329
|
<pre>
|
1285
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1330
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 466</span>
|
1331
|
+
466: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>, <span class="ruby-identifier">retry_count</span>=<span class="ruby-value">1</span>)
|
1332
|
+
467: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">form_data</span>.<span class="ruby-identifier">kind_of?</span> <span class="ruby-constant">Hash</span>
|
1333
|
+
468: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'format'</span>] = <span class="ruby-value str">'xml'</span>
|
1334
|
+
469: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'maxlag'</span>] = <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:maxlag</span>]
|
1335
|
+
470: <span class="ruby-keyword kw">end</span>
|
1336
|
+
471: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"REQ: #{form_data.inspect}, #{@cookies.inspect}"</span>)
|
1337
|
+
472: <span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">post</span>(<span class="ruby-ivar">@wiki_url</span>, <span class="ruby-identifier">form_data</span>, <span class="ruby-ivar">@headers</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-identifier">:cookies</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@cookies</span>})) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">response</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span><span class="ruby-operator">|</span>
|
1338
|
+
473: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">==</span> <span class="ruby-value">503</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">retry_count</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:retry_count</span>]
|
1339
|
+
474: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">warn</span>(<span class="ruby-node">"503 Service Unavailable: #{response.body}. Retry in #{@options[:retry_delay]} seconds."</span>)
|
1340
|
+
475: <span class="ruby-identifier">sleep</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:retry_delay</span>]
|
1341
|
+
476: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>, <span class="ruby-identifier">retry_count</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
|
1342
|
+
477: <span class="ruby-keyword kw">end</span>
|
1343
|
+
478: <span class="ruby-comment cmt"># Check response for errors and return XML</span>
|
1344
|
+
479: <span class="ruby-identifier">raise</span> <span class="ruby-node">"API error, bad response: #{response}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">>=</span> <span class="ruby-value">200</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator"><</span> <span class="ruby-value">300</span>
|
1345
|
+
480: <span class="ruby-identifier">doc</span> = <span class="ruby-identifier">get_response</span>(<span class="ruby-identifier">response</span>.<span class="ruby-identifier">dup</span>)
|
1346
|
+
481: <span class="ruby-keyword kw">if</span>(<span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'action'</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'login'</span>)
|
1347
|
+
482: <span class="ruby-identifier">login_result</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"login"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'result'</span>]
|
1348
|
+
483: <span class="ruby-ivar">@cookies</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">response</span>.<span class="ruby-identifier">cookies</span>)
|
1349
|
+
484: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">login_result</span>
|
1350
|
+
485: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"Success"</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># do nothing</span>
|
1351
|
+
486: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"NeedToken"</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-value str">'lgtoken'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"login"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"token"</span>]))
|
1352
|
+
487: <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Login failed: "</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">login_result</span>
|
1353
|
+
488: <span class="ruby-keyword kw">end</span>
|
1354
|
+
489: <span class="ruby-keyword kw">end</span>
|
1355
|
+
490: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">doc</span>
|
1356
|
+
491: <span class="ruby-keyword kw">end</span>
|
1357
|
+
492:
|
1358
|
+
493: <span class="ruby-keyword kw">end</span>
|
1306
1359
|
</pre>
|
1307
1360
|
</div>
|
1308
1361
|
</div>
|