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, line 86
def custom_query(options)
  form_data = {}
  options.each { |k, v| form_data[k.to_s] = v.to_s }
  send_request(form_data.merge('action' => 'query')).elements['query']
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, line 50
def semantic_query(query, params = [], options = {})
  unless smw_version = extensions['Semantic MediaWiki']
    raise MediaWiki::Exception, 'Semantic MediaWiki extension not installed.'
  end

  if smw_version.to_f >= 1.7
    send_request(options.merge(
      'action' => 'ask',
      'query'  => "#{query}|#{params.join('|')}"
    ))
  else
    send_request(options.merge(
      'action' => 'parse',
      'prop'   => 'text',
      'text'   => "{{#ask:#{query}|#{params.push('format=list').join('|')}}}"
    )).elements['parse/text'].text
  end
end