module MediaWiki::Gateway::Query

Public Instance Methods

custom_query(options) click to toggle source

Make a custom query

options

query options

Returns the REXML::Element object as result

Example:

def creation_time(pagename)
  res = bot.custom_query(:prop => :revisions,
                         :titles => pagename,
                         :rvprop => :timestamp,
                         :rvdir => :newer,
                         :rvlimit => 1)
  timestr = res.get_elements('*/*/*/rev')[0].attribute('timestamp').to_s
  time.parse(timestr)
end
   # File lib/media_wiki/gateway/query.rb
86 def custom_query(options)
87   form_data = {}
88   options.each { |k, v| form_data[k.to_s] = v.to_s }
89   send_request(form_data.merge('action' => 'query')).elements['query']
90 end
semantic_query(query, params = [], options = {}) click to toggle source

Execute Semantic Mediawiki query

query

Semantic Mediawiki query

params

Array of additional parameters or options, eg. mainlabel=Foo or ?Place (optional)

options

Hash of additional options

Returns result as an HTML string

   # File lib/media_wiki/gateway/query.rb
50 def semantic_query(query, params = [], options = {})
51   unless smw_version = extensions['Semantic MediaWiki']
52     raise MediaWiki::Exception, 'Semantic MediaWiki extension not installed.'
53   end
54 
55   if smw_version.to_f >= 1.7
56     send_request(options.merge(
57       'action' => 'ask',
58       'query'  => [query, *params].join('|')
59     ))
60   else
61     send_request(options.merge(
62       'action' => 'parse',
63       'prop'   => 'text',
64       'text'   => "{{#ask:#{[query, 'format=list', *params].join('|')}}}"
65     )).elements['parse/text'].text
66   end
67 end