mediawiki-gateway 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +1 -1
- data/doc/classes/MediaWiki.html +89 -50
- data/doc/classes/MediaWiki/Config.html +12 -12
- data/doc/classes/MediaWiki/Gateway.html +463 -409
- data/doc/created.rid +1 -1
- data/doc/files/README.html +4 -1
- data/doc/files/lib/media_wiki/gateway_rb.html +1 -1
- data/doc/files/lib/media_wiki/utils_rb.html +1 -1
- data/doc/files/script/create_page_rb.html +1 -1
- data/doc/files/script/search_content_rb.html +114 -0
- data/doc/files/script/upload_file_rb.html +1 -1
- data/doc/fr_file_index.html +1 -0
- data/doc/fr_method_index.html +32 -30
- data/lib/media_wiki.rb +1 -1
- data/lib/media_wiki/gateway.rb +13 -2
- data/mediawiki-gateway.gemspec +5 -5
- data/spec/fake_media_wiki/api_pages.rb +4 -3
- data/spec/fake_media_wiki/app.rb +13 -1
- data/spec/fake_media_wiki/query_handling.rb +2 -1
- data/spec/gateway_spec.rb +31 -3
- metadata +9 -6
data/Rakefile
CHANGED
@@ -36,7 +36,7 @@ begin
|
|
36
36
|
gemspec.homepage = "http://github.com/jpatokal/mediawiki-gateway"
|
37
37
|
gemspec.authors = ["Jani Patokallio"]
|
38
38
|
gemspec.version = MediaWiki::VERSION
|
39
|
-
gemspec.add_dependency 'rest-client'
|
39
|
+
gemspec.add_dependency 'rest-client', '>= 1.3.0'
|
40
40
|
gemspec.add_development_dependency 'activesupport'
|
41
41
|
gemspec.add_development_dependency 'jeweler'
|
42
42
|
gemspec.add_development_dependency 'sham_rack'
|
data/doc/classes/MediaWiki.html
CHANGED
@@ -88,11 +88,12 @@
|
|
88
88
|
<h3 class="section-bar">Methods</h3>
|
89
89
|
|
90
90
|
<div class="name-list">
|
91
|
-
<a href="#M000001">
|
92
|
-
<a href="#M000002">
|
93
|
-
<a href="#M000003">
|
94
|
-
<a href="#
|
95
|
-
<a href="#
|
91
|
+
<a href="#M000001">get_base_name</a>
|
92
|
+
<a href="#M000002">get_path_to_subpage</a>
|
93
|
+
<a href="#M000003">get_subpage</a>
|
94
|
+
<a href="#M000004">uri_to_wiki</a>
|
95
|
+
<a href="#M000006">version</a>
|
96
|
+
<a href="#M000005">wiki_to_uri</a>
|
96
97
|
</div>
|
97
98
|
</div>
|
98
99
|
|
@@ -126,21 +127,20 @@ Class <a href="MediaWiki/Gateway.html" class="link">MediaWiki::Gateway</a><br />
|
|
126
127
|
|
127
128
|
<div class="method-heading">
|
128
129
|
<a href="#M000001" class="method-signature">
|
129
|
-
<span class="method-name">
|
130
|
+
<span class="method-name">get_base_name</span><span class="method-args">(title)</span>
|
130
131
|
</a>
|
131
132
|
</div>
|
132
133
|
|
133
134
|
<div class="method-description">
|
134
135
|
<p>
|
135
|
-
Extract
|
136
|
-
returns nil.
|
136
|
+
Extract base name. If there are no subpages, return page name.
|
137
137
|
</p>
|
138
138
|
<p>
|
139
139
|
Examples: <a
|
140
|
-
href="MediaWiki.html#M000001">
|
141
|
-
-> "Namespace:Foo
|
142
|
-
href="MediaWiki.html#M000001">
|
143
|
-
->
|
140
|
+
href="MediaWiki.html#M000001">get_base_name</a>("Namespace:Foo/Bar/Baz")
|
141
|
+
-> "Namespace:Foo" <a
|
142
|
+
href="MediaWiki.html#M000001">get_base_name</a>("Namespace:Foo")
|
143
|
+
-> "Namespace:Foo"
|
144
144
|
</p>
|
145
145
|
<dl>
|
146
146
|
<dt>title</dt><dd>Page name string in Wiki format
|
@@ -152,10 +152,9 @@ href="MediaWiki.html#M000001">get_path_to_subpage</a>("Namespace:Foo")
|
|
152
152
|
<div class="method-source-code" id="M000001-source">
|
153
153
|
<pre>
|
154
154
|
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line 11</span>
|
155
|
-
11: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">
|
156
|
-
12: <span class="ruby-
|
157
|
-
13:
|
158
|
-
14: <span class="ruby-keyword kw">end</span>
|
155
|
+
11: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_base_name</span>(<span class="ruby-identifier">title</span>)
|
156
|
+
12: <span class="ruby-identifier">title</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">first</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">title</span>
|
157
|
+
13: <span class="ruby-keyword kw">end</span>
|
159
158
|
</pre>
|
160
159
|
</div>
|
161
160
|
</div>
|
@@ -166,20 +165,21 @@ href="MediaWiki.html#M000001">get_path_to_subpage</a>("Namespace:Foo")
|
|
166
165
|
|
167
166
|
<div class="method-heading">
|
168
167
|
<a href="#M000002" class="method-signature">
|
169
|
-
<span class="method-name">
|
168
|
+
<span class="method-name">get_path_to_subpage</span><span class="method-args">(title)</span>
|
170
169
|
</a>
|
171
170
|
</div>
|
172
171
|
|
173
172
|
<div class="method-description">
|
174
173
|
<p>
|
175
|
-
Extract subpage
|
174
|
+
Extract path leading up to subpage. If title does not contain a subpage,
|
175
|
+
returns nil.
|
176
176
|
</p>
|
177
177
|
<p>
|
178
178
|
Examples: <a
|
179
|
-
href="MediaWiki.html#M000002">
|
180
|
-
-> "
|
181
|
-
href="MediaWiki.html#M000002">
|
182
|
-
->
|
179
|
+
href="MediaWiki.html#M000002">get_path_to_subpage</a>("Namespace:Foo/Bar/Baz")
|
180
|
+
-> "Namespace:Foo/Bar" <a
|
181
|
+
href="MediaWiki.html#M000002">get_path_to_subpage</a>("Namespace:Foo")
|
182
|
+
-> nil
|
183
183
|
</p>
|
184
184
|
<dl>
|
185
185
|
<dt>title</dt><dd>Page name string in Wiki format
|
@@ -190,9 +190,10 @@ href="MediaWiki.html#M000002">get_subpage</a>("Namespace:Foo")
|
|
190
190
|
onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
|
191
191
|
<div class="method-source-code" id="M000002-source">
|
192
192
|
<pre>
|
193
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line
|
194
|
-
|
195
|
-
|
193
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line 22</span>
|
194
|
+
22: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_path_to_subpage</span>(<span class="ruby-identifier">title</span>)
|
195
|
+
23: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">title</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">title</span>.<span class="ruby-identifier">include?</span> <span class="ruby-value str">'/'</span>
|
196
|
+
24: <span class="ruby-identifier">parts</span> = <span class="ruby-identifier">title</span>.<span class="ruby-identifier">split</span>(<span class="ruby-regexp re">/\/([^\/]*)$/</span>).<span class="ruby-identifier">first</span>
|
196
197
|
25: <span class="ruby-keyword kw">end</span>
|
197
198
|
</pre>
|
198
199
|
</div>
|
@@ -204,6 +205,44 @@ href="MediaWiki.html#M000002">get_subpage</a>("Namespace:Foo")
|
|
204
205
|
|
205
206
|
<div class="method-heading">
|
206
207
|
<a href="#M000003" class="method-signature">
|
208
|
+
<span class="method-name">get_subpage</span><span class="method-args">(title)</span>
|
209
|
+
</a>
|
210
|
+
</div>
|
211
|
+
|
212
|
+
<div class="method-description">
|
213
|
+
<p>
|
214
|
+
Extract subpage name. If there is no hierarchy above, return page name.
|
215
|
+
</p>
|
216
|
+
<p>
|
217
|
+
Examples: <a
|
218
|
+
href="MediaWiki.html#M000003">get_subpage</a>("Namespace:Foo/Bar/Baz")
|
219
|
+
-> "Baz" <a
|
220
|
+
href="MediaWiki.html#M000003">get_subpage</a>("Namespace:Foo")
|
221
|
+
-> "Namespace:Foo"
|
222
|
+
</p>
|
223
|
+
<dl>
|
224
|
+
<dt>title</dt><dd>Page name string in Wiki format
|
225
|
+
|
226
|
+
</dd>
|
227
|
+
</dl>
|
228
|
+
<p><a class="source-toggle" href="#"
|
229
|
+
onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
|
230
|
+
<div class="method-source-code" id="M000003-source">
|
231
|
+
<pre>
|
232
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line 34</span>
|
233
|
+
34: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_subpage</span>(<span class="ruby-identifier">title</span>)
|
234
|
+
35: <span class="ruby-identifier">title</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">last</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">title</span>
|
235
|
+
36: <span class="ruby-keyword kw">end</span>
|
236
|
+
</pre>
|
237
|
+
</div>
|
238
|
+
</div>
|
239
|
+
</div>
|
240
|
+
|
241
|
+
<div id="method-M000004" class="method-detail">
|
242
|
+
<a name="M000004"></a>
|
243
|
+
|
244
|
+
<div class="method-heading">
|
245
|
+
<a href="#M000004" class="method-signature">
|
207
246
|
<span class="method-name">uri_to_wiki</span><span class="method-args">(uri)</span>
|
208
247
|
</a>
|
209
248
|
</div>
|
@@ -221,50 +260,50 @@ href="http://meta.wikimedia.org/wiki/Help:Page_name#Restrictions">meta.wikimedia
|
|
221
260
|
</dd>
|
222
261
|
</dl>
|
223
262
|
<p><a class="source-toggle" href="#"
|
224
|
-
onclick="toggleCode('
|
225
|
-
<div class="method-source-code" id="
|
263
|
+
onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
|
264
|
+
<div class="method-source-code" id="M000004-source">
|
226
265
|
<pre>
|
227
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line
|
228
|
-
|
229
|
-
|
230
|
-
|
266
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line 42</span>
|
267
|
+
42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">uri_to_wiki</span>(<span class="ruby-identifier">uri</span>)
|
268
|
+
43: <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">unescape</span>(<span class="ruby-identifier">uri</span>).<span class="ruby-identifier">tr</span>(<span class="ruby-value str">'_'</span>, <span class="ruby-value str">' '</span>).<span class="ruby-identifier">tr</span>(<span class="ruby-value str">'#<>[]|{}'</span>, <span class="ruby-value str">''</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">uri</span>
|
269
|
+
44: <span class="ruby-keyword kw">end</span>
|
231
270
|
</pre>
|
232
271
|
</div>
|
233
272
|
</div>
|
234
273
|
</div>
|
235
274
|
|
236
|
-
<div id="method-
|
237
|
-
<a name="
|
275
|
+
<div id="method-M000006" class="method-detail">
|
276
|
+
<a name="M000006"></a>
|
238
277
|
|
239
278
|
<div class="method-heading">
|
240
|
-
<a href="#
|
279
|
+
<a href="#M000006" class="method-signature">
|
241
280
|
<span class="method-name">version</span><span class="method-args">()</span>
|
242
281
|
</a>
|
243
282
|
</div>
|
244
283
|
|
245
284
|
<div class="method-description">
|
246
285
|
<p>
|
247
|
-
Return current <a href="MediaWiki.html#
|
286
|
+
Return current <a href="MediaWiki.html#M000006">version</a> of <a
|
248
287
|
href="MediaWiki/Gateway.html">MediaWiki::Gateway</a>
|
249
288
|
</p>
|
250
289
|
<p><a class="source-toggle" href="#"
|
251
|
-
onclick="toggleCode('
|
252
|
-
<div class="method-source-code" id="
|
290
|
+
onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
|
291
|
+
<div class="method-source-code" id="M000006-source">
|
253
292
|
<pre>
|
254
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line
|
255
|
-
|
256
|
-
|
257
|
-
|
293
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line 54</span>
|
294
|
+
54: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">version</span>
|
295
|
+
55: <span class="ruby-constant">MediaWiki</span><span class="ruby-operator">::</span><span class="ruby-constant">VERSION</span>
|
296
|
+
56: <span class="ruby-keyword kw">end</span>
|
258
297
|
</pre>
|
259
298
|
</div>
|
260
299
|
</div>
|
261
300
|
</div>
|
262
301
|
|
263
|
-
<div id="method-
|
264
|
-
<a name="
|
302
|
+
<div id="method-M000005" class="method-detail">
|
303
|
+
<a name="M000005"></a>
|
265
304
|
|
266
305
|
<div class="method-heading">
|
267
|
-
<a href="#
|
306
|
+
<a href="#M000005" class="method-signature">
|
268
307
|
<span class="method-name">wiki_to_uri</span><span class="method-args">(wiki)</span>
|
269
308
|
</a>
|
270
309
|
</div>
|
@@ -281,13 +320,13 @@ slashes or colons
|
|
281
320
|
</dd>
|
282
321
|
</dl>
|
283
322
|
<p><a class="source-toggle" href="#"
|
284
|
-
onclick="toggleCode('
|
285
|
-
<div class="method-source-code" id="
|
323
|
+
onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
|
324
|
+
<div class="method-source-code" id="M000005-source">
|
286
325
|
<pre>
|
287
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line
|
288
|
-
|
289
|
-
|
290
|
-
|
326
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/utils.rb, line 49</span>
|
327
|
+
49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">wiki_to_uri</span>(<span class="ruby-identifier">wiki</span>)
|
328
|
+
50: <span class="ruby-identifier">wiki</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">chunk</span><span class="ruby-operator">|</span> <span class="ruby-constant">CGI</span>.<span class="ruby-identifier">escape</span>(<span class="ruby-identifier">chunk</span>.<span class="ruby-identifier">tr</span>(<span class="ruby-value str">' '</span>, <span class="ruby-value str">'_'</span>)) }.<span class="ruby-identifier">join</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'%3A'</span>, <span class="ruby-value str">':'</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">wiki</span>
|
329
|
+
51: <span class="ruby-keyword kw">end</span>
|
291
330
|
</pre>
|
292
331
|
</div>
|
293
332
|
</div>
|
@@ -86,8 +86,8 @@
|
|
86
86
|
<h3 class="section-bar">Methods</h3>
|
87
87
|
|
88
88
|
<div class="name-list">
|
89
|
-
<a href="#
|
90
|
-
<a href="#
|
89
|
+
<a href="#M000032">abort</a>
|
90
|
+
<a href="#M000031">new</a>
|
91
91
|
</div>
|
92
92
|
</div>
|
93
93
|
|
@@ -157,19 +157,19 @@
|
|
157
157
|
<div id="methods">
|
158
158
|
<h3 class="section-bar">Public Class methods</h3>
|
159
159
|
|
160
|
-
<div id="method-
|
161
|
-
<a name="
|
160
|
+
<div id="method-M000031" class="method-detail">
|
161
|
+
<a name="M000031"></a>
|
162
162
|
|
163
163
|
<div class="method-heading">
|
164
|
-
<a href="#
|
164
|
+
<a href="#M000031" class="method-signature">
|
165
165
|
<span class="method-name">new</span><span class="method-args">(args, type = "read")</span>
|
166
166
|
</a>
|
167
167
|
</div>
|
168
168
|
|
169
169
|
<div class="method-description">
|
170
170
|
<p><a class="source-toggle" href="#"
|
171
|
-
onclick="toggleCode('
|
172
|
-
<div class="method-source-code" id="
|
171
|
+
onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
|
172
|
+
<div class="method-source-code" id="M000031-source">
|
173
173
|
<pre>
|
174
174
|
<span class="ruby-comment cmt"># File lib/media_wiki/config.rb, line 10</span>
|
175
175
|
10: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">args</span>, <span class="ruby-identifier">type</span> = <span class="ruby-value str">"read"</span>)
|
@@ -230,19 +230,19 @@
|
|
230
230
|
|
231
231
|
<h3 class="section-bar">Public Instance methods</h3>
|
232
232
|
|
233
|
-
<div id="method-
|
234
|
-
<a name="
|
233
|
+
<div id="method-M000032" class="method-detail">
|
234
|
+
<a name="M000032"></a>
|
235
235
|
|
236
236
|
<div class="method-heading">
|
237
|
-
<a href="#
|
237
|
+
<a href="#M000032" class="method-signature">
|
238
238
|
<span class="method-name">abort</span><span class="method-args">(error)</span>
|
239
239
|
</a>
|
240
240
|
</div>
|
241
241
|
|
242
242
|
<div class="method-description">
|
243
243
|
<p><a class="source-toggle" href="#"
|
244
|
-
onclick="toggleCode('
|
245
|
-
<div class="method-source-code" id="
|
244
|
+
onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
|
245
|
+
<div class="method-source-code" id="M000032-source">
|
246
246
|
<pre>
|
247
247
|
<span class="ruby-comment cmt"># File lib/media_wiki/config.rb, line 62</span>
|
248
248
|
62: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">abort</span>(<span class="ruby-identifier">error</span>)
|
@@ -86,29 +86,30 @@
|
|
86
86
|
<h3 class="section-bar">Methods</h3>
|
87
87
|
|
88
88
|
<div class="name-list">
|
89
|
-
<a href="#
|
90
|
-
<a href="#
|
91
|
-
<a href="#
|
92
|
-
<a href="#
|
93
|
-
<a href="#
|
94
|
-
<a href="#
|
95
|
-
<a href="#
|
96
|
-
<a href="#
|
97
|
-
<a href="#
|
98
|
-
<a href="#
|
99
|
-
<a href="#
|
100
|
-
<a href="#
|
101
|
-
<a href="#
|
102
|
-
<a href="#
|
103
|
-
<a href="#
|
104
|
-
<a href="#
|
105
|
-
<a href="#
|
106
|
-
<a href="#
|
107
|
-
<a href="#
|
108
|
-
<a href="#
|
109
|
-
<a href="#
|
110
|
-
<a href="#
|
111
|
-
<a href="#
|
89
|
+
<a href="#M000016">backlinks</a>
|
90
|
+
<a href="#M000011">create</a>
|
91
|
+
<a href="#M000013">delete</a>
|
92
|
+
<a href="#M000021">download</a>
|
93
|
+
<a href="#M000023">export</a>
|
94
|
+
<a href="#M000025">extensions</a>
|
95
|
+
<a href="#M000009">get</a>
|
96
|
+
<a href="#M000030">get_response</a>
|
97
|
+
<a href="#M000027">get_token</a>
|
98
|
+
<a href="#M000028">get_undelete_token</a>
|
99
|
+
<a href="#M000020">image_info</a>
|
100
|
+
<a href="#M000022">import</a>
|
101
|
+
<a href="#M000015">list</a>
|
102
|
+
<a href="#M000008">login</a>
|
103
|
+
<a href="#M000029">make_api_request</a>
|
104
|
+
<a href="#M000012">move</a>
|
105
|
+
<a href="#M000024">namespaces_by_prefix</a>
|
106
|
+
<a href="#M000007">new</a>
|
107
|
+
<a href="#M000019">redirect?</a>
|
108
|
+
<a href="#M000010">render</a>
|
109
|
+
<a href="#M000017">search</a>
|
110
|
+
<a href="#M000026">semantic_query</a>
|
111
|
+
<a href="#M000014">undelete</a>
|
112
|
+
<a href="#M000018">upload</a>
|
112
113
|
</div>
|
113
114
|
</div>
|
114
115
|
|
@@ -148,11 +149,11 @@
|
|
148
149
|
<div id="methods">
|
149
150
|
<h3 class="section-bar">Public Class methods</h3>
|
150
151
|
|
151
|
-
<div id="method-
|
152
|
-
<a name="
|
152
|
+
<div id="method-M000007" class="method-detail">
|
153
|
+
<a name="M000007"></a>
|
153
154
|
|
154
155
|
<div class="method-heading">
|
155
|
-
<a href="#
|
156
|
+
<a href="#M000007" class="method-signature">
|
156
157
|
<span class="method-name">new</span><span class="method-args">(url, options={})</span>
|
157
158
|
</a>
|
158
159
|
</div>
|
@@ -177,7 +178,7 @@ Options:
|
|
177
178
|
</p>
|
178
179
|
<dl>
|
179
180
|
<dt>:limit</dt><dd>Maximum number of results returned per <a
|
180
|
-
href="Gateway.html#
|
181
|
+
href="Gateway.html#M000017">search</a> (see <a
|
181
182
|
href="http://www.mediawiki.org/wiki/API:Query_-_Lists#Limits">www.mediawiki.org/wiki/API:Query_-_Lists#Limits</a>),
|
182
183
|
defaults to the <a href="../MediaWiki.html">MediaWiki</a> default of 500.
|
183
184
|
|
@@ -202,8 +203,8 @@ returns 503 Service Unavailable, defaults to 10 seconds.
|
|
202
203
|
</dd>
|
203
204
|
</dl>
|
204
205
|
<p><a class="source-toggle" href="#"
|
205
|
-
onclick="toggleCode('
|
206
|
-
<div class="method-source-code" id="
|
206
|
+
onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
|
207
|
+
<div class="method-source-code" id="M000007-source">
|
207
208
|
<pre>
|
208
209
|
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 23</span>
|
209
210
|
23: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">url</span>, <span class="ruby-identifier">options</span>={})
|
@@ -228,18 +229,18 @@ returns 503 Service Unavailable, defaults to 10 seconds.
|
|
228
229
|
|
229
230
|
<h3 class="section-bar">Public Instance methods</h3>
|
230
231
|
|
231
|
-
<div id="method-
|
232
|
-
<a name="
|
232
|
+
<div id="method-M000016" class="method-detail">
|
233
|
+
<a name="M000016"></a>
|
233
234
|
|
234
235
|
<div class="method-heading">
|
235
|
-
<a href="#
|
236
|
+
<a href="#M000016" class="method-signature">
|
236
237
|
<span class="method-name">backlinks</span><span class="method-args">(title, filter = "all")</span>
|
237
238
|
</a>
|
238
239
|
</div>
|
239
240
|
|
240
241
|
<div class="method-description">
|
241
242
|
<p>
|
242
|
-
Get a <a href="Gateway.html#
|
243
|
+
Get a <a href="Gateway.html#M000015">list</a> of pages that link to a
|
243
244
|
target page
|
244
245
|
</p>
|
245
246
|
<dl>
|
@@ -255,48 +256,47 @@ target page
|
|
255
256
|
Returns array of page titles (empty if no matches)
|
256
257
|
</p>
|
257
258
|
<p><a class="source-toggle" href="#"
|
258
|
-
onclick="toggleCode('
|
259
|
-
<div class="method-source-code" id="
|
259
|
+
onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
|
260
|
+
<div class="method-source-code" id="M000016-source">
|
260
261
|
<pre>
|
261
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
215: <span class="ruby-keyword kw">end</span>
|
262
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 197</span>
|
263
|
+
197: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">backlinks</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">filter</span> = <span class="ruby-value str">"all"</span>)
|
264
|
+
198: <span class="ruby-identifier">titles</span> = []
|
265
|
+
199: <span class="ruby-identifier">blcontinue</span> = <span class="ruby-keyword kw">nil</span>
|
266
|
+
200: <span class="ruby-keyword kw">begin</span>
|
267
|
+
201: <span class="ruby-identifier">form_data</span> =
|
268
|
+
202: {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>,
|
269
|
+
203: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'backlinks'</span>,
|
270
|
+
204: <span class="ruby-value str">'bltitle'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">title</span>,
|
271
|
+
205: <span class="ruby-value str">'blfilterredir'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">filter</span>,
|
272
|
+
206: <span class="ruby-value str">'bllimit'</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:limit</span>] }
|
273
|
+
207: <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>
|
274
|
+
208: <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>)
|
275
|
+
209: <span class="ruby-identifier">titles</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">res</span>, <span class="ruby-value str">"//bl"</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"title"</span>] }
|
276
|
+
210: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">blcontinue</span>
|
277
|
+
211: <span class="ruby-identifier">titles</span>
|
278
|
+
212: <span class="ruby-keyword kw">end</span>
|
279
279
|
</pre>
|
280
280
|
</div>
|
281
281
|
</div>
|
282
282
|
</div>
|
283
283
|
|
284
|
-
<div id="method-
|
285
|
-
<a name="
|
284
|
+
<div id="method-M000011" class="method-detail">
|
285
|
+
<a name="M000011"></a>
|
286
286
|
|
287
287
|
<div class="method-heading">
|
288
|
-
<a href="#
|
288
|
+
<a href="#M000011" class="method-signature">
|
289
289
|
<span class="method-name">create</span><span class="method-args">(title, content, options={})</span>
|
290
290
|
</a>
|
291
291
|
</div>
|
292
292
|
|
293
293
|
<div class="method-description">
|
294
294
|
<p>
|
295
|
-
Create a <a href="Gateway.html#
|
295
|
+
Create a <a href="Gateway.html#M000007">new</a> page, or overwrite an
|
296
296
|
existing one
|
297
297
|
</p>
|
298
298
|
<dl>
|
299
|
-
<dt>title</dt><dd>Page title to <a href="Gateway.html#
|
299
|
+
<dt>title</dt><dd>Page title to <a href="Gateway.html#M000011">create</a> or overwrite,
|
300
300
|
string
|
301
301
|
|
302
302
|
</dd>
|
@@ -318,13 +318,13 @@ Options:
|
|
318
318
|
|
319
319
|
</li>
|
320
320
|
<li>[:token] Use this existing edit token instead requesting a <a
|
321
|
-
href="Gateway.html#
|
321
|
+
href="Gateway.html#M000007">new</a> one (useful for bulk loads)
|
322
322
|
|
323
323
|
</li>
|
324
324
|
</ul>
|
325
325
|
<p><a class="source-toggle" href="#"
|
326
|
-
onclick="toggleCode('
|
327
|
-
<div class="method-source-code" id="
|
326
|
+
onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
|
327
|
+
<div class="method-source-code" id="M000011-source">
|
328
328
|
<pre>
|
329
329
|
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 117</span>
|
330
330
|
117: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">content</span>, <span class="ruby-identifier">options</span>={})
|
@@ -337,11 +337,11 @@ href="Gateway.html#M000006">new</a> one (useful for bulk loads)
|
|
337
337
|
</div>
|
338
338
|
</div>
|
339
339
|
|
340
|
-
<div id="method-
|
341
|
-
<a name="
|
340
|
+
<div id="method-M000013" class="method-detail">
|
341
|
+
<a name="M000013"></a>
|
342
342
|
|
343
343
|
<div class="method-heading">
|
344
|
-
<a href="#
|
344
|
+
<a href="#M000013" class="method-signature">
|
345
345
|
<span class="method-name">delete</span><span class="method-args">(title)</span>
|
346
346
|
</a>
|
347
347
|
</div>
|
@@ -352,13 +352,13 @@ Delete one page. (<a href="../MediaWiki.html">MediaWiki</a> API does not
|
|
352
352
|
support deleting multiple pages at a time.)
|
353
353
|
</p>
|
354
354
|
<dl>
|
355
|
-
<dt>title</dt><dd>Title of page to <a href="Gateway.html#
|
355
|
+
<dt>title</dt><dd>Title of page to <a href="Gateway.html#M000013">delete</a>
|
356
356
|
|
357
357
|
</dd>
|
358
358
|
</dl>
|
359
359
|
<p><a class="source-toggle" href="#"
|
360
|
-
onclick="toggleCode('
|
361
|
-
<div class="method-source-code" id="
|
360
|
+
onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
|
361
|
+
<div class="method-source-code" id="M000013-source">
|
362
362
|
<pre>
|
363
363
|
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 147</span>
|
364
364
|
147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">delete</span>(<span class="ruby-identifier">title</span>)
|
@@ -370,11 +370,11 @@ support deleting multiple pages at a time.)
|
|
370
370
|
</div>
|
371
371
|
</div>
|
372
372
|
|
373
|
-
<div id="method-
|
374
|
-
<a name="
|
373
|
+
<div id="method-M000021" class="method-detail">
|
374
|
+
<a name="M000021"></a>
|
375
375
|
|
376
376
|
<div class="method-heading">
|
377
|
-
<a href="#
|
377
|
+
<a href="#M000021" class="method-signature">
|
378
378
|
<span class="method-name">download</span><span class="method-args">(file_name, options={})</span>
|
379
379
|
</a>
|
380
380
|
</div>
|
@@ -382,36 +382,36 @@ support deleting multiple pages at a time.)
|
|
382
382
|
<div class="method-description">
|
383
383
|
<p>
|
384
384
|
Download <em>file_name</em>. Returns file contents. All options are passed
|
385
|
-
to <a href="Gateway.html#
|
385
|
+
to <a href="Gateway.html#M000020">image_info</a> however
|
386
386
|
options[‘iiprop’] is forced to url. You can still set other
|
387
387
|
options to control what file you want to <a
|
388
|
-
href="Gateway.html#
|
388
|
+
href="Gateway.html#M000021">download</a>.
|
389
389
|
</p>
|
390
390
|
<p><a class="source-toggle" href="#"
|
391
|
-
onclick="toggleCode('
|
392
|
-
<div class="method-source-code" id="
|
391
|
+
onclick="toggleCode('M000021-source');return false;">[Source]</a></p>
|
392
|
+
<div class="method-source-code" id="M000021-source">
|
393
393
|
<pre>
|
394
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
394
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 380</span>
|
395
|
+
380: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">download</span>(<span class="ruby-identifier">file_name</span>, <span class="ruby-identifier">options</span>={})
|
396
|
+
381: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>] = <span class="ruby-value str">'url'</span>
|
397
|
+
382:
|
398
|
+
383: <span class="ruby-identifier">attributes</span> = <span class="ruby-identifier">image_info</span>(<span class="ruby-identifier">file_name</span>, <span class="ruby-identifier">options</span>)
|
399
|
+
384: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attributes</span>
|
400
|
+
385: <span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">get</span> <span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'url'</span>]
|
401
|
+
386: <span class="ruby-keyword kw">else</span>
|
402
|
+
387: <span class="ruby-keyword kw">nil</span>
|
403
|
+
388: <span class="ruby-keyword kw">end</span>
|
404
|
+
389: <span class="ruby-keyword kw">end</span>
|
405
405
|
</pre>
|
406
406
|
</div>
|
407
407
|
</div>
|
408
408
|
</div>
|
409
409
|
|
410
|
-
<div id="method-
|
411
|
-
<a name="
|
410
|
+
<div id="method-M000023" class="method-detail">
|
411
|
+
<a name="M000023"></a>
|
412
412
|
|
413
413
|
<div class="method-heading">
|
414
|
-
<a href="#
|
414
|
+
<a href="#M000023" class="method-signature">
|
415
415
|
<span class="method-name">export</span><span class="method-args">(page_titles)</span>
|
416
416
|
</a>
|
417
417
|
</div>
|
@@ -429,61 +429,61 @@ Exports a page or set of pages
|
|
429
429
|
Returns <a href="../MediaWiki.html">MediaWiki</a> XML dump
|
430
430
|
</p>
|
431
431
|
<p><a class="source-toggle" href="#"
|
432
|
-
onclick="toggleCode('
|
433
|
-
<div class="method-source-code" id="
|
432
|
+
onclick="toggleCode('M000023-source');return false;">[Source]</a></p>
|
433
|
+
<div class="method-source-code" id="M000023-source">
|
434
434
|
<pre>
|
435
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
435
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 411</span>
|
436
|
+
411: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">export</span>(<span class="ruby-identifier">page_titles</span>)
|
437
|
+
412: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">></span> [<span class="ruby-identifier">page_titles</span>].<span class="ruby-identifier">join</span>(<span class="ruby-value str">'|'</span>), <span class="ruby-value str">'export'</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">'exportnowrap'</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">nil</span>}
|
438
|
+
413: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
439
|
+
414: <span class="ruby-keyword kw">end</span>
|
440
440
|
</pre>
|
441
441
|
</div>
|
442
442
|
</div>
|
443
443
|
</div>
|
444
444
|
|
445
|
-
<div id="method-
|
446
|
-
<a name="
|
445
|
+
<div id="method-M000025" class="method-detail">
|
446
|
+
<a name="M000025"></a>
|
447
447
|
|
448
448
|
<div class="method-heading">
|
449
|
-
<a href="#
|
449
|
+
<a href="#M000025" class="method-signature">
|
450
450
|
<span class="method-name">extensions</span><span class="method-args">()</span>
|
451
451
|
</a>
|
452
452
|
</div>
|
453
453
|
|
454
454
|
<div class="method-description">
|
455
455
|
<p>
|
456
|
-
Get a <a href="Gateway.html#
|
457
|
-
registered) <a href="Gateway.html#
|
456
|
+
Get a <a href="Gateway.html#M000015">list</a> of all installed (and
|
457
|
+
registered) <a href="Gateway.html#M000025">extensions</a>
|
458
458
|
</p>
|
459
459
|
<p>
|
460
|
-
Returns array of <a href="Gateway.html#
|
460
|
+
Returns array of <a href="Gateway.html#M000025">extensions</a> (name =>
|
461
461
|
version)
|
462
462
|
</p>
|
463
463
|
<p><a class="source-toggle" href="#"
|
464
|
-
onclick="toggleCode('
|
465
|
-
<div class="method-source-code" id="
|
464
|
+
onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
|
465
|
+
<div class="method-source-code" id="M000025-source">
|
466
466
|
<pre>
|
467
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
467
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 432</span>
|
468
|
+
432: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">extensions</span>
|
469
|
+
433: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'meta'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'siteinfo'</span>, <span class="ruby-value str">'siprop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'extensions'</span> }
|
470
|
+
434: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
471
|
+
435: <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">res</span>, <span class="ruby-value str">"//ext"</span>).<span class="ruby-identifier">inject</span>(<span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">extensions</span>, <span class="ruby-identifier">extension</span><span class="ruby-operator">|</span>
|
472
|
+
436: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">extension</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"name"</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">""</span>
|
473
|
+
437: <span class="ruby-identifier">extensions</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">extension</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"version"</span>]
|
474
|
+
438: <span class="ruby-identifier">extensions</span>
|
475
|
+
439: <span class="ruby-keyword kw">end</span>
|
476
|
+
440: <span class="ruby-keyword kw">end</span>
|
477
477
|
</pre>
|
478
478
|
</div>
|
479
479
|
</div>
|
480
480
|
</div>
|
481
481
|
|
482
|
-
<div id="method-
|
483
|
-
<a name="
|
482
|
+
<div id="method-M000009" class="method-detail">
|
483
|
+
<a name="M000009"></a>
|
484
484
|
|
485
485
|
<div class="method-heading">
|
486
|
-
<a href="#
|
486
|
+
<a href="#M000009" class="method-signature">
|
487
487
|
<span class="method-name">get</span><span class="method-args">(page_title)</span>
|
488
488
|
</a>
|
489
489
|
</div>
|
@@ -491,7 +491,7 @@ version)
|
|
491
491
|
<div class="method-description">
|
492
492
|
<p>
|
493
493
|
Fetch <a href="../MediaWiki.html">MediaWiki</a> page in <a
|
494
|
-
href="../MediaWiki.html">MediaWiki</a> format
|
494
|
+
href="../MediaWiki.html">MediaWiki</a> format. Does not follow redirects.
|
495
495
|
</p>
|
496
496
|
<dl>
|
497
497
|
<dt>page_title</dt><dd>Page title to fetch
|
@@ -499,16 +499,16 @@ href="../MediaWiki.html">MediaWiki</a> format
|
|
499
499
|
</dd>
|
500
500
|
</dl>
|
501
501
|
<p>
|
502
|
-
Returns content of page as string, nil if the page does not exist
|
502
|
+
Returns content of page as string, nil if the page does not exist.
|
503
503
|
</p>
|
504
504
|
<p><a class="source-toggle" href="#"
|
505
|
-
onclick="toggleCode('
|
506
|
-
<div class="method-source-code" id="
|
505
|
+
onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
|
506
|
+
<div class="method-source-code" id="M000009-source">
|
507
507
|
<pre>
|
508
508
|
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 60</span>
|
509
509
|
60: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get</span>(<span class="ruby-identifier">page_title</span>)
|
510
510
|
61: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'revisions'</span>, <span class="ruby-value str">'rvprop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'content'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">page_title</span>}
|
511
|
-
62: <span class="ruby-identifier">page</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>).<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/pages/page"</span>]
|
511
|
+
62: <span class="ruby-identifier">page</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>).<span class="ruby-identifier">first</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/pages/page"</span>]
|
512
512
|
63: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span> <span class="ruby-identifier">page</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"missing"</span>]
|
513
513
|
64: <span class="ruby-keyword kw">nil</span>
|
514
514
|
65: <span class="ruby-keyword kw">else</span>
|
@@ -520,11 +520,11 @@ Returns content of page as string, nil if the page does not exist
|
|
520
520
|
</div>
|
521
521
|
</div>
|
522
522
|
|
523
|
-
<div id="method-
|
524
|
-
<a name="
|
523
|
+
<div id="method-M000020" class="method-detail">
|
524
|
+
<a name="M000020"></a>
|
525
525
|
|
526
526
|
<div class="method-heading">
|
527
|
-
<a href="#
|
527
|
+
<a href="#M000020" class="method-signature">
|
528
528
|
<span class="method-name">image_info</span><span class="method-args">(file_name_or_page_id, options={})</span>
|
529
529
|
</a>
|
530
530
|
</div>
|
@@ -576,47 +576,47 @@ Output:
|
|
576
576
|
"user" => "Valdas"
|
577
577
|
</pre>
|
578
578
|
<p><a class="source-toggle" href="#"
|
579
|
-
onclick="toggleCode('
|
580
|
-
<div class="method-source-code" id="
|
579
|
+
onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
|
580
|
+
<div class="method-source-code" id="M000020-source">
|
581
581
|
<pre>
|
582
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
582
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 349</span>
|
583
|
+
349: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">image_info</span>(<span class="ruby-identifier">file_name_or_page_id</span>, <span class="ruby-identifier">options</span>={})
|
584
|
+
350: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>].<span class="ruby-identifier">join</span>(<span class="ruby-value str">'|'</span>) \
|
585
|
+
351: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value str">'iiprop'</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:join</span>)
|
586
|
+
352: <span class="ruby-identifier">form_data</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(
|
587
|
+
353: <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>,
|
588
|
+
354: <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'imageinfo'</span>,
|
589
|
+
355: <span class="ruby-value str">'redirects'</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">true</span>
|
590
|
+
356: )
|
591
|
+
357:
|
592
|
+
358: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">file_name_or_page_id</span>
|
593
|
+
359: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Fixnum</span>
|
594
|
+
360: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'pageids'</span>] = <span class="ruby-identifier">file_name_or_page_id</span>
|
595
|
+
361: <span class="ruby-keyword kw">else</span>
|
596
|
+
362: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'titles'</span>] = <span class="ruby-node">"File:#{file_name_or_page_id}"</span>
|
597
|
+
363: <span class="ruby-keyword kw">end</span>
|
598
|
+
364:
|
599
|
+
365: <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>)
|
600
|
+
366: <span class="ruby-identifier">page</span> = <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/pages/page"</span>]
|
601
|
+
367: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span> <span class="ruby-identifier">page</span> <span class="ruby-keyword kw">or</span> <span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"missing"</span>]
|
602
|
+
368: <span class="ruby-keyword kw">nil</span>
|
603
|
+
369: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/redirects/r"</span>]
|
604
|
+
370: <span class="ruby-comment cmt"># We're dealing with redirect here.</span>
|
605
|
+
371: <span class="ruby-identifier">image_info</span>(<span class="ruby-identifier">page</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"pageid"</span>].<span class="ruby-identifier">to_i</span>, <span class="ruby-identifier">options</span>)
|
606
|
+
372: <span class="ruby-keyword kw">else</span>
|
607
|
+
373: <span class="ruby-identifier">page</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"imageinfo/ii"</span>].<span class="ruby-identifier">attributes</span>
|
608
|
+
374: <span class="ruby-keyword kw">end</span>
|
609
|
+
375: <span class="ruby-keyword kw">end</span>
|
610
610
|
</pre>
|
611
611
|
</div>
|
612
612
|
</div>
|
613
613
|
</div>
|
614
614
|
|
615
|
-
<div id="method-
|
616
|
-
<a name="
|
615
|
+
<div id="method-M000022" class="method-detail">
|
616
|
+
<a name="M000022"></a>
|
617
617
|
|
618
618
|
<div class="method-heading">
|
619
|
-
<a href="#
|
619
|
+
<a href="#M000022" class="method-signature">
|
620
620
|
<span class="method-name">import</span><span class="method-args">(xmlfile)</span>
|
621
621
|
</a>
|
622
622
|
</div>
|
@@ -632,39 +632,39 @@ Imports a <a href="../MediaWiki.html">MediaWiki</a> XML dump
|
|
632
632
|
</dl>
|
633
633
|
<p>
|
634
634
|
Returns XML array <api><<a
|
635
|
-
href="Gateway.html#
|
635
|
+
href="Gateway.html#M000022">import</a>><page/><page/>…
|
636
636
|
<page revisions="1"> (or more) means successfully imported
|
637
637
|
<page revisions="0"> means duplicate, not imported
|
638
638
|
</p>
|
639
639
|
<p><a class="source-toggle" href="#"
|
640
|
-
onclick="toggleCode('
|
641
|
-
<div class="method-source-code" id="
|
640
|
+
onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
|
641
|
+
<div class="method-source-code" id="M000022-source">
|
642
642
|
<pre>
|
643
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
643
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 398</span>
|
644
|
+
398: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">import</span>(<span class="ruby-identifier">xmlfile</span>)
|
645
|
+
399: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">"action"</span> =<span class="ruby-operator">></span> <span class="ruby-value str">"import"</span>,
|
646
|
+
400: <span class="ruby-value str">"xml"</span> =<span class="ruby-operator">></span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">xmlfile</span>),
|
647
|
+
401: <span class="ruby-value str">"token"</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'import'</span>, <span class="ruby-value str">'Main Page'</span>), <span class="ruby-comment cmt"># NB: dummy page name</span>
|
648
|
+
402: <span class="ruby-value str">"format"</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'xml'</span> }
|
649
|
+
403: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
650
|
+
404: <span class="ruby-keyword kw">end</span>
|
651
651
|
</pre>
|
652
652
|
</div>
|
653
653
|
</div>
|
654
654
|
</div>
|
655
655
|
|
656
|
-
<div id="method-
|
657
|
-
<a name="
|
656
|
+
<div id="method-M000015" class="method-detail">
|
657
|
+
<a name="M000015"></a>
|
658
658
|
|
659
659
|
<div class="method-heading">
|
660
|
-
<a href="#
|
660
|
+
<a href="#M000015" class="method-signature">
|
661
661
|
<span class="method-name">list</span><span class="method-args">(key)</span>
|
662
662
|
</a>
|
663
663
|
</div>
|
664
664
|
|
665
665
|
<div class="method-description">
|
666
666
|
<p>
|
667
|
-
Get a <a href="Gateway.html#
|
667
|
+
Get a <a href="Gateway.html#M000015">list</a> of matching page titles in a
|
668
668
|
namespace
|
669
669
|
</p>
|
670
670
|
<dl>
|
@@ -677,39 +677,38 @@ defaults to main (namespace 0) if none given.
|
|
677
677
|
Returns array of page titles (empty if no matches)
|
678
678
|
</p>
|
679
679
|
<p><a class="source-toggle" href="#"
|
680
|
-
onclick="toggleCode('
|
681
|
-
<div class="method-source-code" id="
|
680
|
+
onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
|
681
|
+
<div class="method-source-code" id="M000015-source">
|
682
682
|
<pre>
|
683
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
191: <span class="ruby-keyword kw">end</span>
|
683
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 172</span>
|
684
|
+
172: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">list</span>(<span class="ruby-identifier">key</span>)
|
685
|
+
173: <span class="ruby-identifier">titles</span> = []
|
686
|
+
174: <span class="ruby-identifier">apfrom</span> = <span class="ruby-keyword kw">nil</span>
|
687
|
+
175: <span class="ruby-identifier">key</span>, <span class="ruby-identifier">namespace</span> = <span class="ruby-identifier">key</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">":"</span>, <span class="ruby-value">2</span>).<span class="ruby-identifier">reverse</span>
|
688
|
+
176: <span class="ruby-identifier">namespace</span> = <span class="ruby-identifier">namespaces_by_prefix</span>[<span class="ruby-identifier">namespace</span>] <span class="ruby-operator">||</span> <span class="ruby-value">0</span>
|
689
|
+
177: <span class="ruby-keyword kw">begin</span>
|
690
|
+
178: <span class="ruby-identifier">form_data</span> =
|
691
|
+
179: {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>,
|
692
|
+
180: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'allpages'</span>,
|
693
|
+
181: <span class="ruby-value str">'apfrom'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">apfrom</span>,
|
694
|
+
182: <span class="ruby-value str">'apprefix'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">key</span>,
|
695
|
+
183: <span class="ruby-value str">'aplimit'</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:limit</span>],
|
696
|
+
184: <span class="ruby-value str">'apnamespace'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">namespace</span>}
|
697
|
+
185: <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>)
|
698
|
+
186: <span class="ruby-identifier">titles</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">res</span>, <span class="ruby-value str">"//p"</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"title"</span>] }
|
699
|
+
187: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">apfrom</span>
|
700
|
+
188: <span class="ruby-identifier">titles</span>
|
701
|
+
189: <span class="ruby-keyword kw">end</span>
|
703
702
|
</pre>
|
704
703
|
</div>
|
705
704
|
</div>
|
706
705
|
</div>
|
707
706
|
|
708
|
-
<div id="method-
|
709
|
-
<a name="
|
707
|
+
<div id="method-M000008" class="method-detail">
|
708
|
+
<a name="M000008"></a>
|
710
709
|
|
711
710
|
<div class="method-heading">
|
712
|
-
<a href="#
|
711
|
+
<a href="#M000008" class="method-signature">
|
713
712
|
<span class="method-name">login</span><span class="method-args">(username, password, domain = 'local')</span>
|
714
713
|
</a>
|
715
714
|
</div>
|
@@ -731,11 +730,11 @@ defaults to ‘local’ if not given
|
|
731
730
|
</dd>
|
732
731
|
</dl>
|
733
732
|
<p>
|
734
|
-
Throws error if <a href="Gateway.html#
|
733
|
+
Throws error if <a href="Gateway.html#M000008">login</a> fails
|
735
734
|
</p>
|
736
735
|
<p><a class="source-toggle" href="#"
|
737
|
-
onclick="toggleCode('
|
738
|
-
<div class="method-source-code" id="
|
736
|
+
onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
|
737
|
+
<div class="method-source-code" id="M000008-source">
|
739
738
|
<pre>
|
740
739
|
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 48</span>
|
741
740
|
48: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">login</span>(<span class="ruby-identifier">username</span>, <span class="ruby-identifier">password</span>, <span class="ruby-identifier">domain</span> = <span class="ruby-value str">'local'</span>)
|
@@ -749,18 +748,18 @@ Throws error if <a href="Gateway.html#M000007">login</a> fails
|
|
749
748
|
</div>
|
750
749
|
</div>
|
751
750
|
|
752
|
-
<div id="method-
|
753
|
-
<a name="
|
751
|
+
<div id="method-M000012" class="method-detail">
|
752
|
+
<a name="M000012"></a>
|
754
753
|
|
755
754
|
<div class="method-heading">
|
756
|
-
<a href="#
|
755
|
+
<a href="#M000012" class="method-signature">
|
757
756
|
<span class="method-name">move</span><span class="method-args">(from, to, options={})</span>
|
758
757
|
</a>
|
759
758
|
</div>
|
760
759
|
|
761
760
|
<div class="method-description">
|
762
761
|
<p>
|
763
|
-
Move a page to a <a href="Gateway.html#
|
762
|
+
Move a page to a <a href="Gateway.html#M000007">new</a> title
|
764
763
|
</p>
|
765
764
|
<dl>
|
766
765
|
<dt>from</dt><dd>Old page name
|
@@ -783,13 +782,13 @@ Options:
|
|
783
782
|
<li>[:movetalk] Move associated talkpages
|
784
783
|
|
785
784
|
</li>
|
786
|
-
<li>[:noredirect] Do not <a href="Gateway.html#
|
785
|
+
<li>[:noredirect] Do not <a href="Gateway.html#M000011">create</a> a redirect
|
787
786
|
page from old name. Requires the ‘suppressredirect’ user right,
|
788
787
|
otherwise MW will silently ignore the option and <a
|
789
|
-
href="Gateway.html#
|
788
|
+
href="Gateway.html#M000011">create</a> the redirect anyway.
|
790
789
|
|
791
790
|
</li>
|
792
|
-
<li>[:reason] Reason for <a href="Gateway.html#
|
791
|
+
<li>[:reason] Reason for <a href="Gateway.html#M000012">move</a>
|
793
792
|
|
794
793
|
</li>
|
795
794
|
<li>[:watch] Add page and any redirect to watchlist
|
@@ -800,8 +799,8 @@ href="Gateway.html#M000010">create</a> the redirect anyway.
|
|
800
799
|
</li>
|
801
800
|
</ul>
|
802
801
|
<p><a class="source-toggle" href="#"
|
803
|
-
onclick="toggleCode('
|
804
|
-
<div class="method-source-code" id="
|
802
|
+
onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
|
803
|
+
<div class="method-source-code" id="M000012-source">
|
805
804
|
<pre>
|
806
805
|
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 136</span>
|
807
806
|
136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">move</span>(<span class="ruby-identifier">from</span>, <span class="ruby-identifier">to</span>, <span class="ruby-identifier">options</span>={})
|
@@ -816,46 +815,83 @@ href="Gateway.html#M000010">create</a> the redirect anyway.
|
|
816
815
|
</div>
|
817
816
|
</div>
|
818
817
|
|
819
|
-
<div id="method-
|
820
|
-
<a name="
|
818
|
+
<div id="method-M000024" class="method-detail">
|
819
|
+
<a name="M000024"></a>
|
821
820
|
|
822
821
|
<div class="method-heading">
|
823
|
-
<a href="#
|
822
|
+
<a href="#M000024" class="method-signature">
|
824
823
|
<span class="method-name">namespaces_by_prefix</span><span class="method-args">()</span>
|
825
824
|
</a>
|
826
825
|
</div>
|
827
826
|
|
828
827
|
<div class="method-description">
|
829
828
|
<p>
|
830
|
-
Get a <a href="Gateway.html#
|
829
|
+
Get a <a href="Gateway.html#M000015">list</a> of all known namespaces
|
831
830
|
</p>
|
832
831
|
<p>
|
833
832
|
Returns array of namespaces (name => id)
|
834
833
|
</p>
|
835
834
|
<p><a class="source-toggle" href="#"
|
836
|
-
onclick="toggleCode('
|
837
|
-
<div class="method-source-code" id="
|
835
|
+
onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
|
836
|
+
<div class="method-source-code" id="M000024-source">
|
838
837
|
<pre>
|
839
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
838
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 419</span>
|
839
|
+
419: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">namespaces_by_prefix</span>
|
840
|
+
420: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'meta'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'siteinfo'</span>, <span class="ruby-value str">'siprop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'namespaces'</span> }
|
841
|
+
421: <span class="ruby-identifier">res</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
842
|
+
422: <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">res</span>, <span class="ruby-value str">"//ns"</span>).<span class="ruby-identifier">inject</span>(<span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">namespaces</span>, <span class="ruby-identifier">namespace</span><span class="ruby-operator">|</span>
|
843
|
+
423: <span class="ruby-identifier">prefix</span> = <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"canonical"</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">""</span>
|
844
|
+
424: <span class="ruby-identifier">namespaces</span>[<span class="ruby-identifier">prefix</span>] = <span class="ruby-identifier">namespace</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"id"</span>].<span class="ruby-identifier">to_i</span>
|
845
|
+
425: <span class="ruby-identifier">namespaces</span>
|
846
|
+
426: <span class="ruby-keyword kw">end</span>
|
847
|
+
427: <span class="ruby-keyword kw">end</span>
|
849
848
|
</pre>
|
850
849
|
</div>
|
851
850
|
</div>
|
852
851
|
</div>
|
853
852
|
|
854
|
-
<div id="method-
|
855
|
-
<a name="
|
853
|
+
<div id="method-M000019" class="method-detail">
|
854
|
+
<a name="M000019"></a>
|
856
855
|
|
857
856
|
<div class="method-heading">
|
858
|
-
<a href="#
|
857
|
+
<a href="#M000019" class="method-signature">
|
858
|
+
<span class="method-name">redirect?</span><span class="method-args">(page_title)</span>
|
859
|
+
</a>
|
860
|
+
</div>
|
861
|
+
|
862
|
+
<div class="method-description">
|
863
|
+
<p>
|
864
|
+
Checks if page is a redirect.
|
865
|
+
</p>
|
866
|
+
<dl>
|
867
|
+
<dt>page_title</dt><dd>Page title to fetch
|
868
|
+
|
869
|
+
</dd>
|
870
|
+
</dl>
|
871
|
+
<p>
|
872
|
+
Returns true if the page is a redirect, false if it is not or the page does
|
873
|
+
not exist.
|
874
|
+
</p>
|
875
|
+
<p><a class="source-toggle" href="#"
|
876
|
+
onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
|
877
|
+
<div class="method-source-code" id="M000019-source">
|
878
|
+
<pre>
|
879
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 317</span>
|
880
|
+
317: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">redirect?</span>(<span class="ruby-identifier">page_title</span>)
|
881
|
+
318: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">page_title</span>}
|
882
|
+
319: <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">"query/pages/page"</span>]
|
883
|
+
320: <span class="ruby-operator">!</span><span class="ruby-operator">!</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">"redirect"</span>])
|
884
|
+
321: <span class="ruby-keyword kw">end</span>
|
885
|
+
</pre>
|
886
|
+
</div>
|
887
|
+
</div>
|
888
|
+
</div>
|
889
|
+
|
890
|
+
<div id="method-M000010" class="method-detail">
|
891
|
+
<a name="M000010"></a>
|
892
|
+
|
893
|
+
<div class="method-heading">
|
894
|
+
<a href="#M000010" class="method-signature">
|
859
895
|
<span class="method-name">render</span><span class="method-args">(page_title, options = {})</span>
|
860
896
|
</a>
|
861
897
|
</div>
|
@@ -892,8 +928,8 @@ Options:
|
|
892
928
|
Returns rendered page as string, or nil if the page does not exist
|
893
929
|
</p>
|
894
930
|
<p><a class="source-toggle" href="#"
|
895
|
-
onclick="toggleCode('
|
896
|
-
<div class="method-source-code" id="
|
931
|
+
onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
|
932
|
+
<div class="method-source-code" id="M000010-source">
|
897
933
|
<pre>
|
898
934
|
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 81</span>
|
899
935
|
81: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render</span>(<span class="ruby-identifier">page_title</span>, <span class="ruby-identifier">options</span> = {})
|
@@ -904,7 +940,7 @@ Returns rendered page as string, or nil if the page does not exist
|
|
904
940
|
86: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">opt</span><span class="ruby-operator">|</span> <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">"Unknown option '#{opt}'"</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">valid_options</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">opt</span>.<span class="ruby-identifier">to_s</span>)}
|
905
941
|
87:
|
906
942
|
88: <span class="ruby-identifier">rendered</span> = <span class="ruby-keyword kw">nil</span>
|
907
|
-
89: <span class="ruby-identifier">parsed</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>).<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"parse"</span>]
|
943
|
+
89: <span class="ruby-identifier">parsed</span> = <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>).<span class="ruby-identifier">first</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"parse"</span>]
|
908
944
|
90: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parsed</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"revid"</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'0'</span>
|
909
945
|
91: <span class="ruby-identifier">rendered</span> = <span class="ruby-identifier">parsed</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"text"</span>].<span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/<!--(.|\s)*?-->/</span>, <span class="ruby-value str">''</span>)
|
910
946
|
92: <span class="ruby-comment cmt"># OPTIMIZE: unifiy the keys in +options+ like symbolize_keys! but w/o</span>
|
@@ -926,29 +962,30 @@ Returns rendered page as string, or nil if the page does not exist
|
|
926
962
|
</div>
|
927
963
|
</div>
|
928
964
|
|
929
|
-
<div id="method-
|
930
|
-
<a name="
|
965
|
+
<div id="method-M000017" class="method-detail">
|
966
|
+
<a name="M000017"></a>
|
931
967
|
|
932
968
|
<div class="method-heading">
|
933
|
-
<a href="#
|
934
|
-
<span class="method-name">search</span><span class="method-args">(key, namespaces=nil, limit
|
969
|
+
<a href="#M000017" class="method-signature">
|
970
|
+
<span class="method-name">search</span><span class="method-args">(key, namespaces=nil, limit=@options[:limit])</span>
|
935
971
|
</a>
|
936
972
|
</div>
|
937
973
|
|
938
974
|
<div class="method-description">
|
939
975
|
<p>
|
940
|
-
Get a <a href="Gateway.html#
|
976
|
+
Get a <a href="Gateway.html#M000015">list</a> of pages with matching
|
941
977
|
content in given namespaces
|
942
978
|
</p>
|
943
979
|
<dl>
|
944
980
|
<dt>key</dt><dd>Search key
|
945
981
|
|
946
982
|
</dd>
|
947
|
-
<dt>namespaces</dt><dd>Array of namespace names to <a href="Gateway.html#
|
948
|
-
(defaults to
|
983
|
+
<dt>namespaces</dt><dd>Array of namespace names to <a href="Gateway.html#M000017">search</a>
|
984
|
+
(defaults to main only)
|
949
985
|
|
950
986
|
</dd>
|
951
|
-
<dt>limit</dt><dd>
|
987
|
+
<dt>limit</dt><dd>Maximum number of hits to ask for (defaults to 500; note that Wikimedia
|
988
|
+
Foundation wikis allow only 50 for normal users)
|
952
989
|
|
953
990
|
</dd>
|
954
991
|
</dl>
|
@@ -956,33 +993,42 @@ content in given namespaces
|
|
956
993
|
Returns array of page titles (empty if no matches)
|
957
994
|
</p>
|
958
995
|
<p><a class="source-toggle" href="#"
|
959
|
-
onclick="toggleCode('
|
960
|
-
<div class="method-source-code" id="
|
996
|
+
onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
|
997
|
+
<div class="method-source-code" id="M000017-source">
|
961
998
|
<pre>
|
962
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
963
|
-
|
964
|
-
|
999
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 221</span>
|
1000
|
+
221: <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>])
|
1001
|
+
222: <span class="ruby-identifier">titles</span> = []
|
1002
|
+
223: <span class="ruby-identifier">offset</span> = <span class="ruby-keyword kw">nil</span>
|
1003
|
+
224: <span class="ruby-identifier">in_progress</span> = <span class="ruby-keyword kw">true</span>
|
1004
|
+
225:
|
965
1005
|
226: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>,
|
966
1006
|
227: <span class="ruby-value str">'list'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'search'</span>,
|
967
1007
|
228: <span class="ruby-value str">'srwhat'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'text'</span>,
|
968
1008
|
229: <span class="ruby-value str">'srsearch'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">key</span>,
|
969
|
-
230: <span class="ruby-value str">'srlimit'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">limit</span>
|
970
|
-
231:
|
971
|
-
232:
|
972
|
-
233: <span class="ruby-identifier">
|
973
|
-
234:
|
974
|
-
235: <span class="ruby-
|
975
|
-
236:
|
1009
|
+
230: <span class="ruby-value str">'srlimit'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">limit</span>
|
1010
|
+
231: }
|
1011
|
+
232: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">namespaces</span>
|
1012
|
+
233: <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>
|
1013
|
+
234: <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>)
|
1014
|
+
235: <span class="ruby-keyword kw">end</span>
|
1015
|
+
236: <span class="ruby-keyword kw">begin</span>
|
1016
|
+
237: <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>
|
1017
|
+
238: <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>)
|
1018
|
+
239: <span class="ruby-identifier">titles</span> <span class="ruby-operator">+=</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">res</span>, <span class="ruby-value str">"//p"</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"title"</span>] }
|
1019
|
+
240: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">offset</span>
|
1020
|
+
241: <span class="ruby-identifier">titles</span>
|
1021
|
+
242: <span class="ruby-keyword kw">end</span>
|
976
1022
|
</pre>
|
977
1023
|
</div>
|
978
1024
|
</div>
|
979
1025
|
</div>
|
980
1026
|
|
981
|
-
<div id="method-
|
982
|
-
<a name="
|
1027
|
+
<div id="method-M000026" class="method-detail">
|
1028
|
+
<a name="M000026"></a>
|
983
1029
|
|
984
1030
|
<div class="method-heading">
|
985
|
-
<a href="#
|
1031
|
+
<a href="#M000026" class="method-signature">
|
986
1032
|
<span class="method-name">semantic_query</span><span class="method-args">(query, params = [])</span>
|
987
1033
|
</a>
|
988
1034
|
</div>
|
@@ -1004,26 +1050,26 @@ Execute Semantic Mediawiki query
|
|
1004
1050
|
Returns result as an HTML string
|
1005
1051
|
</p>
|
1006
1052
|
<p><a class="source-toggle" href="#"
|
1007
|
-
onclick="toggleCode('
|
1008
|
-
<div class="method-source-code" id="
|
1053
|
+
onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
|
1054
|
+
<div class="method-source-code" id="M000026-source">
|
1009
1055
|
<pre>
|
1010
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1056
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 448</span>
|
1057
|
+
448: <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> = [])
|
1058
|
+
449: <span class="ruby-identifier">params</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"format=list"</span>
|
1059
|
+
450: <span class="ruby-identifier">form_data</span> = { <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'parse'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'text'</span>, <span class="ruby-value str">'text'</span> =<span class="ruby-operator">></span> <span class="ruby-node">"{{#ask:#{query}|#{params.join('|')}}}"</span> }
|
1060
|
+
451: <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>)
|
1061
|
+
452: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">xml</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"parse/text"</span>].<span class="ruby-identifier">text</span>
|
1062
|
+
453: <span class="ruby-keyword kw">end</span>
|
1017
1063
|
</pre>
|
1018
1064
|
</div>
|
1019
1065
|
</div>
|
1020
1066
|
</div>
|
1021
1067
|
|
1022
|
-
<div id="method-
|
1023
|
-
<a name="
|
1068
|
+
<div id="method-M000014" class="method-detail">
|
1069
|
+
<a name="M000014"></a>
|
1024
1070
|
|
1025
1071
|
<div class="method-heading">
|
1026
|
-
<a href="#
|
1072
|
+
<a href="#M000014" class="method-signature">
|
1027
1073
|
<span class="method-name">undelete</span><span class="method-args">(title)</span>
|
1028
1074
|
</a>
|
1029
1075
|
</div>
|
@@ -1033,46 +1079,45 @@ Returns result as an HTML string
|
|
1033
1079
|
Undelete all revisions of one page.
|
1034
1080
|
</p>
|
1035
1081
|
<dl>
|
1036
|
-
<dt>title</dt><dd>Title of page to <a href="Gateway.html#
|
1082
|
+
<dt>title</dt><dd>Title of page to <a href="Gateway.html#M000014">undelete</a>
|
1037
1083
|
|
1038
1084
|
</dd>
|
1039
1085
|
</dl>
|
1040
1086
|
<p>
|
1041
1087
|
Returns number of revisions undeleted, or zero if nothing to <a
|
1042
|
-
href="Gateway.html#
|
1088
|
+
href="Gateway.html#M000014">undelete</a>
|
1043
1089
|
</p>
|
1044
1090
|
<p><a class="source-toggle" href="#"
|
1045
|
-
onclick="toggleCode('
|
1046
|
-
<div class="method-source-code" id="
|
1091
|
+
onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
|
1092
|
+
<div class="method-source-code" id="M000014-source">
|
1047
1093
|
<pre>
|
1048
1094
|
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 157</span>
|
1049
1095
|
157: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">undelete</span>(<span class="ruby-identifier">title</span>)
|
1050
1096
|
158: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">get_undelete_token</span>(<span class="ruby-identifier">title</span>)
|
1051
1097
|
159: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>
|
1052
1098
|
160: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'undelete'</span>, <span class="ruby-value str">'title'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">title</span>, <span class="ruby-value str">'token'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">token</span> }
|
1053
|
-
161: <span class="ruby-identifier">
|
1054
|
-
162:
|
1055
|
-
163:
|
1056
|
-
164:
|
1057
|
-
165:
|
1058
|
-
166: <span class="ruby-keyword kw">end</span>
|
1099
|
+
161: <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">"undelete"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"revisions"</span>].<span class="ruby-identifier">to_i</span>
|
1100
|
+
162: <span class="ruby-keyword kw">else</span>
|
1101
|
+
163: <span class="ruby-value">0</span> <span class="ruby-comment cmt"># No revisions to undelete</span>
|
1102
|
+
164: <span class="ruby-keyword kw">end</span>
|
1103
|
+
165: <span class="ruby-keyword kw">end</span>
|
1059
1104
|
</pre>
|
1060
1105
|
</div>
|
1061
1106
|
</div>
|
1062
1107
|
</div>
|
1063
1108
|
|
1064
|
-
<div id="method-
|
1065
|
-
<a name="
|
1109
|
+
<div id="method-M000018" class="method-detail">
|
1110
|
+
<a name="M000018"></a>
|
1066
1111
|
|
1067
1112
|
<div class="method-heading">
|
1068
|
-
<a href="#
|
1113
|
+
<a href="#M000018" class="method-signature">
|
1069
1114
|
<span class="method-name">upload</span><span class="method-args">(path, options={})</span>
|
1070
1115
|
</a>
|
1071
1116
|
</div>
|
1072
1117
|
|
1073
1118
|
<div class="method-description">
|
1074
1119
|
<p>
|
1075
|
-
Upload a file, or <a href="Gateway.html#
|
1120
|
+
Upload a file, or <a href="Gateway.html#M000009">get</a> the status of
|
1076
1121
|
pending uploads. Several methods are available:
|
1077
1122
|
</p>
|
1078
1123
|
<ul>
|
@@ -1091,7 +1136,7 @@ Requires Mediawiki 1.16+
|
|
1091
1136
|
Arguments:
|
1092
1137
|
</p>
|
1093
1138
|
<ul>
|
1094
|
-
<li>[path] Path to file to <a href="Gateway.html#
|
1139
|
+
<li>[path] Path to file to <a href="Gateway.html#M000018">upload</a>. Set to
|
1095
1140
|
nil if uploading from URL.
|
1096
1141
|
|
1097
1142
|
</li>
|
@@ -1101,7 +1146,7 @@ nil if uploading from URL.
|
|
1101
1146
|
</ul>
|
1102
1147
|
<p>
|
1103
1148
|
Note that queries using session keys must be done in the same <a
|
1104
|
-
href="Gateway.html#
|
1149
|
+
href="Gateway.html#M000008">login</a> session as the query that originally
|
1105
1150
|
returned the key (i.e. do not log out and then log back in).
|
1106
1151
|
</p>
|
1107
1152
|
<p>
|
@@ -1113,12 +1158,12 @@ given), options[:target] is alias for this.
|
|
1113
1158
|
|
1114
1159
|
</li>
|
1115
1160
|
<li>‘comment’ - Upload comment. Also used as the initial page text
|
1116
|
-
for <a href="Gateway.html#
|
1161
|
+
for <a href="Gateway.html#M000007">new</a> files if "text" is not
|
1117
1162
|
specified.
|
1118
1163
|
|
1119
1164
|
</li>
|
1120
1165
|
<li>‘text’ - Initial page text for <a
|
1121
|
-
href="Gateway.html#
|
1166
|
+
href="Gateway.html#M000007">new</a> files
|
1122
1167
|
|
1123
1168
|
</li>
|
1124
1169
|
<li>‘watch’ - Watch the page
|
@@ -1155,43 +1200,43 @@ Examples:
|
|
1155
1200
|
mw.upload(nil, 'filename' => "RemoteFile2.jpg", 'url' => 'http://remote.com/server/file.jpg')
|
1156
1201
|
</pre>
|
1157
1202
|
<p><a class="source-toggle" href="#"
|
1158
|
-
onclick="toggleCode('
|
1159
|
-
<div class="method-source-code" id="
|
1203
|
+
onclick="toggleCode('M000018-source');return false;">[Source]</a></p>
|
1204
|
+
<div class="method-source-code" id="M000018-source">
|
1160
1205
|
<pre>
|
1161
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
281: <span class="ruby-keyword kw">end</span>
|
1172
|
-
282:
|
1173
|
-
283: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>]
|
1174
|
-
284: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'text'</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>]
|
1175
|
-
285: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'comment'</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>]
|
1176
|
-
286: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:summary</span>)
|
1206
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 278</span>
|
1207
|
+
278: <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>={})
|
1208
|
+
279: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:description</span>]
|
1209
|
+
280: <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>]
|
1210
|
+
281: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:description</span>)
|
1211
|
+
282: <span class="ruby-keyword kw">end</span>
|
1212
|
+
283:
|
1213
|
+
284: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:target</span>]
|
1214
|
+
285: <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>]
|
1215
|
+
286: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:target</span>)
|
1177
1216
|
287: <span class="ruby-keyword kw">end</span>
|
1178
1217
|
288:
|
1179
|
-
289: <span class="ruby-
|
1180
|
-
290:
|
1181
|
-
291:
|
1182
|
-
292:
|
1183
|
-
293:
|
1184
|
-
294:
|
1185
|
-
295:
|
1186
|
-
296:
|
1187
|
-
297:
|
1188
|
-
298: <span class="ruby-identifier">
|
1189
|
-
299:
|
1190
|
-
300:
|
1191
|
-
301:
|
1192
|
-
302:
|
1193
|
-
303:
|
1194
|
-
304:
|
1218
|
+
289: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:summary</span>]
|
1219
|
+
290: <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>]
|
1220
|
+
291: <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>]
|
1221
|
+
292: <span class="ruby-identifier">options</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">:summary</span>)
|
1222
|
+
293: <span class="ruby-keyword kw">end</span>
|
1223
|
+
294:
|
1224
|
+
295: <span class="ruby-identifier">options</span>[<span class="ruby-value str">'comment'</span>] <span class="ruby-operator">||=</span> <span class="ruby-value str">"Uploaded by MediaWiki::Gateway"</span>
|
1225
|
+
296: <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>
|
1226
|
+
297: <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>]
|
1227
|
+
298: <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>
|
1228
|
+
299:
|
1229
|
+
300: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(
|
1230
|
+
301: <span class="ruby-value str">"One of the 'file', 'url' or 'sessionkey' options must be specified!"</span>
|
1231
|
+
302: ) <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>]
|
1232
|
+
303:
|
1233
|
+
304: <span class="ruby-identifier">form_data</span> = <span class="ruby-identifier">options</span>.<span class="ruby-identifier">merge</span>(
|
1234
|
+
305: <span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'upload'</span>,
|
1235
|
+
306: <span class="ruby-value str">'token'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">get_token</span>(<span class="ruby-value str">'edit'</span>, <span class="ruby-identifier">options</span>[<span class="ruby-value str">'filename'</span>])
|
1236
|
+
307: )
|
1237
|
+
308:
|
1238
|
+
309: <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>)
|
1239
|
+
310: <span class="ruby-keyword kw">end</span>
|
1195
1240
|
</pre>
|
1196
1241
|
</div>
|
1197
1242
|
</div>
|
@@ -1199,115 +1244,118 @@ Examples:
|
|
1199
1244
|
|
1200
1245
|
<h3 class="section-bar">Private Instance methods</h3>
|
1201
1246
|
|
1202
|
-
<div id="method-
|
1203
|
-
<a name="
|
1247
|
+
<div id="method-M000030" class="method-detail">
|
1248
|
+
<a name="M000030"></a>
|
1204
1249
|
|
1205
1250
|
<div class="method-heading">
|
1206
|
-
<a href="#
|
1251
|
+
<a href="#M000030" class="method-signature">
|
1207
1252
|
<span class="method-name">get_response</span><span class="method-args">(res)</span>
|
1208
1253
|
</a>
|
1209
1254
|
</div>
|
1210
1255
|
|
1211
1256
|
<div class="method-description">
|
1212
1257
|
<p>
|
1213
|
-
Get API XML response If there are errors, raise exception
|
1214
|
-
XML root
|
1258
|
+
Get API XML response If there are errors or warnings, raise exception
|
1259
|
+
Otherwise return XML root
|
1215
1260
|
</p>
|
1216
1261
|
<p><a class="source-toggle" href="#"
|
1217
|
-
onclick="toggleCode('
|
1218
|
-
<div class="method-source-code" id="
|
1262
|
+
onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
|
1263
|
+
<div class="method-source-code" id="M000030-source">
|
1219
1264
|
<pre>
|
1220
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1265
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 517</span>
|
1266
|
+
517: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_response</span>(<span class="ruby-identifier">res</span>)
|
1267
|
+
518: <span class="ruby-keyword kw">begin</span>
|
1268
|
+
519: <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>
|
1269
|
+
520: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseException</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
|
1270
|
+
521: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Response is not XML. Are you sure you are pointing to api.php?"</span>
|
1271
|
+
522: <span class="ruby-keyword kw">end</span>
|
1272
|
+
523: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"RES: #{doc}"</span>)
|
1273
|
+
524: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Response does not contain Mediawiki API XML: #{res}"</span> <span class="ruby-keyword kw">unless</span> [ <span class="ruby-value str">"api"</span>, <span class="ruby-value str">"mediawiki"</span> ].<span class="ruby-identifier">include?</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">name</span>
|
1274
|
+
525: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"error"</span>]
|
1275
|
+
526: <span class="ruby-identifier">code</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"error"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"code"</span>]
|
1276
|
+
527: <span class="ruby-identifier">info</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"error"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"info"</span>]
|
1277
|
+
528: <span class="ruby-identifier">raise</span> <span class="ruby-node">"API error: code '#{code}', info '#{info}'"</span>
|
1278
|
+
529: <span class="ruby-keyword kw">end</span>
|
1279
|
+
530: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"warnings"</span>] <span class="ruby-keyword kw">and</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:ignorewarnings</span>]
|
1280
|
+
531: <span class="ruby-identifier">raise</span> <span class="ruby-node">"API warning: #{doc.elements["warnings"].children.map {|e| e.text}.join(", ")}"</span>
|
1281
|
+
532: <span class="ruby-keyword kw">end</span>
|
1282
|
+
533: <span class="ruby-identifier">doc</span>
|
1283
|
+
534: <span class="ruby-keyword kw">end</span>
|
1236
1284
|
</pre>
|
1237
1285
|
</div>
|
1238
1286
|
</div>
|
1239
1287
|
</div>
|
1240
1288
|
|
1241
|
-
<div id="method-
|
1242
|
-
<a name="
|
1289
|
+
<div id="method-M000027" class="method-detail">
|
1290
|
+
<a name="M000027"></a>
|
1243
1291
|
|
1244
1292
|
<div class="method-heading">
|
1245
|
-
<a href="#
|
1293
|
+
<a href="#M000027" class="method-signature">
|
1246
1294
|
<span class="method-name">get_token</span><span class="method-args">(type, page_titles)</span>
|
1247
1295
|
</a>
|
1248
1296
|
</div>
|
1249
1297
|
|
1250
1298
|
<div class="method-description">
|
1251
1299
|
<p>
|
1252
|
-
Fetch token (type ‘<a href="Gateway.html#
|
1300
|
+
Fetch token (type ‘<a href="Gateway.html#M000013">delete</a>’,
|
1253
1301
|
‘edit’, ‘<a
|
1254
|
-
href="Gateway.html#
|
1255
|
-
href="Gateway.html#
|
1302
|
+
href="Gateway.html#M000022">import</a>’, ‘<a
|
1303
|
+
href="Gateway.html#M000012">move</a>’)
|
1256
1304
|
</p>
|
1257
1305
|
<p><a class="source-toggle" href="#"
|
1258
|
-
onclick="toggleCode('
|
1259
|
-
<div class="method-source-code" id="
|
1306
|
+
onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
|
1307
|
+
<div class="method-source-code" id="M000027-source">
|
1260
1308
|
<pre>
|
1261
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1309
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 458</span>
|
1310
|
+
458: <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>)
|
1311
|
+
459: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'intoken'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">type</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">page_titles</span>}
|
1312
|
+
460: <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>)
|
1313
|
+
461: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/pages/page"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-identifier">type</span> <span class="ruby-operator">+</span> <span class="ruby-value str">"token"</span>]
|
1314
|
+
462: <span class="ruby-identifier">raise</span> <span class="ruby-node">"User is not permitted to perform this operation: #{type}"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">nil?</span>
|
1315
|
+
463: <span class="ruby-identifier">token</span>
|
1316
|
+
464: <span class="ruby-keyword kw">end</span>
|
1269
1317
|
</pre>
|
1270
1318
|
</div>
|
1271
1319
|
</div>
|
1272
1320
|
</div>
|
1273
1321
|
|
1274
|
-
<div id="method-
|
1275
|
-
<a name="
|
1322
|
+
<div id="method-M000028" class="method-detail">
|
1323
|
+
<a name="M000028"></a>
|
1276
1324
|
|
1277
1325
|
<div class="method-heading">
|
1278
|
-
<a href="#
|
1326
|
+
<a href="#M000028" class="method-signature">
|
1279
1327
|
<span class="method-name">get_undelete_token</span><span class="method-args">(page_titles)</span>
|
1280
1328
|
</a>
|
1281
1329
|
</div>
|
1282
1330
|
|
1283
1331
|
<div class="method-description">
|
1284
1332
|
<p><a class="source-toggle" href="#"
|
1285
|
-
onclick="toggleCode('
|
1286
|
-
<div class="method-source-code" id="
|
1333
|
+
onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
|
1334
|
+
<div class="method-source-code" id="M000028-source">
|
1287
1335
|
<pre>
|
1288
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1336
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 466</span>
|
1337
|
+
466: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">get_undelete_token</span>(<span class="ruby-identifier">page_titles</span>)
|
1338
|
+
467: <span class="ruby-identifier">form_data</span> = {<span class="ruby-value str">'action'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'query'</span>, <span class="ruby-value str">'list'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'deletedrevs'</span>, <span class="ruby-value str">'prop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'drprop'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'token'</span>, <span class="ruby-value str">'titles'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">page_titles</span>}
|
1339
|
+
468: <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>)
|
1340
|
+
469: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/deletedrevs/page"</span>]
|
1341
|
+
470: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">res</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"query/deletedrevs/page"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"token"</span>]
|
1342
|
+
471: <span class="ruby-identifier">raise</span> <span class="ruby-node">"User is not permitted to perform this operation: #{type}"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>.<span class="ruby-identifier">nil?</span>
|
1343
|
+
472: <span class="ruby-identifier">token</span>
|
1344
|
+
473: <span class="ruby-keyword kw">else</span>
|
1345
|
+
474: <span class="ruby-keyword kw">nil</span>
|
1346
|
+
475: <span class="ruby-keyword kw">end</span>
|
1347
|
+
476: <span class="ruby-keyword kw">end</span>
|
1300
1348
|
</pre>
|
1301
1349
|
</div>
|
1302
1350
|
</div>
|
1303
1351
|
</div>
|
1304
1352
|
|
1305
|
-
<div id="method-
|
1306
|
-
<a name="
|
1353
|
+
<div id="method-M000029" class="method-detail">
|
1354
|
+
<a name="M000029"></a>
|
1307
1355
|
|
1308
1356
|
<div class="method-heading">
|
1309
|
-
<a href="#
|
1310
|
-
<span class="method-name">make_api_request</span><span class="method-args">(form_data, retry_count=1)</span>
|
1357
|
+
<a href="#M000029" class="method-signature">
|
1358
|
+
<span class="method-name">make_api_request</span><span class="method-args">(form_data, continue_xpath=nil, retry_count=1)</span>
|
1311
1359
|
</a>
|
1312
1360
|
</div>
|
1313
1361
|
|
@@ -1318,44 +1366,50 @@ Make generic request to API
|
|
1318
1366
|
<dl>
|
1319
1367
|
<dt>form_data</dt><dd>hash or string of attributes to post
|
1320
1368
|
|
1369
|
+
</dd>
|
1370
|
+
<dt>continue_xpath</dt><dd>XPath selector for query continue parameter
|
1371
|
+
|
1372
|
+
</dd>
|
1373
|
+
<dt>retry_count</dt><dd>Counter for retries
|
1374
|
+
|
1321
1375
|
</dd>
|
1322
1376
|
</dl>
|
1323
1377
|
<p>
|
1324
1378
|
Returns XML document
|
1325
1379
|
</p>
|
1326
1380
|
<p><a class="source-toggle" href="#"
|
1327
|
-
onclick="toggleCode('
|
1328
|
-
<div class="method-source-code" id="
|
1381
|
+
onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
|
1382
|
+
<div class="method-source-code" id="M000029-source">
|
1329
1383
|
<pre>
|
1330
|
-
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
|
1347
|
-
|
1348
|
-
|
1349
|
-
|
1350
|
-
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1354
|
-
|
1355
|
-
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1384
|
+
<span class="ruby-comment cmt"># File lib/media_wiki/gateway.rb, line 485</span>
|
1385
|
+
485: <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>)
|
1386
|
+
486: <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>
|
1387
|
+
487: <span class="ruby-identifier">form_data</span>[<span class="ruby-value str">'format'</span>] = <span class="ruby-value str">'xml'</span>
|
1388
|
+
488: <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>]
|
1389
|
+
489: <span class="ruby-keyword kw">end</span>
|
1390
|
+
490: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">"REQ: #{form_data.inspect}, #{@cookies.inspect}"</span>)
|
1391
|
+
491: <span class="ruby-constant">RestClient</span>.<span class="ruby-identifier">post</span>(<span class="ruby-ivar">@wiki_url</span>, <span class="ruby-identifier">form_data</span>, <span class="ruby-ivar">@headers</span>.<span class="ruby-identifier">merge</span>({<span class="ruby-identifier">:cookies</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@cookies</span>})) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">response</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span><span class="ruby-operator">|</span>
|
1392
|
+
492: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">==</span> <span class="ruby-value">503</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">retry_count</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:retry_count</span>]
|
1393
|
+
493: <span class="ruby-identifier">log</span>.<span class="ruby-identifier">warn</span>(<span class="ruby-node">"503 Service Unavailable: #{response.body}. Retry in #{@options[:retry_delay]} seconds."</span>)
|
1394
|
+
494: <span class="ruby-identifier">sleep</span> <span class="ruby-ivar">@options</span>[<span class="ruby-identifier">:retry_delay</span>]
|
1395
|
+
495: <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>)
|
1396
|
+
496: <span class="ruby-keyword kw">end</span>
|
1397
|
+
497: <span class="ruby-comment cmt"># Check response for errors and return XML</span>
|
1398
|
+
498: <span class="ruby-identifier">raise</span> <span class="ruby-node">"API error, bad response: #{response}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator">>=</span> <span class="ruby-value">200</span> <span class="ruby-keyword kw">and</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">code</span> <span class="ruby-operator"><</span> <span class="ruby-value">300</span>
|
1399
|
+
499: <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>)
|
1400
|
+
500: <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>)
|
1401
|
+
501: <span class="ruby-identifier">login_result</span> = <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"login"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">'result'</span>]
|
1402
|
+
502: <span class="ruby-ivar">@cookies</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">response</span>.<span class="ruby-identifier">cookies</span>)
|
1403
|
+
503: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">login_result</span>
|
1404
|
+
504: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"Success"</span> <span class="ruby-keyword kw">then</span> <span class="ruby-comment cmt"># do nothing</span>
|
1405
|
+
505: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"NeedToken"</span> <span class="ruby-keyword kw">then</span> <span class="ruby-identifier">make_api_request</span>(<span class="ruby-identifier">form_data</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-value str">'lgtoken'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">doc</span>.<span class="ruby-identifier">elements</span>[<span class="ruby-value str">"login"</span>].<span class="ruby-identifier">attributes</span>[<span class="ruby-value str">"token"</span>]))
|
1406
|
+
506: <span class="ruby-keyword kw">else</span> <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Login failed: "</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">login_result</span>
|
1407
|
+
507: <span class="ruby-keyword kw">end</span>
|
1408
|
+
508: <span class="ruby-keyword kw">end</span>
|
1409
|
+
509: <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>
|
1410
|
+
510: <span class="ruby-keyword kw">return</span> [<span class="ruby-identifier">doc</span>, <span class="ruby-identifier">continue</span>]
|
1411
|
+
511: <span class="ruby-keyword kw">end</span>
|
1412
|
+
512: <span class="ruby-keyword kw">end</span>
|
1359
1413
|
</pre>
|
1360
1414
|
</div>
|
1361
1415
|
</div>
|