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?