mediawiki-gateway 0.2.6 → 0.3.0

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