lib/media_wiki/gateway.rb in mediawiki-gateway-0.2.1 vs lib/media_wiki/gateway.rb in mediawiki-gateway-0.2.2

- old
+ new

@@ -103,10 +103,27 @@ form_data = {'action' => 'edit', 'title' => title, 'text' => content, 'summary' => (options[:summary] || ""), 'token' => get_token('edit', title)} form_data['createonly'] = "" unless options[:overwrite] make_api_request(form_data) end + # Move a page to a new title + # + # [from] Old page name + # [to] New page name + # [options] Hash of additional options + # + # Options: + # * [movesubpages] Move associated subpages + # * [movetalk] Move associated talkpages + def move(from, to, options={}) + valid_options = %w(movesubpages movetalk) + options.keys.each{|opt| raise ArgumentError.new("Unknown option '#{opt}'") unless valid_options.include?(opt.to_s)} + + form_data = options.merge({'action' => 'move', 'from' => from, 'to' => to, 'token' => get_token('move', from)}) + make_api_request(form_data) + end + # Delete one page. (MediaWiki API does not support deleting multiple pages at a time.) # # [title] Title of page to delete def delete(title) form_data = {'action' => 'delete', 'title' => title, 'token' => get_token('delete', title)} @@ -127,13 +144,13 @@ else 0 # No revisions to undelete end end - # Get a list of matching page titles + # Get a list of matching page titles in a namespace # - # [key] Search key, matched as a prefix (^key.*). May contain or equal a namespace. + # [key] Search key, matched as a prefix (^key.*). May contain or equal a namespace, defaults to main (namespace 0) if none given. # # Returns array of page titles (empty if no matches) def list(key) titles = [] apfrom = nil @@ -399,10 +416,10 @@ return xml.elements["parse/text"].text end private - # Fetch token (type 'delete', 'edit', 'import') + # Fetch token (type 'delete', 'edit', 'import', 'move') def get_token(type, page_titles) form_data = {'action' => 'query', 'prop' => 'info', 'intoken' => type, 'titles' => page_titles} res = make_api_request(form_data) token = res.elements["query/pages/page"].attributes[type + "token"] raise "User is not permitted to perform this operation: #{type}" if token.nil?