mediawiki-gateway 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/doc/created.rid CHANGED
@@ -1 +1 @@
1
- Thu, 27 Jan 2011 16:07:00 +1100
1
+ Mon, 07 Feb 2011 12:14:29 +1100
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu Jan 27 16:03:42 +1100 2011</td>
59
+ <td>Mon Feb 07 12:13:27 +1100 2011</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -20,7 +20,7 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/MediaWiki/Config.html#M000032">abort (MediaWiki::Config)</a><br />
23
+ <a href="classes/MediaWiki/Config.html#M000034">abort (MediaWiki::Config)</a><br />
24
24
  <a href="classes/MediaWiki/Gateway.html#M000016">backlinks (MediaWiki::Gateway)</a><br />
25
25
  <a href="classes/MediaWiki/Gateway.html#M000011">create (MediaWiki::Gateway)</a><br />
26
26
  <a href="classes/MediaWiki/Gateway.html#M000013">delete (MediaWiki::Gateway)</a><br />
@@ -41,8 +41,8 @@
41
41
  <a href="classes/MediaWiki/Gateway.html#M000029">make_api_request (MediaWiki::Gateway)</a><br />
42
42
  <a href="classes/MediaWiki/Gateway.html#M000012">move (MediaWiki::Gateway)</a><br />
43
43
  <a href="classes/MediaWiki/Gateway.html#M000024">namespaces_by_prefix (MediaWiki::Gateway)</a><br />
44
+ <a href="classes/MediaWiki/Config.html#M000033">new (MediaWiki::Config)</a><br />
44
45
  <a href="classes/MediaWiki/Gateway.html#M000007">new (MediaWiki::Gateway)</a><br />
45
- <a href="classes/MediaWiki/Config.html#M000031">new (MediaWiki::Config)</a><br />
46
46
  <a href="classes/MediaWiki/Gateway.html#M000019">redirect? (MediaWiki::Gateway)</a><br />
47
47
  <a href="classes/MediaWiki/Gateway.html#M000010">render (MediaWiki::Gateway)</a><br />
48
48
  <a href="classes/MediaWiki/Gateway.html#M000017">search (MediaWiki::Gateway)</a><br />
@@ -50,7 +50,9 @@
50
50
  <a href="classes/MediaWiki/Gateway.html#M000014">undelete (MediaWiki::Gateway)</a><br />
51
51
  <a href="classes/MediaWiki/Gateway.html#M000018">upload (MediaWiki::Gateway)</a><br />
52
52
  <a href="classes/MediaWiki.html#M000004">uri_to_wiki (MediaWiki)</a><br />
53
+ <a href="classes/MediaWiki/Gateway.html#M000031">valid_page? (MediaWiki::Gateway)</a><br />
53
54
  <a href="classes/MediaWiki.html#M000006">version (MediaWiki)</a><br />
55
+ <a href="classes/MediaWiki/Gateway.html#M000032">warning (MediaWiki::Gateway)</a><br />
54
56
  <a href="classes/MediaWiki.html#M000005">wiki_to_uri (MediaWiki)</a><br />
55
57
  </div>
56
58
  </div>
data/lib/media_wiki.rb CHANGED
@@ -3,5 +3,5 @@ require File.dirname(__FILE__) + '/media_wiki/utils'
3
3
  require File.dirname(__FILE__) + '/media_wiki/gateway'
4
4
 
5
5
  module MediaWiki
6
- VERSION = "0.3.3"
6
+ VERSION = "0.3.4"
7
7
  end
@@ -15,6 +15,7 @@ module MediaWiki
15
15
  # [options] Hash of options
16
16
  #
17
17
  # Options:
18
+ # [:ignorewarnings] Log API warnings and invalid page titles, instead of aborting with an error.
18
19
  # [:limit] Maximum number of results returned per search (see http://www.mediawiki.org/wiki/API:Query_-_Lists#Limits), defaults to the MediaWiki default of 500.
19
20
  # [:loglevel] Log level to use, defaults to Logger::WARN. Set to Logger::DEBUG to dump every request and response to the log.
20
21
  # [:maxlag] Maximum allowed server lag (see http://www.mediawiki.org/wiki/Manual:Maxlag_parameter), defaults to 5 seconds.
@@ -60,9 +61,7 @@ module MediaWiki
60
61
  def get(page_title)
61
62
  form_data = {'action' => 'query', 'prop' => 'revisions', 'rvprop' => 'content', 'titles' => page_title}
62
63
  page = make_api_request(form_data).first.elements["query/pages/page"]
63
- if ! page or page.attributes["missing"]
64
- nil
65
- else
64
+ if valid_page? page
66
65
  page.elements["revisions/rev"].text || ""
67
66
  end
68
67
  end
@@ -119,7 +118,14 @@ module MediaWiki
119
118
  form_data['createonly'] = "" unless options[:overwrite]
