mediawiki-gateway 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,122 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Class: MediaWiki::Exception</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="classHeader">
50
- <table class="header-table">
51
- <tr class="top-aligned-row">
52
- <td><strong>Class</strong></td>
53
- <td class="class-name-in-header">MediaWiki::Exception</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../../files/lib/media_wiki/exception_rb.html">
59
- lib/media_wiki/exception.rb
60
- </a>
61
- <br />
62
- </td>
63
- </tr>
64
-
65
- <tr class="top-aligned-row">
66
- <td><strong>Parent:</strong></td>
67
- <td>
68
- <a href="Exception.html">
69
- Exception
70
- </a>
71
- </td>
72
- </tr>
73
- </table>
74
- </div>
75
- <!-- banner header -->
76
-
77
- <div id="bodyContent">
78
-
79
-
80
-
81
- <div id="contextContent">
82
-
83
- <div id="description">
84
- <p>
85
- General exception occurred within <a
86
- href="Gateway.html">MediaWiki::Gateway</a>, and parent class for <a
87
- href="APIError.html">MediaWiki::APIError</a>, <a
88
- href="Unauthorized.html">MediaWiki::Unauthorized</a>.
89
- </p>
90
-
91
- </div>
92
-
93
-
94
- </div>
95
-
96
-
97
- </div>
98
-
99
-
100
- <!-- if includes -->
101
-
102
- <div id="section">
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
- <!-- if method_list -->
112
-
113
-
114
- </div>
115
-
116
-
117
- <div id="validator-badges">
118
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
119
- </div>
120
-
121
- </body>
122
- </html>
@@ -1,1737 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
- <head>
8
- <title>Class: MediaWiki::Gateway</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
- <script type="text/javascript">
13
- // <![CDATA[
14
-
15
- function popupCode( url ) {
16
- window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
- }
18
-
19
- function toggleCode( id ) {
20
- if ( document.getElementById )
21
- elem = document.getElementById( id );
22
- else if ( document.all )
23
- elem = eval( "document.all." + id );
24
- else
25
- return false;
26
-
27
- elemStyle = elem.style;
28
-
29
- if ( elemStyle.display != "block" ) {
30
- elemStyle.display = "block"
31
- } else {
32
- elemStyle.display = "none"
33
- }
34
-
35
- return true;
36
- }
37
-
38
- // Make codeblocks hidden by default
39
- document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
-
41
- // ]]>
42
- </script>
43
-
44
- </head>
45
- <body>
46
-
47
-
48
-
49
- <div id="classHeader">
50
- <table class="header-table">
51
- <tr class="top-aligned-row">
52
- <td><strong>Class</strong></td>
53
- <td class="class-name-in-header">MediaWiki::Gateway</td>
54
- </tr>
55
- <tr class="top-aligned-row">
56
- <td><strong>In:</strong></td>
57
- <td>
58
- <a href="../../files/lib/media_wiki/gateway_rb.html">
59
- lib/media_wiki/gateway.rb
60
- </a>
61
- <br />
62
- </td>
63
- </tr>
64
-
65
- <tr class="top-aligned-row">
66
- <td><strong>Parent:</strong></td>
67
- <td>
68
- Object
69
- </td>
70
- </tr>
71
- </table>
72
- </div>
73
- <!-- banner header -->
74
-
75
- <div id="bodyContent">
76
-
77
-
78
-
79
- <div id="contextContent">
80
-
81
-
82
-
83
- </div>
84
-
85
- <div id="method-list">
86
- <h3 class="section-bar">Methods</h3>
87
-
88
- <div class="name-list">
89
- <a href="#M000019">backlinks</a>&nbsp;&nbsp;
90
- <a href="#M000013">create</a>&nbsp;&nbsp;
91
- <a href="#M000016">delete</a>&nbsp;&nbsp;
92
- <a href="#M000024">download</a>&nbsp;&nbsp;
93
- <a href="#M000014">edit</a>&nbsp;&nbsp;
94
- <a href="#M000026">export</a>&nbsp;&nbsp;
95
- <a href="#M000028">extensions</a>&nbsp;&nbsp;
96
- <a href="#M000010">get</a>&nbsp;&nbsp;
97
- <a href="#M000037">get_response</a>&nbsp;&nbsp;
98
- <a href="#M000032">get_token</a>&nbsp;&nbsp;
99
- <a href="#M000033">get_undelete_token</a>&nbsp;&nbsp;
100
- <a href="#M000034">get_userrights_token</a>&nbsp;&nbsp;
101
- <a href="#M000023">image_info</a>&nbsp;&nbsp;
102
- <a href="#M000025">import</a>&nbsp;&nbsp;
103
- <a href="#M000018">list</a>&nbsp;&nbsp;
104
- <a href="#M000009">login</a>&nbsp;&nbsp;
105
- <a href="#M000036">make_api_request</a>&nbsp;&nbsp;
106
- <a href="#M000015">move</a>&nbsp;&nbsp;
107
- <a href="#M000027">namespaces_by_prefix</a>&nbsp;&nbsp;
108
- <a href="#M000008">new</a>&nbsp;&nbsp;
109
- <a href="#M000022">redirect?</a>&nbsp;&nbsp;
110
- <a href="#M000012">render</a>&nbsp;&nbsp;
111
- <a href="#M000031">review</a>&nbsp;&nbsp;
112
- <a href="#M000011">revision</a>&nbsp;&nbsp;
113
- <a href="#M000020">search</a>&nbsp;&nbsp;
114
- <a href="#M000029">semantic_query</a>&nbsp;&nbsp;
115
- <a href="#M000030">set_groups</a>&nbsp;&nbsp;
116
- <a href="#M000017">undelete</a>&nbsp;&nbsp;
117
- <a href="#M000021">upload</a>&nbsp;&nbsp;
118
- <a href="#M000035">userrights</a>&nbsp;&nbsp;
119
- <a href="#M000038">valid_page?</a>&nbsp;&nbsp;
120
- <a href="#M000039">warning</a>&nbsp;&nbsp;
121
- </div>
122
- </div>
123
-
124
- </div>
125
-
126
-
127
- <!-- if includes -->
128
-
129
- <div id="section">
130
-
131
-
132
-
133
-
134
-
135
- <div id="attribute-list">
136
- <h3 class="section-bar">Attributes</h3>
137
-
138
- <div class="name-list">
139
- <table>
140
- <tr class="top-aligned-row context-row">
141
- <td class="context-item-name">base_url</td>
142
- <td class="context-item-value">&nbsp;[R]&nbsp;</td>
143
- <td class="context-item-desc"></td>
144
- </tr>
145
- <tr class="top-aligned-row context-row">
146
- <td class="context-item-name">cookies</td>
147
- <td class="context-item-value">&nbsp;[R]&nbsp;</td>
148
- <td class="context-item-desc"></td>
149
- </tr>
150
- <tr class="top-aligned-row context-row">
151
- <td class="context-item-name">log</td>
152
- <td class="context-item-value">&nbsp;[R]&nbsp;</td>
153
- <td class="context-item-desc"></td>
154
- </tr>
155
- </table>
156
- </div>
157
- </div>
158
-
159
-
160
-
161
- <!-- if method_list -->
162
- <div id="methods">
163
- <h3 class="section-bar">Public Class methods</h3>
164
-
165
- <div id="method-M000008" class="method-detail">
166
- <a name="M000008"></a>
167
-
168
- <div class="method-heading">
169
- <a href="#M000008" class="method-signature">
170
- <span class="method-name">new</span><span class="method-args">(url, options={})</span>
171
- </a>
172
- </div>
173
-
174
- <div class="method-description">
175
- <p>
176
- Set up a <a href="Gateway.html">MediaWiki::Gateway</a> for a given <a
177
- href="../MediaWiki.html">MediaWiki</a> installation
178
- </p>
179
- <dl>
180
- <dt>url</dt><dd>Path to API of target <a href="../MediaWiki.html">MediaWiki</a> (eg.
181
- &quot;<a
182
- href="http://en.wikipedia.org/w/api.php">en.wikipedia.org/w/api.php</a>&quot;)
183
-
184
- </dd>
185
- <dt>options</dt><dd>Hash of options
186
-
187
- </dd>
188
- </dl>
189
- <p>
190
- Options:
191
- </p>
192
- <dl>
193
- <dt>:ignorewarnings</dt><dd>Log API warnings and invalid page titles, instead throwing <a
194
- href="APIError.html">MediaWiki::APIError</a>
195
-
196
- </dd>
197
- <dt>:limit</dt><dd>Maximum number of results returned per <a
198
- href="Gateway.html#M000020">search</a> (see <a
199
- href="http://www.mediawiki.org/wiki/API:Query_-_Lists#Limits">www.mediawiki.org/wiki/API:Query_-_Lists#Limits</a>),
200
- defaults to the <a href="../MediaWiki.html">MediaWiki</a> default of 500.
201
-
202
- </dd>
203
- <dt>:loglevel</dt><dd>Log level to use, defaults to Logger::WARN. Set to Logger::DEBUG to dump
204
- every request and response to the log.
205
-
206
- </dd>
207
- <dt>:maxlag</dt><dd>Maximum allowed server lag (see <a
208
- href="http://www.mediawiki.org/wiki/Manual:Maxlag_parameter">www.mediawiki.org/wiki/Manual:Maxlag_parameter</a>),
209
- defaults to 5 seconds.
210
-
211
- </dd>
212
- <dt>:retry_count</dt><dd>Number of times to try before giving up if <a
213
- href="../MediaWiki.html">MediaWiki</a> returns 503 Service Unavailable,
214
- defaults to 3 (original request plus two retries).
215
-
216
- </dd>
217
- <dt>:retry_delay</dt><dd>Seconds to wait before retry if <a href="../MediaWiki.html">MediaWiki</a>
218
- returns 503 Service Unavailable, defaults to 10 seconds.
219
-
220
- </dd>
221
- </dl>
222
- <p><a class="source-toggle" href="#"
223
- onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
224
- <div class="method-source-code" id="M000008-source">
225
- <pre>
226
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 25</span>
227
- 25: <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>={})
228
- 26: <span class="ruby-identifier">default_options</span> = {
229
- 27: <span class="ruby-identifier">:limit</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">500</span>,
230
- 28: <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>,
231
- 29: <span class="ruby-identifier">:maxlag</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">5</span>,
232
- 30: <span class="ruby-identifier">:retry_count</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">3</span>,
233
- 31: <span class="ruby-identifier">:retry_delay</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">10</span>
234
- 32: }
235
- 33: <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>)
236
- 34: <span class="ruby-ivar">@wiki_url</span> = <span class="ruby-identifier">url</span>
237
- 35: <span class="ruby-ivar">@log</span> = <span class="ruby-constant">Logger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">STDERR</span>)
238
- 36: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">level</span> = <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:loglevel</span>]
239
- 37: <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> }
240
- 38: <span class="ruby-ivar">@cookies</span> = {}
241
- 39: <span class="ruby-keyword kw">end</span>
242
- </pre>
243
- </div>
244
- </div>
245
- </div>
246
-
247
- <h3 class="section-bar">Public Instance methods</h3>
248
-
249
- <div id="method-M000019" class="method-detail">
250
- <a name="M000019"></a>
251
-
252
- <div class="method-heading">
253
- <a href="#M000019" class="method-signature">
254
- <span class="method-name">backlinks</span><span class="method-args">(title, filter = &quot;all&quot;)</span>
255
- </a>
256
- </div>
257
-
258
- <div class="method-description">
259
- <p>
260
- Get a <a href="Gateway.html#M000018">list</a> of pages that link to a
261
- target page
262
- </p>
263
- <dl>
264
- <dt>title</dt><dd>Link target page
265
-
266
- </dd>
267
- <dt>filter</dt><dd>&quot;all&quot; links (default), &quot;redirects&quot; only, or
268
- &quot;nonredirects&quot; (plain links only)
269
-
270
- </dd>
271
- </dl>
272
- <p>
273
- Returns array of page titles (empty if no matches)
274
- </p>
275
- <p><a class="source-toggle" href="#"
276
- onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
277
- <div class="method-source-code" id="M000019-source">
278
- <pre>
279
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 217</span>
280
- 217: <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>)
281
- 218: <span class="ruby-identifier">titles</span> = []
282
- 219: <span class="ruby-identifier">blcontinue</span> = <span class="ruby-keyword kw">nil</span>
283
- 220: <span class="ruby-keyword kw">begin</span>
284
- 221: <span class="ruby-identifier">form_data</span> =
285
- 222: {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>,
286
- 223: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'backlinks'</span>,
287
- 224: <span class="ruby-value str">'bltitle'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">title</span>,
288
- 225: <span class="ruby-value str">'blfilterredir'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">filter</span>,
289
- 226: <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>] }
290
- 227: <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>
291
- 228: <span class="ruby-identifier">res</span>, <span class="ruby-identifier">blcontinue</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>, <span class="ruby-value str">'//query-continue/backlinks/@blcontinue'</span>)
292
- 229: <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>] }
293
- 230: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">blcontinue</span>
294
- 231: <span class="ruby-identifier">titles</span>
295
- 232: <span class="ruby-keyword kw">end</span>
296
- </pre>
297
- </div>
298
- </div>
299
- </div>
300
-
301
- <div id="method-M000013" class="method-detail">
302
- <a name="M000013"></a>
303
-
304
- <div class="method-heading">
305
- <a href="#M000013" class="method-signature">
306
- <span class="method-name">create</span><span class="method-args">(title, content, options={})</span>
307
- </a>
308
- </div>
309
-
310
- <div class="method-description">
311
- <p>
312
- Create a <a href="Gateway.html#M000008">new</a> page, or overwrite an
313
- existing one
314
- </p>
315
- <dl>
316
- <dt>title</dt><dd>Page title to <a href="Gateway.html#M000013">create</a> or overwrite,
317
- string
318
-
319
- </dd>
320
- <dt>content</dt><dd>Content for the page, string
321
-
322
- </dd>
323
- <dt>options</dt><dd>Hash of additional options
324
-
325
- </dd>
326
- </dl>
327
- <p>
328
- Options:
329
- </p>
330
- <ul>
331
- <li>[:overwrite] Allow overwriting existing pages
332
-
333
- </li>
334
- <li>[:summary] Edit summary for history, string
335
-
336
- </li>
337
- <li>[:token] Use this existing <a href="Gateway.html#M000014">edit</a> token
338
- instead requesting a <a href="Gateway.html#M000008">new</a> one (useful for
339
- bulk loads)
340
-
341
- </li>
342
- </ul>
343
- <p><a class="source-toggle" href="#"
344
- onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
345
- <div class="method-source-code" id="M000013-source">
346
- <pre>
347
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 130</span>
348
- 130: <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>={})
349
- 131: <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>)}
350
- 132: <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>]
351
- 133: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
352
- 134: <span class="ruby-keyword kw">end</span>
353
- </pre>
354
- </div>
355
- </div>
356
- </div>
357
-
358
- <div id="method-M000016" class="method-detail">
359
- <a name="M000016"></a>
360
-
361
- <div class="method-heading">
362
- <a href="#M000016" class="method-signature">
363
- <span class="method-name">delete</span><span class="method-args">(title)</span>
364
- </a>
365
- </div>
366
-
367
- <div class="method-description">
368
- <p>
369
- Delete one page. (<a href="../MediaWiki.html">MediaWiki</a> API does not
370
- support deleting multiple pages at a time.)
371
- </p>
372
- <dl>
373
- <dt>title</dt><dd>Title of page to <a href="Gateway.html#M000016">delete</a>
374
-
375
- </dd>
376
- </dl>
377
- <p><a class="source-toggle" href="#"
378
- onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
379
- <div class="method-source-code" id="M000016-source">
380
- <pre>
381
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 167</span>
382
- 167: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete</span>(<span class="ruby-identifier">title</span>)
383
- 168: <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>)}
384
- 169: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
385
- 170: <span class="ruby-keyword kw">end</span>
386
- </pre>
387
- </div>
388
- </div>
389
- </div>
390
-
391
- <div id="method-M000024" class="method-detail">
392
- <a name="M000024"></a>
393
-
394
- <div class="method-heading">
395
- <a href="#M000024" class="method-signature">
396
- <span class="method-name">download</span><span class="method-args">(file_name, options={})</span>
397
- </a>
398
- </div>
399
-
400
- <div class="method-description">
401
- <p>
402
- Download <em>file_name</em>. Returns file contents. All options are passed
403
- to <a href="Gateway.html#M000023">image_info</a> however
404
- options[&#8216;iiprop&#8217;] is forced to url. You can still set other
405
- options to control what file you want to <a
406
- href="Gateway.html#M000024">download</a>.
407
- </p>
408
- <p><a class="source-toggle" href="#"
409
- onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
410
- <div class="method-source-code" id="M000024-source">
411
- <pre>
412
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 402</span>
413
- 402: <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>={})
414
- 403: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>] = <span class="ruby-value str">'url'</span>
415
- 404:
416
- 405: <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>)
417
- 406: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attributes</span>
418
- 407: <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>]
419
- 408: <span class="ruby-keyword kw">else</span>
420
- 409: <span class="ruby-keyword kw">nil</span>
421
- 410: <span class="ruby-keyword kw">end</span>
422
- 411: <span class="ruby-keyword kw">end</span>
423
- </pre>
424
- </div>
425
- </div>
426
- </div>
427
-
428
- <div id="method-M000014" class="method-detail">
429
- <a name="M000014"></a>
430
-
431
- <div class="method-heading">
432
- <a href="#M000014" class="method-signature">
433
- <span class="method-name">edit</span><span class="method-args">(title, content, options={})</span>
434
- </a>
435
- </div>
436
-
437
- <div class="method-description">
438
- <p>
439
- Edit page
440
- </p>
441
- <p>
442
- Same options as <a href="Gateway.html#M000013">create</a>, but always
443
- overwrites existing pages (and creates them if they don&#8216;t exist
444
- already).
445
- </p>
446
- <p><a class="source-toggle" href="#"
447
- onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
448
- <div class="method-source-code" id="M000014-source">
449
- <pre>
450
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 139</span>
451
- 139: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">edit</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">content</span>, <span class="ruby-identifier">options</span>={})
452
- 140: <span class="ruby-identifier">create</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">content</span>, {<span class="ruby-identifier">:overwrite</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>}.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">options</span>))
453
- 141: <span class="ruby-keyword kw">end</span>
454
- </pre>
455
- </div>
456
- </div>
457
- </div>
458
-
459
- <div id="method-M000026" class="method-detail">
460
- <a name="M000026"></a>
461
-
462
- <div class="method-heading">
463
- <a href="#M000026" class="method-signature">
464
- <span class="method-name">export</span><span class="method-args">(page_titles)</span>
465
- </a>
466
- </div>
467
-
468
- <div class="method-description">
469
- <p>
470
- Exports a page or set of pages
471
- </p>
472
- <dl>
473
- <dt>page_titles</dt><dd>String or array of page titles to fetch
474
-
475
- </dd>
476
- </dl>
477
- <p>
478
- Returns <a href="../MediaWiki.html">MediaWiki</a> XML dump
479
- </p>
480
- <p><a class="source-toggle" href="#"
481
- onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
482
- <div class="method-source-code" id="M000026-source">
483
- <pre>
484
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 433</span>
485
- 433: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">export</span>(<span class="ruby-identifier">page_titles</span>)
486
- 434: <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>}
487
- 435: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
488
- 436: <span class="ruby-keyword kw">end</span>
489
- </pre>
490
- </div>
491
- </div>
492
- </div>
493
-
494
- <div id="method-M000028" class="method-detail">
495
- <a name="M000028"></a>
496
-
497
- <div class="method-heading">
498
- <a href="#M000028" class="method-signature">
499
- <span class="method-name">extensions</span><span class="method-args">()</span>
500
- </a>
501
- </div>
502
-
503
- <div class="method-description">
504
- <p>
505
- Get a <a href="Gateway.html#M000018">list</a> of all installed (and
506
- registered) <a href="Gateway.html#M000028">extensions</a>
507
- </p>
508
- <p>
509
- Returns array of <a href="Gateway.html#M000028">extensions</a> (name =&gt;
510
- version)
511
- </p>
512
- <p><a class="source-toggle" href="#"
513
- onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
514
- <div class="method-source-code" id="M000028-source">
515
- <pre>
516
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 454</span>
517
- 454: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">extensions</span>
518
- 455: <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> }
519
- 456: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
520
- 457: <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>
521
- 458: <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>
522
- 459: <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>]
523
- 460: <span class="ruby-identifier">extensions</span>
524
- 461: <span class="ruby-keyword kw">end</span>
525
- 462: <span class="ruby-keyword kw">end</span>
526
- </pre>
527
- </div>
528
- </div>
529
- </div>
530
-
531
- <div id="method-M000010" class="method-detail">
532
- <a name="M000010"></a>
533
-
534
- <div class="method-heading">
535
- <a href="#M000010" class="method-signature">
536
- <span class="method-name">get</span><span class="method-args">(page_title)</span>
537
- </a>
538
- </div>
539
-
540
- <div class="method-description">
541
- <p>
542
- Fetch <a href="../MediaWiki.html">MediaWiki</a> page in <a
543
- href="../MediaWiki.html">MediaWiki</a> format. Does not follow redirects.
544
- </p>
545
- <dl>
546
- <dt>page_title</dt><dd>Page title to fetch
547
-
548
- </dd>
549
- </dl>
550
- <p>
551
- Returns content of page as string, nil if the page does not exist.
552
- </p>
553
- <p><a class="source-toggle" href="#"
554
- onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
555
- <div class="method-source-code" id="M000010-source">
556
- <pre>
557
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 62</span>
558
- 62: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get</span>(<span class="ruby-identifier">page_title</span>)
559
- 63: <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>}
560
- 64: <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">first</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;query/pages/page&quot;</span>]
561
- 65: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">valid_page?</span> <span class="ruby-identifier">page</span>
562
- 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>
563
- 67: <span class="ruby-keyword kw">end</span>
564
- 68: <span class="ruby-keyword kw">end</span>
565
- </pre>
566
- </div>
567
- </div>
568
- </div>
569
-
570
- <div id="method-M000023" class="method-detail">
571
- <a name="M000023"></a>
572
-
573
- <div class="method-heading">
574
- <a href="#M000023" class="method-signature">
575
- <span class="method-name">image_info</span><span class="method-args">(file_name_or_page_id, options={})</span>
576
- </a>
577
- </div>
578
-
579
- <div class="method-description">
580
- <p>
581
- Requests image info from <a href="../MediaWiki.html">MediaWiki</a>. Follows
582
- redirects.
583
- </p>
584
- <p>
585
- <em>file_name_or_page_id</em> should be either:
586
- </p>
587
- <ul>
588
- <li>a file name (String) you want info about without File: prefix.
589
-
590
- </li>
591
- <li>or a Fixnum page id you of the file.
592
-
593
- </li>
594
- </ul>
595
- <p>
596
- <em>options</em> is <tt>Hash</tt> passed as query arguments. See <a
597
- href="http://www.mediawiki.org/wiki/API:Query_-_Properties#imageinfo_.2F_ii">www.mediawiki.org/wiki/API:Query_-_Properties#imageinfo_.2F_ii</a>
598
- for more information.
599
- </p>
600
- <p>
601
- options[&#8216;iiprop&#8217;] should be either a string of properties
602
- joined by &#8217;|&#8217; or an <tt>Array</tt> (or more precisely something
603
- that responds to join).
604
- </p>
605
- <p>
606
- <tt>Hash</tt> like object is returned where keys are image properties.
607
- </p>
608
- <p>
609
- Example:
610
- </p>
611
- <pre>
612
- mw.image_info(
613
- &quot;Trooper.jpg&quot;, 'iiprop' =&gt; ['timestamp', 'user']
614
- ).each do |key, value|
615
- puts &quot;#{key.inspect} =&gt; #{value.inspect}&quot;
616
- end
617
- </pre>
618
- <p>
619
- Output:
620
- </p>
621
- <pre>
622
- &quot;timestamp&quot; =&gt; &quot;2009-10-31T12:59:11Z&quot;
623
- &quot;user&quot; =&gt; &quot;Valdas&quot;
624
- </pre>
625
- <p><a class="source-toggle" href="#"
626
- onclick="toggleCode('M000023-source');return false;">[Source]</a></p>
627
- <div class="method-source-code" id="M000023-source">
628
- <pre>
629
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 369</span>
630
- 369: <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>={})
631
- 370: <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>) \
632
- 371: <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>)
633
- 372: <span class="ruby-identifier">form_data</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(
634
- 373: <span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>,
635
- 374: <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'imageinfo'</span>,
636
- 375: <span class="ruby-value str">'redirects'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">true</span>
637
- 376: )
638
- 377:
639
- 378: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">file_name_or_page_id</span>
640
- 379: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Fixnum</span>
641
- 380: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'pageids'</span>] = <span class="ruby-identifier">file_name_or_page_id</span>
642
- 381: <span class="ruby-keyword kw">else</span>
643
- 382: <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>
644
- 383: <span class="ruby-keyword kw">end</span>
645
- 384:
646
- 385: <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">dummy</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
647
- 386: <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>]
648
- 387: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">valid_page?</span> <span class="ruby-identifier">page</span>
649
- 388: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;query/redirects/r&quot;</span>]
650
- 389: <span class="ruby-comment cmt"># We're dealing with redirect here.</span>
651
- 390: <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>)
652
- 391: <span class="ruby-keyword kw">else</span>
653
- 392: <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>
654
- 393: <span class="ruby-keyword kw">end</span>
655
- 394: <span class="ruby-keyword kw">else</span>
656
- 395: <span class="ruby-keyword kw">nil</span>
657
- 396: <span class="ruby-keyword kw">end</span>
658
- 397: <span class="ruby-keyword kw">end</span>
659
- </pre>
660
- </div>
661
- </div>
662
- </div>
663
-
664
- <div id="method-M000025" class="method-detail">
665
- <a name="M000025"></a>
666
-
667
- <div class="method-heading">
668
- <a href="#M000025" class="method-signature">
669
- <span class="method-name">import</span><span class="method-args">(xmlfile)</span>
670
- </a>
671
- </div>
672
-
673
- <div class="method-description">
674
- <p>
675
- Imports a <a href="../MediaWiki.html">MediaWiki</a> XML dump
676
- </p>
677
- <dl>
678
- <dt>xml</dt><dd>String or array of page names to fetch
679
-
680
- </dd>
681
- </dl>
682
- <p>
683
- Returns XML array &lt;api&gt;&lt;<a
684
- href="Gateway.html#M000025">import</a>&gt;&lt;page/&gt;&lt;page/&gt;&#8230;
685
- &lt;page revisions=&quot;1&quot;&gt; (or more) means successfully imported
686
- &lt;page revisions=&quot;0&quot;&gt; means duplicate, not imported
687
- </p>
688
- <p><a class="source-toggle" href="#"
689
- onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
690
- <div class="method-source-code" id="M000025-source">
691
- <pre>
692
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 420</span>
693
- 420: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">import</span>(<span class="ruby-identifier">xmlfile</span>)
694
- 421: <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>,
695
- 422: <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>),
696
- 423: <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>
697
- 424: <span class="ruby-value str">&quot;format&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'xml'</span> }
698
- 425: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
699
- 426: <span class="ruby-keyword kw">end</span>
700
- </pre>
701
- </div>
702
- </div>
703
- </div>
704
-
705
- <div id="method-M000018" class="method-detail">
706
- <a name="M000018"></a>
707
-
708
- <div class="method-heading">
709
- <a href="#M000018" class="method-signature">
710
- <span class="method-name">list</span><span class="method-args">(key)</span>
711
- </a>
712
- </div>
713
-
714
- <div class="method-description">
715
- <p>
716
- Get a <a href="Gateway.html#M000018">list</a> of matching page titles in a
717
- namespace
718
- </p>
719
- <dl>
720
- <dt>key</dt><dd>Search key, matched as a prefix (^key.*). May contain or equal a namespace,
721
- defaults to main (namespace 0) if none given.
722
-
723
- </dd>
724
- </dl>
725
- <p>
726
- Returns array of page titles (empty if no matches)
727
- </p>
728
- <p><a class="source-toggle" href="#"
729
- onclick="toggleCode('M000018-source');return false;">[Source]</a></p>
730
- <div class="method-source-code" id="M000018-source">
731
- <pre>
732
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 192</span>
733
- 192: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">list</span>(<span class="ruby-identifier">key</span>)
734
- 193: <span class="ruby-identifier">titles</span> = []
735
- 194: <span class="ruby-identifier">apfrom</span> = <span class="ruby-keyword kw">nil</span>
736
- 195: <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>
737
- 196: <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>
738
- 197: <span class="ruby-keyword kw">begin</span>
739
- 198: <span class="ruby-identifier">form_data</span> =
740
- 199: {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'query'</span>,
741
- 200: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'allpages'</span>,
742
- 201: <span class="ruby-value str">'apfrom'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">apfrom</span>,
743
- 202: <span class="ruby-value str">'apprefix'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">key</span>,
744
- 203: <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>],
745
- 204: <span class="ruby-value str">'apnamespace'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">namespace</span>}
746
- 205: <span class="ruby-identifier">res</span>, <span class="ruby-identifier">apfrom</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>, <span class="ruby-value str">'//query-continue/allpages/@apfrom'</span>)
747
- 206: <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>] }
748
- 207: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">apfrom</span>
749
- 208: <span class="ruby-identifier">titles</span>
750
- 209: <span class="ruby-keyword kw">end</span>
751
- </pre>
752
- </div>
753
- </div>
754
- </div>
755
-
756
- <div id="method-M000009" class="method-detail">
757
- <a name="M000009"></a>
758
-
759
- <div class="method-heading">
760
- <a href="#M000009" class="method-signature">
761
- <span class="method-name">login</span><span class="method-args">(username, password, domain = 'local')</span>
762
- </a>
763
- </div>
764
-
765
- <div class="method-description">
766
- <p>
767
- Login to <a href="../MediaWiki.html">MediaWiki</a>
768
- </p>
769
- <dl>
770
- <dt>username</dt><dd>Username
771
-
772
- </dd>
773
- <dt>password</dt><dd>Password
774
-
775
- </dd>
776
- <dt>domain</dt><dd>Domain for authentication plugin logins (eg. LDAP), optional &#8212;
777
- defaults to &#8216;local&#8217; if not given
778
-
779
- </dd>
780
- </dl>
781
- <p>
782
- Throws <a href="Unauthorized.html">MediaWiki::Unauthorized</a> if <a
783
- href="Gateway.html#M000009">login</a> fails
784
- </p>
785
- <p><a class="source-toggle" href="#"
786
- onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
787
- <div class="method-source-code" id="M000009-source">
788
- <pre>
789
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 50</span>
790
- 50: <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>)
791
- 51: <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>}
792
- 52: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
793
- 53: <span class="ruby-ivar">@password</span> = <span class="ruby-identifier">password</span>
794
- 54: <span class="ruby-ivar">@username</span> = <span class="ruby-identifier">username</span>
795
- 55: <span class="ruby-keyword kw">end</span>
796
- </pre>
797
- </div>
798
- </div>
799
- </div>
800
-
801
- <div id="method-M000015" class="method-detail">
802
- <a name="M000015"></a>
803
-
804
- <div class="method-heading">
805
- <a href="#M000015" class="method-signature">
806
- <span class="method-name">move</span><span class="method-args">(from, to, options={})</span>
807
- </a>
808
- </div>
809
-
810
- <div class="method-description">
811
- <p>
812
- Move a page to a <a href="Gateway.html#M000008">new</a> title
813
- </p>
814
- <dl>
815
- <dt>from</dt><dd>Old page name
816
-
817
- </dd>
818
- <dt>to</dt><dd>New page name
819
-
820
- </dd>
821
- <dt>options</dt><dd>Hash of additional options
822
-
823
- </dd>
824
- </dl>
825
- <p>
826
- Options:
827
- </p>
828
- <ul>
829
- <li>[:movesubpages] Move associated subpages
830
-
831
- </li>
832
- <li>[:movetalk] Move associated talkpages
833
-
834
- </li>
835
- <li>[:noredirect] Do not <a href="Gateway.html#M000013">create</a> a redirect
836
- page from old name. Requires the &#8216;suppressredirect&#8217; user right,
837
- otherwise MW will silently ignore the option and <a
838
- href="Gateway.html#M000013">create</a> the redirect anyway.
839
-
840
- </li>
841
- <li>[:reason] Reason for <a href="Gateway.html#M000015">move</a>
842
-
843
- </li>
844
- <li>[:watch] Add page and any redirect to watchlist
845
-
846
- </li>
847
- <li>[:unwatch] Remove page and any redirect from watchlist
848
-
849
- </li>
850
- </ul>
851
- <p><a class="source-toggle" href="#"
852
- onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
853
- <div class="method-source-code" id="M000015-source">
854
- <pre>
855
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 156</span>
856
- 156: <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>={})
857
- 157: <span class="ruby-identifier">valid_options</span> = <span class="ruby-node">%w(movesubpages movetalk noredirect reason watch unwatch)</span>
858
- 158: <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>)}
859
- 159:
860
- 160: <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>)})
861
- 161: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
862
- 162: <span class="ruby-keyword kw">end</span>
863
- </pre>
864
- </div>
865
- </div>
866
- </div>
867
-
868
- <div id="method-M000027" class="method-detail">
869
- <a name="M000027"></a>
870
-
871
- <div class="method-heading">
872
- <a href="#M000027" class="method-signature">
873
- <span class="method-name">namespaces_by_prefix</span><span class="method-args">()</span>
874
- </a>
875
- </div>
876
-
877
- <div class="method-description">
878
- <p>
879
- Get a <a href="Gateway.html#M000018">list</a> of all known namespaces
880
- </p>
881
- <p>
882
- Returns array of namespaces (name =&gt; id)
883
- </p>
884
- <p><a class="source-toggle" href="#"
885
- onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
886
- <div class="method-source-code" id="M000027-source">
887
- <pre>
888
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 441</span>
889
- 441: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">namespaces_by_prefix</span>
890
- 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">'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> }
891
- 443: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
892
- 444: <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>
893
- 445: <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>
894
- 446: <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>
895
- 447: <span class="ruby-identifier">namespaces</span>
896
- 448: <span class="ruby-keyword kw">end</span>
897
- 449: <span class="ruby-keyword kw">end</span>
898
- </pre>
899
- </div>
900
- </div>
901
- </div>
902
-
903
- <div id="method-M000022" class="method-detail">
904
- <a name="M000022"></a>
905
-
906
- <div class="method-heading">
907
- <a href="#M000022" class="method-signature">
908
- <span class="method-name">redirect?</span><span class="method-args">(page_title)</span>
909
- </a>
910
- </div>
911
-
912
- <div class="method-description">
913
- <p>
914
- Checks if page is a redirect.
915
- </p>
916
- <dl>
917
- <dt>page_title</dt><dd>Page title to fetch
918
-
919
- </dd>
920
- </dl>
921
- <p>
922
- Returns true if the page is a redirect, false if it is not or the page does
923
- not exist.
924
- </p>
925
- <p><a class="source-toggle" href="#"
926
- onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
927
- <div class="method-source-code" id="M000022-source">
928
- <pre>
929
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 337</span>
930
- 337: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">redirect?</span>(<span class="ruby-identifier">page_title</span>)
931
- 338: <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">'titles'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">page_title</span>}
932
- 339: <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">first</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;query/pages/page&quot;</span>]
933
- 340: <span class="ruby-operator">!</span><span class="ruby-operator">!</span>(<span class="ruby-identifier">valid_page?</span>(<span class="ruby-identifier">page</span>) <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;redirect&quot;</span>])
934
- 341: <span class="ruby-keyword kw">end</span>
935
- </pre>
936
- </div>
937
- </div>
938
- </div>
939
-
940
- <div id="method-M000012" class="method-detail">
941
- <a name="M000012"></a>
942
-
943
- <div class="method-heading">
944
- <a href="#M000012" class="method-signature">
945
- <span class="method-name">render</span><span class="method-args">(page_title, options = {})</span>
946
- </a>
947
- </div>
948
-
949
- <div class="method-description">
950
- <p>
951
- Render a <a href="../MediaWiki.html">MediaWiki</a> page as HTML
952
- </p>
953
- <dl>
954
- <dt>page_title</dt><dd>Page title to fetch
955
-
956
- </dd>
957
- <dt>options</dt><dd>Hash of additional options
958
-
959
- </dd>
960
- </dl>
961
- <p>
962
- Options:
963
- </p>
964
- <ul>
965
- <li>[:linkbase] supply a String to prefix all internal (relative) links with.
966
- &#8217;/wiki/&#8217; is assumed to be the base of a relative link
967
-
968
- </li>
969
- <li>[:noeditsections] strips all <a href="Gateway.html#M000014">edit</a>-links
970
- if set to <tt>true</tt>
971
-
972
- </li>
973
- <li>[:noimages] strips all <tt>img</tt> tags from the rendered text if set to
974
- <tt>true</tt>
975
-
976
- </li>
977
- </ul>
978
- <p>
979
- Returns rendered page as string, or nil if the page does not exist
980
- </p>
981
- <p><a class="source-toggle" href="#"
982
- onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
983
- <div class="method-source-code" id="M000012-source">
984
- <pre>
985
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 94</span>
986
- 94: <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> = {})
987
- 95: <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>}
988
- 96:
989
- 97: <span class="ruby-identifier">valid_options</span> = <span class="ruby-node">%w(linkbase noeditsections noimages)</span>
990
- 98: <span class="ruby-comment cmt"># Check options</span>
991
- 99: <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>)}
992
- 100:
993
- 101: <span class="ruby-identifier">rendered</span> = <span class="ruby-keyword kw">nil</span>
994
- 102: <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">first</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;parse&quot;</span>]
995
- 103: <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>
996
- 104: <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>)
997
- 105: <span class="ruby-comment cmt"># OPTIMIZE: unifiy the keys in +options+ like symbolize_keys! but w/o</span>
998
- 106: <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>]
999
- 107: <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>]
1000
- 108: <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>)
1001
- 109: <span class="ruby-keyword kw">end</span>
1002
- 110: <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>]
1003
- 111: <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>)
1004
- 112: <span class="ruby-keyword kw">end</span>
1005
- 113: <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>]
1006
- 114: <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>)
1007
- 115: <span class="ruby-keyword kw">end</span>
1008
- 116: <span class="ruby-keyword kw">end</span>
1009
- 117: <span class="ruby-identifier">rendered</span>
1010
- 118: <span class="ruby-keyword kw">end</span>
1011
- </pre>
1012
- </div>
1013
- </div>
1014
- </div>
1015
-
1016
- <div id="method-M000031" class="method-detail">
1017
- <a name="M000031"></a>
1018
-
1019
- <div class="method-heading">
1020
- <a href="#M000031" class="method-signature">
1021
- <span class="method-name">review</span><span class="method-args">(title, flags, comment = &quot;Reviewed by MediaWiki::Gateway&quot;)</span>
1022
- </a>
1023
- </div>
1024
-
1025
- <div class="method-description">
1026
- <p>
1027
- Review current <a href="Gateway.html#M000011">revision</a> of an article
1028
- (requires FlaggedRevisions extension, see <a
1029
- href="http://www.mediawiki.org/wiki/Extension:FlaggedRevs">www.mediawiki.org/wiki/Extension:FlaggedRevs</a>)
1030
- </p>
1031
- <dl>
1032
- <dt>title</dt><dd>Title of article to <a href="Gateway.html#M000031">review</a>
1033
-
1034
- </dd>
1035
- <dt>flags</dt><dd>Hash of flags and values to set, eg. { &quot;accuracy&quot; =&gt;
1036
- &quot;1&quot;, &quot;depth&quot; =&gt; &quot;2&quot; }
1037
-
1038
- </dd>
1039
- <dt>comment</dt><dd>Comment to add to <a href="Gateway.html#M000031">review</a> (optional)
1040
-
1041
- </dd>
1042
- </dl>
1043
- <p><a class="source-toggle" href="#"
1044
- onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
1045
- <div class="method-source-code" id="M000031-source">
1046
- <pre>
1047
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 492</span>
1048
- 492: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">review</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">flags</span>, <span class="ruby-identifier">comment</span> = <span class="ruby-value str">&quot;Reviewed by MediaWiki::Gateway&quot;</span>)
1049
- 493: <span class="ruby-identifier">raise</span> <span class="ruby-constant">APIError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'missingtitle'</span>, <span class="ruby-node">&quot;Article #{title} not found&quot;</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">revid</span> = <span class="ruby-identifier">revision</span>(<span class="ruby-identifier">title</span>)
1050
- 494: <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">'review'</span>, <span class="ruby-value str">'revid'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">revid</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>), <span class="ruby-value str">'comment'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">comment</span>}
1051
- 495: <span class="ruby-identifier">form_data</span>.<span class="ruby-identifier">merge!</span>( <span class="ruby-constant">Hash</span>[<span class="ruby-identifier">flags</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> [<span class="ruby-node">&quot;flag_#{k}&quot;</span>, <span class="ruby-identifier">v</span>]}] )
1052
- 496: <span class="ruby-identifier">res</span>, <span class="ruby-identifier">dummy</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1053
- 497: <span class="ruby-identifier">res</span>
1054
- 498: <span class="ruby-keyword kw">end</span>
1055
- </pre>
1056
- </div>
1057
- </div>
1058
- </div>
1059
-
1060
- <div id="method-M000011" class="method-detail">
1061
- <a name="M000011"></a>
1062
-
1063
- <div class="method-heading">
1064
- <a href="#M000011" class="method-signature">
1065
- <span class="method-name">revision</span><span class="method-args">(page_title)</span>
1066
- </a>
1067
- </div>
1068
-
1069
- <div class="method-description">
1070
- <p>
1071
- Fetch latest <a href="Gateway.html#M000011">revision</a> ID of a <a
1072
- href="../MediaWiki.html">MediaWiki</a> page. Does not follow redirects.
1073
- </p>
1074
- <dl>
1075
- <dt>page_title</dt><dd>Page title to fetch
1076
-
1077
- </dd>
1078
- </dl>
1079
- <p>
1080
- Returns <a href="Gateway.html#M000011">revision</a> ID as a string, nil if
1081
- the page does not exist.
1082
- </p>
1083
- <p><a class="source-toggle" href="#"
1084
- onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
1085
- <div class="method-source-code" id="M000011-source">
1086
- <pre>
1087
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 75</span>
1088
- 75: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">revision</span>(<span class="ruby-identifier">page_title</span>)
1089
- 76: <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">'ids'</span>, <span class="ruby-value str">'rvlimit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">page_title</span>}
1090
- 77: <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">first</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">&quot;query/pages/page&quot;</span>]
1091
- 78: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">valid_page?</span> <span class="ruby-identifier">page</span>
1092
- 79: <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">attributes</span>[<span class="ruby-value str">&quot;revid&quot;</span>]
1093
- 80: <span class="ruby-keyword kw">end</span>
1094
- 81: <span class="ruby-keyword kw">end</span>
1095
- </pre>
1096
- </div>
1097
- </div>
1098
- </div>
1099
-
1100
- <div id="method-M000020" class="method-detail">
1101
- <a name="M000020"></a>
1102
-
1103
- <div class="method-heading">
1104
- <a href="#M000020" class="method-signature">
1105
- <span class="method-name">search</span><span class="method-args">(key, namespaces=nil, limit=@options[:limit])</span>
1106
- </a>
1107
- </div>
1108
-
1109
- <div class="method-description">
1110
- <p>
1111
- Get a <a href="Gateway.html#M000018">list</a> of pages with matching
1112
- content in given namespaces
1113
- </p>
1114
- <dl>
1115
- <dt>key</dt><dd>Search key
1116
-
1117
- </dd>
1118
- <dt>namespaces</dt><dd>Array of namespace names to <a href="Gateway.html#M000020">search</a>
1119
- (defaults to main only)
1120
-
1121
- </dd>
1122
- <dt>limit</dt><dd>Maximum number of hits to ask for (defaults to 500; note that Wikimedia
1123
- Foundation wikis allow only 50 for normal users)
1124
-
1125
- </dd>
1126
- </dl>
1127
- <p>
1128
- Returns array of page titles (empty if no matches)
1129
- </p>
1130
- <p><a class="source-toggle" href="#"
1131
- onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
1132
- <div class="method-source-code" id="M000020-source">
1133
- <pre>
1134
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 241</span>
1135
- 241: <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-ivar">@options</span>[<span class="ruby-identifier">:limit</span>])
1136
- 242: <span class="ruby-identifier">titles</span> = []
1137
- 243: <span class="ruby-identifier">offset</span> = <span class="ruby-keyword kw">nil</span>
1138
- 244: <span class="ruby-identifier">in_progress</span> = <span class="ruby-keyword kw">true</span>
1139
- 245:
1140
- 246: <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>,
1141
- 247: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'search'</span>,
1142
- 248: <span class="ruby-value str">'srwhat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'text'</span>,
1143
- 249: <span class="ruby-value str">'srsearch'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">key</span>,
1144
- 250: <span class="ruby-value str">'srlimit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">limit</span>
1145
- 251: }
1146
- 252: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespaces</span>
1147
- 253: <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>
1148
- 254: <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>)
1149
- 255: <span class="ruby-keyword kw">end</span>
1150
- 256: <span class="ruby-keyword kw">begin</span>
1151
- 257: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'sroffset'</span>] = <span class="ruby-identifier">offset</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">offset</span>
1152
- 258: <span class="ruby-identifier">res</span>, <span class="ruby-identifier">offset</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>, <span class="ruby-value str">'//query-continue/search/@sroffset'</span>)
1153
- 259: <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>] }
1154
- 260: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">offset</span>
1155
- 261: <span class="ruby-identifier">titles</span>
1156
- 262: <span class="ruby-keyword kw">end</span>
1157
- </pre>
1158
- </div>
1159
- </div>
1160
- </div>
1161
-
1162
- <div id="method-M000029" class="method-detail">
1163
- <a name="M000029"></a>
1164
-
1165
- <div class="method-heading">
1166
- <a href="#M000029" class="method-signature">
1167
- <span class="method-name">semantic_query</span><span class="method-args">(query, params = [])</span>
1168
- </a>
1169
- </div>
1170
-
1171
- <div class="method-description">
1172
- <p>
1173
- Execute Semantic Mediawiki query
1174
- </p>
1175
- <dl>
1176
- <dt>query</dt><dd>Semantic Mediawiki query
1177
-
1178
- </dd>
1179
- <dt>params</dt><dd>Array of additional parameters or options, eg. mainlabel=Foo or ?Place
1180
- (optional)
1181
-
1182
- </dd>
1183
- </dl>
1184
- <p>
1185
- Returns result as an HTML string
1186
- </p>
1187
- <p><a class="source-toggle" href="#"
1188
- onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
1189
- <div class="method-source-code" id="M000029-source">
1190
- <pre>
1191
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 470</span>
1192
- 470: <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> = [])
1193
- 471: <span class="ruby-identifier">params</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;format=list&quot;</span>
1194
- 472: <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> }
1195
- 473: <span class="ruby-identifier">xml</span>, <span class="ruby-identifier">dummy</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1196
- 474: <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>
1197
- 475: <span class="ruby-keyword kw">end</span>
1198
- </pre>
1199
- </div>
1200
- </div>
1201
- </div>
1202
-
1203
- <div id="method-M000030" class="method-detail">
1204
- <a name="M000030"></a>
1205
-
1206
- <div class="method-heading">
1207
- <a href="#M000030" class="method-signature">
1208
- <span class="method-name">set_groups</span><span class="method-args">(user, groups_to_add = [], groups_to_remove = [], comment = '')</span>
1209
- </a>
1210
- </div>
1211
-
1212
- <div class="method-description">
1213
- <p>
1214
- Set groups for a user
1215
- </p>
1216
- <dl>
1217
- <dt>user</dt><dd>Username of user to modify
1218
-
1219
- </dd>
1220
- <dt>groups_to_add</dt><dd>Groups to add user to, as an array or a string if a single group (optional)
1221
-
1222
- </dd>
1223
- <dt>groups_to_remove</dt><dd>Groups to remove user from, as an array or a string if a single group
1224
- (optional)
1225
-
1226
- </dd>
1227
- </dl>
1228
- <p><a class="source-toggle" href="#"
1229
- onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
1230
- <div class="method-source-code" id="M000030-source">
1231
- <pre>
1232
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 482</span>
1233
- 482: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_groups</span>(<span class="ruby-identifier">user</span>, <span class="ruby-identifier">groups_to_add</span> = [], <span class="ruby-identifier">groups_to_remove</span> = [], <span class="ruby-identifier">comment</span> = <span class="ruby-value str">''</span>)
1234
- 483: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">get_userrights_token</span>(<span class="ruby-identifier">user</span>)
1235
- 484: <span class="ruby-identifier">userrights</span>(<span class="ruby-identifier">user</span>, <span class="ruby-identifier">token</span>, <span class="ruby-identifier">groups_to_add</span>, <span class="ruby-identifier">groups_to_remove</span>, <span class="ruby-identifier">comment</span>)
1236
- 485: <span class="ruby-keyword kw">end</span>
1237
- </pre>
1238
- </div>
1239
- </div>
1240
- </div>
1241
-
1242
- <div id="method-M000017" class="method-detail">
1243
- <a name="M000017"></a>
1244
-
1245
- <div class="method-heading">
1246
- <a href="#M000017" class="method-signature">
1247
- <span class="method-name">undelete</span><span class="method-args">(title)</span>
1248
- </a>
1249
- </div>
1250
-
1251
- <div class="method-description">
1252
- <p>
1253
- Undelete all revisions of one page.
1254
- </p>
1255
- <dl>
1256
- <dt>title</dt><dd>Title of page to <a href="Gateway.html#M000017">undelete</a>
1257
-
1258
- </dd>
1259
- </dl>
1260
- <p>
1261
- Returns number of revisions undeleted, or zero if nothing to <a
1262
- href="Gateway.html#M000017">undelete</a>
1263
- </p>
1264
- <p><a class="source-toggle" href="#"
1265
- onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
1266
- <div class="method-source-code" id="M000017-source">
1267
- <pre>
1268
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 177</span>
1269
- 177: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">undelete</span>(<span class="ruby-identifier">title</span>)
1270
- 178: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">get_undelete_token</span>(<span class="ruby-identifier">title</span>)
1271
- 179: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>
1272
- 180: <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> }
1273
- 181: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>).<span class="ruby-identifier">first</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>
1274
- 182: <span class="ruby-keyword kw">else</span>
1275
- 183: <span class="ruby-value">0</span> <span class="ruby-comment cmt"># No revisions to undelete</span>
1276
- 184: <span class="ruby-keyword kw">end</span>
1277
- 185: <span class="ruby-keyword kw">end</span>
1278
- </pre>
1279
- </div>
1280
- </div>
1281
- </div>
1282
-
1283
- <div id="method-M000021" class="method-detail">
1284
- <a name="M000021"></a>
1285
-
1286
- <div class="method-heading">
1287
- <a href="#M000021" class="method-signature">
1288
- <span class="method-name">upload</span><span class="method-args">(path, options={})</span>
1289
- </a>
1290
- </div>
1291
-
1292
- <div class="method-description">
1293
- <p>
1294
- Upload a file, or <a href="Gateway.html#M000010">get</a> the status of
1295
- pending uploads. Several methods are available:
1296
- </p>
1297
- <ul>
1298
- <li>Upload file contents directly.
1299
-
1300
- </li>
1301
- <li>Have the <a href="../MediaWiki.html">MediaWiki</a> server fetch a file from
1302
- a URL, using the &quot;url&quot; parameter
1303
-
1304
- </li>
1305
- </ul>
1306
- <p>
1307
- Requires Mediawiki 1.16+
1308
- </p>
1309
- <p>
1310
- Arguments:
1311
- </p>
1312
- <ul>
1313
- <li>[path] Path to file to <a href="Gateway.html#M000021">upload</a>. Set to
1314
- nil if uploading from URL.
1315
-
1316
- </li>
1317
- <li>[options] Hash of additional options
1318
-
1319
- </li>
1320
- </ul>
1321
- <p>
1322
- Note that queries using session keys must be done in the same <a
1323
- href="Gateway.html#M000009">login</a> session as the query that originally
1324
- returned the key (i.e. do not log out and then log back in).
1325
- </p>
1326
- <p>
1327
- Options:
1328
- </p>
1329
- <ul>
1330
- <li>&#8216;filename&#8217; - Target filename (defaults to local name if not
1331
- given), options[:target] is alias for this.
1332
-
1333
- </li>
1334
- <li>&#8216;comment&#8217; - Upload comment. Also used as the initial page text
1335
- for <a href="Gateway.html#M000008">new</a> files if &quot;text&quot; is not
1336
- specified.
1337
-
1338
- </li>
1339
- <li>&#8216;text&#8217; - Initial page text for <a
1340
- href="Gateway.html#M000008">new</a> files
1341
-
1342
- </li>
1343
- <li>&#8216;watch&#8217; - Watch the page
1344
-
1345
- </li>
1346
- <li>&#8216;ignorewarnings&#8217; - Ignore any warnings
1347
-
1348
- </li>
1349
- <li>&#8216;url&#8217; - Url to fetch the file from. Set path to nil if you want
1350
- to use this.
1351
-
1352
- </li>
1353
- </ul>
1354
- <p>
1355
- Deprecated but still supported options:
1356
- </p>
1357
- <ul>
1358
- <li>:description - Description of this file. Used as &#8216;text&#8217;.
1359
-
1360
- </li>
1361
- <li>:target - Target filename, same as &#8216;filename&#8217;.
1362
-
1363
- </li>
1364
- <li>:summary - Edit summary for history. Used as &#8216;comment&#8217;. Also
1365
- used as &#8216;text&#8217; if neither it or :description is specified.
1366
-
1367
- </li>
1368
- </ul>
1369
- <p>
1370
- Examples:
1371
- </p>
1372
- <pre>
1373
- mw.upload('/path/to/local/file.jpg', 'filename' =&gt; &quot;RemoteFile.jpg&quot;)
1374
- mw.upload(nil, 'filename' =&gt; &quot;RemoteFile2.jpg&quot;, 'url' =&gt; 'http://remote.com/server/file.jpg')
1375
- </pre>
1376
- <p><a class="source-toggle" href="#"
1377
- onclick="toggleCode('M000021-source');return false;">[Source]</a></p>
1378
- <div class="method-source-code" id="M000021-source">
1379
- <pre>
1380
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 298</span>
1381
- 298: <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>={})
1382
- 299: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:description</span>]
1383
- 300: <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>]
1384
- 301: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:description</span>)
1385
- 302: <span class="ruby-keyword kw">end</span>
1386
- 303:
1387
- 304: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:target</span>]
1388
- 305: <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>]
1389
- 306: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:target</span>)
1390
- 307: <span class="ruby-keyword kw">end</span>
1391
- 308:
1392
- 309: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>]
1393
- 310: <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>]
1394
- 311: <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>]
1395
- 312: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:summary</span>)
1396
- 313: <span class="ruby-keyword kw">end</span>
1397
- 314:
1398
- 315: <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>
1399
- 316: <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>
1400
- 317: <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>]
1401
- 318: <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>
1402
- 319:
1403
- 320: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(
1404
- 321: <span class="ruby-value str">&quot;One of the 'file', 'url' or 'sessionkey' options must be specified!&quot;</span>
1405
- 322: ) <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>]
1406
- 323:
1407
- 324: <span class="ruby-identifier">form_data</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(
1408
- 325: <span class="ruby-value str">'action'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'upload'</span>,
1409
- 326: <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>])
1410
- 327: )
1411
- 328:
1412
- 329: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1413
- 330: <span class="ruby-keyword kw">end</span>
1414
- </pre>
1415
- </div>
1416
- </div>
1417
- </div>
1418
-
1419
- <h3 class="section-bar">Private Instance methods</h3>
1420
-
1421
- <div id="method-M000037" class="method-detail">
1422
- <a name="M000037"></a>
1423
-
1424
- <div class="method-heading">
1425
- <a href="#M000037" class="method-signature">
1426
- <span class="method-name">get_response</span><span class="method-args">(res)</span>
1427
- </a>
1428
- </div>
1429
-
1430
- <div class="method-description">
1431
- <p>
1432
- Get API XML response If there are errors or warnings, raise <a
1433
- href="APIError.html">APIError</a> Otherwise return XML root
1434
- </p>
1435
- <p><a class="source-toggle" href="#"
1436
- onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
1437
- <div class="method-source-code" id="M000037-source">
1438
- <pre>
1439
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 598</span>
1440
- 598: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_response</span>(<span class="ruby-identifier">res</span>)
1441
- 599: <span class="ruby-keyword kw">begin</span>
1442
- 600: <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>
1443
- 601: <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>
1444
- 602: <span class="ruby-identifier">raise</span> <span class="ruby-constant">MediaWiki</span><span class="ruby-operator">::</span><span class="ruby-constant">Exception</span>.<span class="ruby-identifier">new</span> <span class="ruby-value str">&quot;Response is not XML. Are you sure you are pointing to api.php?&quot;</span>
1445
- 603: <span class="ruby-keyword kw">end</span>
1446
- 604: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;RES: #{doc}&quot;</span>)
1447
- 605: <span class="ruby-identifier">raise</span> <span class="ruby-constant">MediaWiki</span><span class="ruby-operator">::</span><span class="ruby-constant">Exception</span>.<span class="ruby-identifier">new</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>
1448
- 606: <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>]
1449
- 607: <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>]
1450
- 608: <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>]
1451
- 609: <span class="ruby-identifier">raise</span> <span class="ruby-constant">APIError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">code</span>, <span class="ruby-identifier">info</span>)
1452
- 610: <span class="ruby-keyword kw">end</span>
1453
- 611: <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;warnings&quot;</span>]
1454
- 612: <span class="ruby-identifier">warning</span>(<span class="ruby-node">&quot;API warning: #{doc.elements[&quot;warnings&quot;].children.map {|e| e.text}.join(&quot;, &quot;)}&quot;</span>)
1455
- 613: <span class="ruby-keyword kw">end</span>
1456
- 614: <span class="ruby-identifier">doc</span>
1457
- 615: <span class="ruby-keyword kw">end</span>
1458
- </pre>
1459
- </div>
1460
- </div>
1461
- </div>
1462
-
1463
- <div id="method-M000032" class="method-detail">
1464
- <a name="M000032"></a>
1465
-
1466
- <div class="method-heading">
1467
- <a href="#M000032" class="method-signature">
1468
- <span class="method-name">get_token</span><span class="method-args">(type, page_titles)</span>
1469
- </a>
1470
- </div>
1471
-
1472
- <div class="method-description">
1473
- <p>
1474
- Fetch token (type &#8216;<a href="Gateway.html#M000016">delete</a>&#8217;,
1475
- &#8216;<a href="Gateway.html#M000014">edit</a>&#8217;, &#8216;<a
1476
- href="Gateway.html#M000025">import</a>&#8217;, &#8216;<a
1477
- href="Gateway.html#M000015">move</a>&#8217;)
1478
- </p>
1479
- <p><a class="source-toggle" href="#"
1480
- onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
1481
- <div class="method-source-code" id="M000032-source">
1482
- <pre>
1483
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 503</span>
1484
- 503: <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>)
1485
- 504: <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>}
1486
- 505: <span class="ruby-identifier">res</span>, <span class="ruby-identifier">dummy</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1487
- 506: <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>]
1488
- 507: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Unauthorized</span>.<span class="ruby-identifier">new</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>
1489
- 508: <span class="ruby-identifier">token</span>
1490
- 509: <span class="ruby-keyword kw">end</span>
1491
- </pre>
1492
- </div>
1493
- </div>
1494
- </div>
1495
-
1496
- <div id="method-M000033" class="method-detail">
1497
- <a name="M000033"></a>
1498
-
1499
- <div class="method-heading">
1500
- <a href="#M000033" class="method-signature">
1501
- <span class="method-name">get_undelete_token</span><span class="method-args">(page_titles)</span>
1502
- </a>
1503
- </div>
1504
-
1505
- <div class="method-description">
1506
- <p><a class="source-toggle" href="#"
1507
- onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
1508
- <div class="method-source-code" id="M000033-source">
1509
- <pre>
1510
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 511</span>
1511
- 511: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_undelete_token</span>(<span class="ruby-identifier">page_titles</span>)
1512
- 512: <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>}
1513
- 513: <span class="ruby-identifier">res</span>, <span class="ruby-identifier">dummy</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1514
- 514: <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>]
1515
- 515: <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>]
1516
- 516: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Unauthorized</span>.<span class="ruby-identifier">new</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>
1517
- 517: <span class="ruby-identifier">token</span>
1518
- 518: <span class="ruby-keyword kw">else</span>
1519
- 519: <span class="ruby-keyword kw">nil</span>
1520
- 520: <span class="ruby-keyword kw">end</span>
1521
- 521: <span class="ruby-keyword kw">end</span>
1522
- </pre>
1523
- </div>
1524
- </div>
1525
- </div>
1526
-
1527
- <div id="method-M000034" class="method-detail">
1528
- <a name="M000034"></a>
1529
-
1530
- <div class="method-heading">
1531
- <a href="#M000034" class="method-signature">
1532
- <span class="method-name">get_userrights_token</span><span class="method-args">(user)</span>
1533
- </a>
1534
- </div>
1535
-
1536
- <div class="method-description">
1537
- <p>
1538
- User rights management (aka group assignment)
1539
- </p>
1540
- <p><a class="source-toggle" href="#"
1541
- onclick="toggleCode('M000034-source');return false;">[Source]</a></p>
1542
- <div class="method-source-code" id="M000034-source">
1543
- <pre>
1544
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 524</span>
1545
- 524: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_userrights_token</span>(<span class="ruby-identifier">user</span>)
1546
- 525: <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">'users'</span>, <span class="ruby-value str">'ustoken'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'userrights'</span>, <span class="ruby-value str">'ususers'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">user</span>}
1547
- 526: <span class="ruby-identifier">res</span>, <span class="ruby-identifier">dummy</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1548
- 527: <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/users/user&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;userrightstoken&quot;</span>]
1549
- 528:
1550
- 529: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;RESPONSE: #{res.to_s}&quot;</span>)
1551
- 530: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">nil?</span>
1552
- 531: <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/users/user&quot;</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;missing&quot;</span>]
1553
- 532: <span class="ruby-identifier">raise</span> <span class="ruby-constant">APIError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'invaliduser'</span>, <span class="ruby-node">&quot;User '#{user}' was not found (get_userrights_token)&quot;</span>)
1554
- 533: <span class="ruby-keyword kw">else</span>
1555
- 534: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Unauthorized</span>.<span class="ruby-identifier">new</span> <span class="ruby-node">&quot;User '#{@username}' is not permitted to perform this operation: get_userrights_token&quot;</span>
1556
- 535: <span class="ruby-keyword kw">end</span>
1557
- 536: <span class="ruby-keyword kw">end</span>
1558
- 537:
1559
- 538: <span class="ruby-identifier">token</span>
1560
- 539: <span class="ruby-keyword kw">end</span>
1561
- </pre>
1562
- </div>
1563
- </div>
1564
- </div>
1565
-
1566
- <div id="method-M000036" class="method-detail">
1567
- <a name="M000036"></a>
1568
-
1569
- <div class="method-heading">
1570
- <a href="#M000036" class="method-signature">
1571
- <span class="method-name">make_api_request</span><span class="method-args">(form_data, continue_xpath=nil, retry_count=1)</span>
1572
- </a>
1573
- </div>
1574
-
1575
- <div class="method-description">
1576
- <p>
1577
- Make generic request to API
1578
- </p>
1579
- <dl>
1580
- <dt>form_data</dt><dd>hash or string of attributes to post
1581
-
1582
- </dd>
1583
- <dt>continue_xpath</dt><dd>XPath selector for query continue parameter
1584
-
1585
- </dd>
1586
- <dt>retry_count</dt><dd>Counter for retries
1587
-
1588
- </dd>
1589
- </dl>
1590
- <p>
1591
- Returns XML document
1592
- </p>
1593
- <p><a class="source-toggle" href="#"
1594
- onclick="toggleCode('M000036-source');return false;">[Source]</a></p>
1595
- <div class="method-source-code" id="M000036-source">
1596
- <pre>
1597
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 566</span>
1598
- 566: <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">continue_xpath</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">retry_count</span>=<span class="ruby-value">1</span>)
1599
- 567: <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>
1600
- 568: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'format'</span>] = <span class="ruby-value str">'xml'</span>
1601
- 569: <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>]
1602
- 570: <span class="ruby-keyword kw">end</span>
1603
- 571: <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>)
1604
- 572: <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>
1605
- 573: <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>]
1606
- 574: <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>)
1607
- 575: <span class="ruby-identifier">sleep</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:retry_delay</span>]
1608
- 576: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>, <span class="ruby-identifier">continue_xpath</span>, <span class="ruby-identifier">retry_count</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
1609
- 577: <span class="ruby-keyword kw">end</span>
1610
- 578: <span class="ruby-comment cmt"># Check response for errors and return XML</span>
1611
- 579: <span class="ruby-identifier">raise</span> <span class="ruby-constant">MediaWiki</span><span class="ruby-operator">::</span><span class="ruby-constant">Exception</span>.<span class="ruby-identifier">new</span> <span class="ruby-node">&quot;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>
1612
- 580: <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>)
1613
- 581: <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>)
1614
- 582: <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>]
1615
- 583: <span class="ruby-ivar">@cookies</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">response</span>.<span class="ruby-identifier">cookies</span>)
1616
- 584: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">login_result</span>
1617
- 585: <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>
1618
- 586: <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>]))
1619
- 587: <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">Unauthorized</span>.<span class="ruby-identifier">new</span> <span class="ruby-value str">&quot;Login failed: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">login_result</span>
1620
- 588: <span class="ruby-keyword kw">end</span>
1621
- 589: <span class="ruby-keyword kw">end</span>
1622
- 590: <span class="ruby-identifier">continue</span> = (<span class="ruby-identifier">continue_xpath</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">'query-continue'</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">first</span>(<span class="ruby-identifier">doc</span>, <span class="ruby-identifier">continue_xpath</span>).<span class="ruby-identifier">value</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
1623
- 591: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">doc</span>, <span class="ruby-identifier">continue</span>]
1624
- 592: <span class="ruby-keyword kw">end</span>
1625
- 593: <span class="ruby-keyword kw">end</span>
1626
- </pre>
1627
- </div>
1628
- </div>
1629
- </div>
1630
-
1631
- <div id="method-M000035" class="method-detail">
1632
- <a name="M000035"></a>
1633
-
1634
- <div class="method-heading">
1635
- <a href="#M000035" class="method-signature">
1636
- <span class="method-name">userrights</span><span class="method-args">(user, token, groups_to_add, groups_to_remove, reason)</span>
1637
- </a>
1638
- </div>
1639
-
1640
- <div class="method-description">
1641
- <p><a class="source-toggle" href="#"
1642
- onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
1643
- <div class="method-source-code" id="M000035-source">
1644
- <pre>
1645
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 541</span>
1646
- 541: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">userrights</span>(<span class="ruby-identifier">user</span>, <span class="ruby-identifier">token</span>, <span class="ruby-identifier">groups_to_add</span>, <span class="ruby-identifier">groups_to_remove</span>, <span class="ruby-identifier">reason</span>)
1647
- 542: <span class="ruby-comment cmt"># groups_to_add and groups_to_remove can be a string or an array. Turn them into MediaWiki's pipe-delimited list format.</span>
1648
- 543: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">groups_to_add</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
1649
- 544: <span class="ruby-identifier">groups_to_add</span> = <span class="ruby-identifier">groups_to_add</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'|'</span>)
1650
- 545: <span class="ruby-keyword kw">end</span>
1651
- 546: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">groups_to_remove</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">Array</span>
1652
- 547: <span class="ruby-identifier">groups_to_remove</span> = <span class="ruby-identifier">groups_to_remove</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'|'</span>)
1653
- 548: <span class="ruby-keyword kw">end</span>
1654
- 549:
1655
- 550: <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">'userrights'</span>, <span class="ruby-value str">'user'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">user</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">token</span>,
1656
- 551: <span class="ruby-value str">'add'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">groups_to_add</span>,
1657
- 552: <span class="ruby-value str">'remove'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">groups_to_remove</span>,
1658
- 553: <span class="ruby-value str">'reason'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">reason</span>
1659
- 554: }
1660
- 555: <span class="ruby-identifier">res</span>, <span class="ruby-identifier">dummy</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
1661
- 556: <span class="ruby-identifier">res</span>
1662
- 557: <span class="ruby-keyword kw">end</span>
1663
- </pre>
1664
- </div>
1665
- </div>
1666
- </div>
1667
-
1668
- <div id="method-M000038" class="method-detail">
1669
- <a name="M000038"></a>
1670
-
1671
- <div class="method-heading">
1672
- <a href="#M000038" class="method-signature">
1673
- <span class="method-name">valid_page?</span><span class="method-args">(page)</span>
1674
- </a>
1675
- </div>
1676
-
1677
- <div class="method-description">
1678
- <p><a class="source-toggle" href="#"
1679
- onclick="toggleCode('M000038-source');return false;">[Source]</a></p>
1680
- <div class="method-source-code" id="M000038-source">
1681
- <pre>
1682
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 617</span>
1683
- 617: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">valid_page?</span>(<span class="ruby-identifier">page</span>)
1684
- 618: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">page</span>
1685
- 619: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;missing&quot;</span>]
1686
- 620: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">&quot;invalid&quot;</span>]
1687
- 621: <span class="ruby-identifier">warning</span>(<span class="ruby-node">&quot;Invalid title '#{page.attributes[&quot;title&quot;]}'&quot;</span>)
1688
- 622: <span class="ruby-keyword kw">else</span>
1689
- 623: <span class="ruby-keyword kw">true</span>
1690
- 624: <span class="ruby-keyword kw">end</span>
1691
- 625: <span class="ruby-keyword kw">end</span>
1692
- </pre>
1693
- </div>
1694
- </div>
1695
- </div>
1696
-
1697
- <div id="method-M000039" class="method-detail">
1698
- <a name="M000039"></a>
1699
-
1700
- <div class="method-heading">
1701
- <a href="#M000039" class="method-signature">
1702
- <span class="method-name">warning</span><span class="method-args">(msg)</span>
1703
- </a>
1704
- </div>
1705
-
1706
- <div class="method-description">
1707
- <p><a class="source-toggle" href="#"
1708
- onclick="toggleCode('M000039-source');return false;">[Source]</a></p>
1709
- <div class="method-source-code" id="M000039-source">
1710
- <pre>
1711
- <span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 627</span>
1712
- 627: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>(<span class="ruby-identifier">msg</span>)
1713
- 628: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:ignorewarnings</span>]
1714
- 629: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">warn</span>(<span class="ruby-identifier">msg</span>)
1715
- 630: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1716
- 631: <span class="ruby-keyword kw">else</span>
1717
- 632: <span class="ruby-identifier">raise</span> <span class="ruby-constant">APIError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'warning'</span>, <span class="ruby-identifier">msg</span>)
1718
- 633: <span class="ruby-keyword kw">end</span>
1719
- 634: <span class="ruby-keyword kw">end</span>
1720
- </pre>
1721
- </div>
1722
- </div>
1723
- </div>
1724
-
1725
-
1726
- </div>
1727
-
1728
-
1729
- </div>
1730
-
1731
-
1732
- <div id="validator-badges">
1733
- <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1734
- </div>
1735
-
1736
- </body>
1737
- </html>