mediawiki-gateway 0.3.3 → 0.3.4

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/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