120
119
  make_api_request(form_data)
121
120
  end
122
-
121
+
122
+ # Edit page
123
+ #
124
+ # Same options as create, but always overwrites existing pages (and creates them if they don't exist already).
125
+ def edit(title, content, options)
126
+ create(title, content, {:overwrite => true}.merge(options))
127
+ end
128
+
123
129
  # Move a page to a new title
124
130
  #
125
131
  # [from] Old page name
@@ -317,7 +323,7 @@ module MediaWiki
317
323
  def redirect?(page_title)
318
324
  form_data = {'action' => 'query', 'prop' => 'info', 'titles' => page_title}
319
325
  page = make_api_request(form_data).first.elements["query/pages/page"]
320
- !!(page and page.attributes["redirect"])
326
+ !!(valid_page?(page) and page.attributes["redirect"])
321
327
  end
322
328
 
323
329
  # Requests image info from MediaWiki. Follows redirects.
@@ -364,13 +370,15 @@ module MediaWiki
364
370
 
365
371
  xml, dummy = make_api_request(form_data)
366
372
  page = xml.elements["query/pages/page"]
367
- if ! page or page.attributes["missing"]
368
- nil
369
- elsif xml.elements["query/redirects/r"]
370
- # We're dealing with redirect here.
371
- image_info(page.attributes["pageid"].to_i, options)
373
+ if valid_page? page
374
+ if xml.elements["query/redirects/r"]
375
+ # We're dealing with redirect here.
376
+ image_info(page.attributes["pageid"].to_i, options)
377
+ else
378
+ page.elements["imageinfo/ii"].attributes
379
+ end
372
380
  else
373
- page.elements["imageinfo/ii"].attributes
381
+ nil
374
382
  end
375
383
  end
376
384
 
@@ -527,10 +535,29 @@ module MediaWiki
527
535
  info = doc.elements["error"].attributes["info"]
528
536
  raise "API error: code '#{code}', info '#{info}'"
529
537
  end
530
- if doc.elements["warnings"] and !@options[:ignorewarnings]
531
- raise "API warning: #{doc.elements["warnings"].children.map {|e| e.text}.join(", ")}"
538
+ if doc.elements["warnings"]
539
+ warning("API warning: #{doc.elements["warnings"].children.map {|e| e.text}.join(", ")}")
532
540
  end
533
541
  doc
534
542
  end
543
+
544
+ def valid_page?(page)
545
+ return false unless page
546
+ return false if page.attributes["missing"]
547
+ if page.attributes["invalid"]
548
+ warning("Invalid title '#{page.attributes["title"]}'")
549
+ else
550
+ true
551
+ end
552
+ end
553
+
554
+ def warning(msg)
555
+ if @options[:ignorewarnings]
556
+ log.warn(msg)
557
+ return false
558
+ else
559
+ raise msg
560
+ end
561
+ end
535
562
  end
536
563
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mediawiki-gateway}
8
- s.version = "0.3.3"
8
+ s.version = "0.3.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jani Patokallio"]
12
- s.date = %q{2011-01-27}
12
+ s.date = %q{2011-02-07}
13
13
  s.description = %q{}
14
14
  s.email = %q{jpatokal@iki.fi}
15
15
  s.extra_rdoc_files = [
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
33
33
  "doc/files/script/get_page_rb.html",
34
34
  "doc/files/script/import_xml_rb.html",
35
35
  "doc/files/script/run_fake_media_wiki_rb.html",
36
+ "doc/files/script/search_content_rb.html",
36
37
  "doc/files/script/upload_commons_rb.html",
37
38
  "doc/files/script/upload_file_rb.html",
38
39
  "doc/fr_class_index.html",
data/spec/gateway_spec.rb CHANGED
@@ -359,6 +359,23 @@ describe MediaWiki::Gateway do
359
359
 
360
360
  end
361
361
 
362
+ describe "#edit" do
363
+ before do
364
+ $fake_media_wiki.reset
365
+ @edit_page = @gateway.edit("Main Page", "Some new content", :summary => "The summary")
366
+ end
367
+
368
+ it "should overwrite the existing page" do
369
+ expected = <<-XML
370
+ <api>
371
+ <edit result='Success' pageid='8' title='Main Page' oldrevid='1' newrevid='8'/>
372
+ </api>
373
+ XML
374
+ Hash.from_xml(@edit_page.to_s).should == Hash.from_xml(expected)
375
+ end
376
+
377
+ end
378
+
362
379
  describe "#upload" do
363
380
 
364
381
  before do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediawiki-gateway
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 3
10
- version: 0.3.3
9
+ - 4
10
+ version: 0.3.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jani Patokallio
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-27 00:00:00 +11:00
18
+ date: 2011-02-07 00:00:00 +11:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency