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 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
- Gem: http://rubygems.org/gems/mediawiki-gateway
6
- RDoc: http://rubydoc.info/gems/mediawiki-gateway
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
- Simple page creation script:
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
- Thanks to John Carney, Mike Williams, Dan Heath and the rest of the Lonely Planet Atlas team.
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"
@@ -211,7 +211,9 @@ href="MediaWiki.html#M000002">get_subpage</a>(&quot;Namespace:Foo&quot;)
211
211
  <div class="method-description">
212
212
  <p>
213
213
  Convert URL-ized page name (&quot;getting_there_%26_away&quot;) into Wiki
214
- display format page name (&quot;getting there &amp; away&quot;)
214
+ display format page name (&quot;getting there &amp; away&quot;). Also
215
+ strips out any illegal characters (#&lt;&gt;[]|{}, 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 (&quot;getting there &amp; away&quot;)
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 29</span>
226
- 29: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">uri_to_wiki</span>(<span class="ruby-identifier">uri</span>)
227
- 30: <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-keyword kw">if</span> <span class="ruby-identifier">uri</span>
228
- 31: <span class="ruby-keyword kw">end</span>
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">'#&lt;&gt;[]|{}'</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 41</span>
253
- 41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">version</span>
254
- 42: <span class="ruby-constant">MediaWiki</span><span class="ruby-operator">::</span><span class="ruby-constant">VERSION</span>
255
- 43: <span class="ruby-keyword kw">end</span>
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 (&quot;getting there &amp; away&quot;) to URI-safe
273
275
  format (&quot;getting_there_%26_away&quot;), 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 36</span>
286
- 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wiki_to_uri</span>(<span class="ruby-identifier">wiki</span>)
287
- 37: <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-keyword kw">if</span> <span class="ruby-identifier">wiki</span>
288
- 38: <span class="ruby-keyword kw">end</span>
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">&nbsp;[R]&nbsp;</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">&nbsp;[R]&nbsp;</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, loglevel = Logger::WARN)</span>
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>&quot;)
177
169
 
178
170
  </dd>
179
- <dt>loglevel</dt><dd>Log level to use (optional, defaults to Logger::WARN)
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>&quot;)
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 16</span>
188
- 16: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">url</span>, <span class="ruby-identifier">loglevel</span> = <span class="ruby-constant">Logger</span><span class="ruby-operator">::</span><span class="ruby-constant">WARN</span>)
189
- 17: <span class="ruby-ivar">@log</span> = <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">STDERR</span>)
190
- 18: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">level</span> = <span class="ruby-identifier">loglevel</span>
191
- 19: <span class="ruby-ivar">@wiki_url</span> = <span class="ruby-identifier">url</span>
192
- 20: <span class="ruby-ivar">@headers</span> = { <span class="ruby-value str">&quot;User-Agent&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;MediaWiki::Gateway/#{MediaWiki.version}&quot;</span> }
193
- 21: <span class="ruby-ivar">@cookies</span> = {}
194
- 22: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value">500</span>,
212
+ 26: <span class="ruby-identifier">:loglevel</span> =<span class="ruby-operator">&gt;</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">&gt;</span> <span class="ruby-value">5</span>,
214
+ 28: <span class="ruby-identifier">:retry_count</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">3</span>,
215
+ 29: <span class="ruby-identifier">:retry_delay</span> =<span class="ruby-operator">&gt;</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">&quot;User-Agent&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;MediaWiki::Gateway/#{MediaWiki::VERSION}&quot;</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 180</span>
233
- 180: <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">&quot;all&quot;</span>)
234
- 181: <span class="ruby-identifier">titles</span> = []
235
- 182: <span class="ruby-identifier">blcontinue</span> = <span class="ruby-keyword kw">nil</span>
236
- 183: <span class="ruby-keyword kw">begin</span>
237
- 184: <span class="ruby-identifier">form_data</span> =
238
- 185: {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>,
239
- 186: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'backlinks'</span>,
240
- 187: <span class="ruby-value str">'bltitle'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">title</span>,
241
- 188: <span class="ruby-value str">'blfilterredir'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">filter</span>,
242
- 189: <span class="ruby-value str">'bllimit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">API_MAX_LIMIT</span> }
243
- 190: <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>
244
- 191: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
245
- 192: <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>
246
- 193: <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">&quot;//bl&quot;</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">&quot;title&quot;</span>] }
247
- 194: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">blcontinue</span>
248
- 195: <span class="ruby-identifier">titles</span>
249
- 196: <span class="ruby-keyword kw">end</span>
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">&quot;all&quot;</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">&gt;</span> <span class="ruby-value str">'query'</span>,
268
+ 205: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'backlinks'</span>,
269
+ 206: <span class="ruby-value str">'bltitle'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">title</span>,
270
+ 207: <span class="ruby-value str">'blfilterredir'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">filter</span>,
271
+ 208: <span class="ruby-value str">'bllimit'</span> =<span class="ruby-operator">&gt;</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">&quot;//bl&quot;</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">&quot;title&quot;</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 102</span>
301
- 102: <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>={})
302
- 103: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'edit'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'text'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">content</span>, <span class="ruby-value str">'summary'</span> =<span class="ruby-operator">&gt;</span> (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</span>), <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'edit'</span>, <span class="ruby-identifier">title</span>)}
303
- 104: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'createonly'</span>] = <span class="ruby-value str">&quot;&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:overwrite</span>]
304
- 105: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
305
- 106: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'edit'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'text'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">content</span>, <span class="ruby-value str">'summary'</span> =<span class="ruby-operator">&gt;</span> (<span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</span>), <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</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">&quot;&quot;</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 128</span>
335
- 128: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete</span>(<span class="ruby-identifier">title</span>)
336
- 129: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'delete'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'delete'</span>, <span class="ruby-identifier">title</span>)}
337
- 130: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
338
- 131: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'delete'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</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 344</span>
366
- 344: <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>={})
367
- 345: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>] = <span class="ruby-value str">'url'</span>
368
- 346:
369
- 347: <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>)
370
- 348: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attributes</span>
371
- 349: <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>]
372
- 350: <span class="ruby-keyword kw">else</span>
373
- 351: <span class="ruby-keyword kw">nil</span>
374
- 352: <span class="ruby-keyword kw">end</span>
375
- 353: <span class="ruby-keyword kw">end</span>
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 375</span>
407
- 375: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">export</span>(<span class="ruby-identifier">page_titles</span>)
408
- 376: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">&gt;</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">&gt;</span> <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">'exportnowrap'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>}
409
- 377: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
410
- 378: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">&gt;</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">&gt;</span> <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">'exportnowrap'</span> =<span class="ruby-operator">&gt;</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 396</span>
439
- 396: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">extensions</span>
440
- 397: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'meta'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'siteinfo'</span>, <span class="ruby-value str">'siprop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'extensions'</span> }
441
- 398: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
442
- 399: <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">&quot;//ext&quot;</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>
443
- 400: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">extension</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;name&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</span>
444
- 401: <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">&quot;version&quot;</span>]
445
- 402: <span class="ruby-identifier">extensions</span>
446
- 403: <span class="ruby-keyword kw">end</span>
447
- 404: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'meta'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'siteinfo'</span>, <span class="ruby-value str">'siprop'</span> =<span class="ruby-operator">&gt;</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">&quot;//ext&quot;</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">&quot;name&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</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">&quot;version&quot;</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 45</span>
480
- 45: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get</span>(<span class="ruby-identifier">page_title</span>)
481
- 46: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'revisions'</span>, <span class="ruby-value str">'rvprop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'content'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">page_title</span>}
482
- 47: <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">&quot;query/pages/page&quot;</span>]
483
- 48: <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">&quot;missing&quot;</span>]
484
- 49: <span class="ruby-keyword kw">nil</span>
485
- 50: <span class="ruby-keyword kw">else</span>
486
- 51: <span class="ruby-identifier">page</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;revisions/rev&quot;</span>].<span class="ruby-identifier">text</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</span>
487
- 52: <span class="ruby-keyword kw">end</span>
488
- 53: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'revisions'</span>, <span class="ruby-value str">'rvprop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'content'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">&gt;</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">&quot;query/pages/page&quot;</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">&quot;missing&quot;</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">&quot;revisions/rev&quot;</span>].<span class="ruby-identifier">text</span> <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</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 313</span>
554
- 313: <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>={})
555
- 314: <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>) \
556
- 315: <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>)
557
- 316: <span class="ruby-identifier">form_data</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(
558
- 317: <span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>,
559
- 318: <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'imageinfo'</span>,
560
- 319: <span class="ruby-value str">'redirects'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>
561
- 320: )
562
- 321:
563
- 322: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">file_name_or_page_id</span>
564
- 323: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Fixnum</span>
565
- 324: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'pageids'</span>] = <span class="ruby-identifier">file_name_or_page_id</span>
566
- 325: <span class="ruby-keyword kw">else</span>
567
- 326: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'titles'</span>] = <span class="ruby-node">&quot;File:#{file_name_or_page_id}&quot;</span>
568
- 327: <span class="ruby-keyword kw">end</span>
569
- 328:
570
- 329: <span class="ruby-identifier">xml</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
571
- 330: <span class="ruby-identifier">page</span> = <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;query/pages/page&quot;</span>]
572
- 331: <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">&quot;missing&quot;</span>]
573
- 332: <span class="ruby-keyword kw">nil</span>
574
- 333: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;query/redirects/r&quot;</span>]
575
- 334: <span class="ruby-comment cmt"># We're dealing with redirect here.</span>
576
- 335: <span class="ruby-identifier">image_info</span>(<span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;pageid&quot;</span>].<span class="ruby-identifier">to_i</span>, <span class="ruby-identifier">options</span>)
577
- 336: <span class="ruby-keyword kw">else</span>
578
- 337: <span class="ruby-identifier">page</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;imageinfo/ii&quot;</span>].<span class="ruby-identifier">attributes</span>
579
- 338: <span class="ruby-keyword kw">end</span>
580
- 339: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'query'</span>,
588
+ 337: <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'imageinfo'</span>,
589
+ 338: <span class="ruby-value str">'redirects'</span> =<span class="ruby-operator">&gt;</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">&quot;File:#{file_name_or_page_id}&quot;</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">&quot;query/pages/page&quot;</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">&quot;missing&quot;</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">&quot;query/redirects/r&quot;</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">&quot;pageid&quot;</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">&quot;imageinfo/ii&quot;</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>&gt;&lt;page/&gt;&lt;page/&gt;&#8230;
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 362</span>
615
- 362: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">import</span>(<span class="ruby-identifier">xmlfile</span>)
616
- 363: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">&quot;action&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;import&quot;</span>,
617
- 364: <span class="ruby-value str">&quot;xml&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">xmlfile</span>),
618
- 365: <span class="ruby-value str">&quot;token&quot;</span> =<span class="ruby-operator">&gt;</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>
619
- 366: <span class="ruby-value str">&quot;format&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'xml'</span> }
620
- 367: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
621
- 368: <span class="ruby-keyword kw">end</span>
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">&quot;action&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;import&quot;</span>,
646
+ 383: <span class="ruby-value str">&quot;xml&quot;</span> =<span class="ruby-operator">&gt;</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">&quot;token&quot;</span> =<span class="ruby-operator">&gt;</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">&quot;format&quot;</span> =<span class="ruby-operator">&gt;</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 154</span>
655
- 154: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">list</span>(<span class="ruby-identifier">key</span>)
656
- 155: <span class="ruby-identifier">titles</span> = []
657
- 156: <span class="ruby-identifier">apfrom</span> = <span class="ruby-keyword kw">nil</span>
658
- 157: <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">&quot;:&quot;</span>, <span class="ruby-value">2</span>).<span class="ruby-identifier">reverse</span>
659
- 158: <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>
660
- 159: <span class="ruby-keyword kw">begin</span>
661
- 160: <span class="ruby-identifier">form_data</span> =
662
- 161: {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>,
663
- 162: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'allpages'</span>,
664
- 163: <span class="ruby-value str">'apfrom'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">apfrom</span>,
665
- 164: <span class="ruby-value str">'apprefix'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">key</span>,
666
- 165: <span class="ruby-value str">'aplimit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">API_MAX_LIMIT</span>,
667
- 166: <span class="ruby-value str">'apnamespace'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">namespace</span>}
668
- 167: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
669
- 168: <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>
670
- 169: <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">&quot;//p&quot;</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">&quot;title&quot;</span>] }
671
- 170: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">apfrom</span>
672
- 171: <span class="ruby-identifier">titles</span>
673
- 172: <span class="ruby-keyword kw">end</span>
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">&quot;:&quot;</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">&gt;</span> <span class="ruby-value str">'query'</span>,
692
+ 181: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'allpages'</span>,
693
+ 182: <span class="ruby-value str">'apfrom'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">apfrom</span>,
694
+ 183: <span class="ruby-value str">'apprefix'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">key</span>,
695
+ 184: <span class="ruby-value str">'aplimit'</span> =<span class="ruby-operator">&gt;</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">&gt;</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">&quot;//p&quot;</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">&quot;title&quot;</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 33</span>
712
- 33: <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>)
713
- 34: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'login'</span>, <span class="ruby-value str">'lgname'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">username</span>, <span class="ruby-value str">'lgpassword'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">password</span>, <span class="ruby-value str">'lgdomain'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">domain</span>}
714
- 35: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
715
- 36: <span class="ruby-ivar">@password</span> = <span class="ruby-identifier">password</span>
716
- 37: <span class="ruby-ivar">@username</span> = <span class="ruby-identifier">username</span>
717
- 38: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'login'</span>, <span class="ruby-value str">'lgname'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">username</span>, <span class="ruby-value str">'lgpassword'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">password</span>, <span class="ruby-value str">'lgdomain'</span> =<span class="ruby-operator">&gt;</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 &#8216;suppressredirect&#8217; 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>[movetalk] Move associated talkpages
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 117</span>
763
- 117: <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>={})
764
- 118: <span class="ruby-identifier">valid_options</span> = <span class="ruby-node">%w(movesubpages movetalk)</span>
765
- 119: <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">&quot;Unknown option '#{opt}'&quot;</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>)}
766
- 120:
767
- 121: <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">&gt;</span> <span class="ruby-value str">'move'</span>, <span class="ruby-value str">'from'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">from</span>, <span class="ruby-value str">'to'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">to</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'edit'</span>, <span class="ruby-identifier">from</span>)})
768
- 122: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
769
- 123: <span class="ruby-keyword kw">end</span>
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">&quot;Unknown option '#{opt}'&quot;</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">&gt;</span> <span class="ruby-value str">'move'</span>, <span class="ruby-value str">'from'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">from</span>, <span class="ruby-value str">'to'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">to</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</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 =&gt; 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 383</span>
796
- 383: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">namespaces_by_prefix</span>
797
- 384: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'meta'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'siteinfo'</span>, <span class="ruby-value str">'siprop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'namespaces'</span> }
798
- 385: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
799
- 386: <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">&quot;//ns&quot;</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>
800
- 387: <span class="ruby-identifier">prefix</span> = <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;canonical&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</span>
801
- 388: <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">&quot;id&quot;</span>].<span class="ruby-identifier">to_i</span>
802
- 389: <span class="ruby-identifier">namespaces</span>
803
- 390: <span class="ruby-keyword kw">end</span>
804
- 391: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'meta'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'siteinfo'</span>, <span class="ruby-value str">'siprop'</span> =<span class="ruby-operator">&gt;</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">&quot;//ns&quot;</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">&quot;canonical&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;&quot;</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">&quot;id&quot;</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
  &#8217;/wiki/&#8217; 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
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 66</span>
855
- 66: <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> = {})
856
- 67: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'parse'</span>, <span class="ruby-value str">'page'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">page_title</span>}
857
- 68:
858
- 69: <span class="ruby-identifier">valid_options</span> = <span class="ruby-node">%w(linkbase noeditsections noimages)</span>
859
- 70: <span class="ruby-comment cmt"># Check options</span>
860
- 71: <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">&quot;Unknown option '#{opt}'&quot;</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>)}
861
- 72:
862
- 73: <span class="ruby-identifier">rendered</span> = <span class="ruby-keyword kw">nil</span>
863
- 74: <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">&quot;parse&quot;</span>]
864
- 75: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parsed</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;revid&quot;</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'0'</span>
865
- 76: <span class="ruby-identifier">rendered</span> = <span class="ruby-identifier">parsed</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;text&quot;</span>].<span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/&lt;!--(.|\s)*?--&gt;/</span>, <span class="ruby-value str">''</span>)
866
- 77: <span class="ruby-comment cmt"># OPTIMIZE: unifiy the keys in +options+ like symbolize_keys! but w/o</span>
867
- 78: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;linkbase&quot;</span>] <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:linkbase</span>]
868
- 79: <span class="ruby-identifier">linkbase</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;linkbase&quot;</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:linkbase</span>]
869
- 80: <span class="ruby-identifier">rendered</span> = <span class="ruby-identifier">rendered</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\shref=&quot;\/wiki\/([\w\(\)_\-\.%\d:,]*)&quot;/</span>, <span class="ruby-value str">' href=&quot;'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">linkbase</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/wiki/\1&quot;'</span>)
870
- 81: <span class="ruby-keyword kw">end</span>
871
- 82: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;noeditsections&quot;</span>] <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:noeditsections</span>]
872
- 83: <span class="ruby-identifier">rendered</span> = <span class="ruby-identifier">rendered</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/&lt;span class=&quot;editsection&quot;&gt;\[.+\]&lt;\/span&gt;/</span>, <span class="ruby-value str">''</span>)
873
- 84: <span class="ruby-keyword kw">end</span>
874
- 85: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">&quot;noimages&quot;</span>] <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:noimages</span>]
875
- 86: <span class="ruby-identifier">rendered</span> = <span class="ruby-identifier">rendered</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/&lt;img.*\/&gt;/</span>, <span class="ruby-value str">''</span>)
876
- 87: <span class="ruby-keyword kw">end</span>
877
- 88: <span class="ruby-keyword kw">end</span>
878
- 89: <span class="ruby-identifier">rendered</span>
879
- 90: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'parse'</span>, <span class="ruby-value str">'page'</span> =<span class="ruby-operator">&gt;</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">&quot;Unknown option '#{opt}'&quot;</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">&quot;parse&quot;</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">&quot;revid&quot;</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">&quot;text&quot;</span>].<span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/&lt;!--(.|\s)*?--&gt;/</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">&quot;linkbase&quot;</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">&quot;linkbase&quot;</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=&quot;\/wiki\/([\w\(\)_\-\.%\d:,]*)&quot;/</span>, <span class="ruby-value str">' href=&quot;'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">linkbase</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/wiki/\1&quot;'</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">&quot;noeditsections&quot;</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">/&lt;span class=&quot;editsection&quot;&gt;\[.+\]&lt;\/span&gt;/</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">&quot;noimages&quot;</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">/&lt;img.*\/&gt;/</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 205</span>
919
- 205: <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>)
920
- 206: <span class="ruby-identifier">titles</span> = []
921
- 207: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>,
922
- 208: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'search'</span>,
923
- 209: <span class="ruby-value str">'srwhat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text'</span>,
924
- 210: <span class="ruby-value str">'srsearch'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">key</span>,
925
- 211: <span class="ruby-value str">'srlimit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">limit</span>}
926
- 212: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespaces</span>
927
- 213: <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>
928
- 214: <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>)
929
- 215: <span class="ruby-keyword kw">end</span>
930
- 216: <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">&quot;//p&quot;</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">&quot;title&quot;</span>] }
931
- 217: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'query'</span>,
966
+ 227: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'search'</span>,
967
+ 228: <span class="ruby-value str">'srwhat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text'</span>,
968
+ 229: <span class="ruby-value str">'srsearch'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">key</span>,
969
+ 230: <span class="ruby-value str">'srlimit'</span> =<span class="ruby-operator">&gt;</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">&quot;//p&quot;</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">&quot;title&quot;</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 412</span>
967
- 412: <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> = [])
968
- 413: <span class="ruby-identifier">params</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;format=list&quot;</span>
969
- 414: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'parse'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text'</span>, <span class="ruby-value str">'text'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;{{#ask:#{query}|#{params.join('|')}}}&quot;</span> }
970
- 415: <span class="ruby-identifier">xml</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
971
- 416: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;parse/text&quot;</span>].<span class="ruby-identifier">text</span>
972
- 417: <span class="ruby-keyword kw">end</span>
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">&lt;&lt;</span> <span class="ruby-value str">&quot;format=list&quot;</span>
1013
+ 433: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'parse'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text'</span>, <span class="ruby-value str">'text'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;{{#ask:#{query}|#{params.join('|')}}}&quot;</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">&quot;parse/text&quot;</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 138</span>
1005
- 138: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">undelete</span>(<span class="ruby-identifier">title</span>)
1006
- 139: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">get_undelete_token</span>(<span class="ruby-identifier">title</span>)
1007
- 140: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>
1008
- 141: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'undelete'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">token</span> }
1009
- 142: <span class="ruby-identifier">xml</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1010
- 143: <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;undelete&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;revisions&quot;</span>].<span class="ruby-identifier">to_i</span>
1011
- 144: <span class="ruby-keyword kw">else</span>
1012
- 145: <span class="ruby-value">0</span> <span class="ruby-comment cmt"># No revisions to undelete</span>
1013
- 146: <span class="ruby-keyword kw">end</span>
1014
- 147: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'undelete'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</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">&quot;undelete&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;revisions&quot;</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 253</span>
1118
- 253: <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>={})
1119
- 254: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:description</span>]
1120
- 255: <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>]
1121
- 256: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:description</span>)
1122
- 257: <span class="ruby-keyword kw">end</span>
1123
- 258:
1124
- 259: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:target</span>]
1125
- 260: <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>]
1126
- 261: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:target</span>)
1127
- 262: <span class="ruby-keyword kw">end</span>
1128
- 263:
1129
- 264: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>]
1130
- 265: <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>]
1131
- 266: <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>]
1132
- 267: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:summary</span>)
1133
- 268: <span class="ruby-keyword kw">end</span>
1134
- 269:
1135
- 270: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'comment'</span>] <span class="ruby-operator">||=</span> <span class="ruby-value str">&quot;Uploaded by MediaWiki::Gateway&quot;</span>
1136
- 271: <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>
1137
- 272: <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>]
1138
- 273: <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>
1139
- 274:
1140
- 275: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(
1141
- 276: <span class="ruby-value str">&quot;One of the 'file', 'url' or 'sessionkey' options must be specified!&quot;</span>
1142
- 277: ) <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>]
1143
- 278:
1144
- 279: <span class="ruby-identifier">form_data</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(
1145
- 280: <span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'upload'</span>,
1146
- 281: <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</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>])
1147
- 282: )
1148
- 283:
1149
- 284: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1150
- 285: <span class="ruby-keyword kw">end</span>
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">&quot;Uploaded by MediaWiki::Gateway&quot;</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">&quot;One of the 'file', 'url' or 'sessionkey' options must be specified!&quot;</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">&gt;</span> <span class="ruby-value str">'upload'</span>,
1190
+ 300: <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</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 471</span>
1177
- 471: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_response</span>(<span class="ruby-identifier">res</span>)
1178
- 472: <span class="ruby-keyword kw">begin</span>
1179
- 473: <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>
1180
- 474: <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">&gt;</span> <span class="ruby-identifier">e</span>
1181
- 475: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Response is not XML. Are you sure you are pointing to api.php?&quot;</span>
1182
- 476: <span class="ruby-keyword kw">end</span>
1183
- 477: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;RES: #{doc}&quot;</span>)
1184
- 478: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Response does not contain Mediawiki API XML: #{res}&quot;</span> <span class="ruby-keyword kw">unless</span> [ <span class="ruby-value str">&quot;api&quot;</span>, <span class="ruby-value str">&quot;mediawiki&quot;</span> ].<span class="ruby-identifier">include?</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">name</span>
1185
- 479: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;error&quot;</span>]
1186
- 480: <span class="ruby-identifier">code</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;error&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;code&quot;</span>]
1187
- 481: <span class="ruby-identifier">info</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;error&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;info&quot;</span>]
1188
- 482: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;API error: code '#{code}', info '#{info}'&quot;</span>
1189
- 483: <span class="ruby-keyword kw">end</span>
1190
- 484: <span class="ruby-identifier">doc</span>
1191
- 485: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-identifier">e</span>
1225
+ 502: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Response is not XML. Are you sure you are pointing to api.php?&quot;</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">&quot;RES: #{doc}&quot;</span>)
1228
+ 505: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Response does not contain Mediawiki API XML: #{res}&quot;</span> <span class="ruby-keyword kw">unless</span> [ <span class="ruby-value str">&quot;api&quot;</span>, <span class="ruby-value str">&quot;mediawiki&quot;</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">&quot;error&quot;</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">&quot;error&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;code&quot;</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">&quot;error&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;info&quot;</span>]
1232
+ 509: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;API error: code '#{code}', info '#{info}'&quot;</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 &#8216;<a href="Gateway.html#M000012">delete</a>&#8217;,
1209
1253
  &#8216;edit&#8217;, &#8216;<a
1210
- href="Gateway.html#M000020">import</a>&#8217;)
1254
+ href="Gateway.html#M000020">import</a>&#8217;, &#8216;<a
1255
+ href="Gateway.html#M000011">move</a>&#8217;)
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 422</span>
1217
- 422: <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>)
1218
- 423: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'intoken'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">type</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">page_titles</span>}
1219
- 424: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1220
- 425: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;query/pages/page&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">type</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;token&quot;</span>]
1221
- 426: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;User is not permitted to perform this operation: #{type}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">nil?</span>
1222
- 427: <span class="ruby-identifier">token</span>
1223
- 428: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'intoken'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">type</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">&gt;</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">&quot;query/pages/page&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">type</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;token&quot;</span>]
1266
+ 445: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;User is not permitted to perform this operation: #{type}&quot;</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>&#8217;)
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 430</span>
1244
- 430: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_undelete_token</span>(<span class="ruby-identifier">page_titles</span>)
1245
- 431: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'deletedrevs'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'drprop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'token'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">page_titles</span>}
1246
- 432: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1247
- 433: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;query/deletedrevs/page&quot;</span>]
1248
- 434: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;query/deletedrevs/page&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;token&quot;</span>]
1249
- 435: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;User is not permitted to perform this operation: #{type}&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">nil?</span>
1250
- 436: <span class="ruby-identifier">token</span>
1251
- 437: <span class="ruby-keyword kw">else</span>
1252
- 438: <span class="ruby-keyword kw">nil</span>
1253
- 439: <span class="ruby-keyword kw">end</span>
1254
- 440: <span class="ruby-keyword kw">end</span>
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">&gt;</span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'deletedrevs'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'drprop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'token'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">&gt;</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">&quot;query/deletedrevs/page&quot;</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">&quot;query/deletedrevs/page&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;token&quot;</span>]
1294
+ 454: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;User is not permitted to perform this operation: #{type}&quot;</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>&#8217;)
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 447</span>
1286
- 447: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1287
- 448: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'format'</span>] = <span class="ruby-value str">'xml'</span> <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>
1288
- 449: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;REQ: #{form_data.inspect}, #{@cookies.inspect}&quot;</span>)
1289
- 450: <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">&gt;</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">&amp;</span><span class="ruby-identifier">block</span><span class="ruby-operator">|</span>
1290
- 451: <span class="ruby-comment cmt"># Check response for errors and return XML</span>
1291
- 452: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;API error, bad response: #{response}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">&gt;=</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">&lt;</span> <span class="ruby-value">300</span>
1292
- 453: <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>)
1293
- 454: <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>)
1294
- 455: <span class="ruby-identifier">login_result</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;login&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'result'</span>]
1295
- 456: <span class="ruby-ivar">@cookies</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">response</span>.<span class="ruby-identifier">cookies</span>)
1296
- 457: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">login_result</span>
1297
- 458: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;Success&quot;</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># do nothing</span>
1298
- 459: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;NeedToken&quot;</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">&gt;</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;login&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;token&quot;</span>]))
1299
- 460: <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Login failed: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">login_result</span>
1300
- 461: <span class="ruby-keyword kw">end</span>
1301
- 462: <span class="ruby-keyword kw">end</span>
1302
- 463: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">doc</span>
1303
- 464: <span class="ruby-keyword kw">end</span>
1304
- 465:
1305
- 466: <span class="ruby-keyword kw">end</span>
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">&quot;REQ: #{form_data.inspect}, #{@cookies.inspect}&quot;</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">&gt;</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">&amp;</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">&lt;</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">&quot;503 Service Unavailable: #{response.body}. Retry in #{@options[:retry_delay]} seconds.&quot;</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">&quot;API error, bad response: #{response}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">&gt;=</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">&lt;</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">&quot;login&quot;</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">&quot;Success&quot;</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">&quot;NeedToken&quot;</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">&gt;</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;login&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;token&quot;</span>]))
1352
+ 487: <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Login failed: &quot;</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>