class Wikiranger::Wikipedia

Constants

DEFAULT_API_BASE_URI

Attributes

options[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/wikiranger/wikipedia.rb, line 10
def initialize(options = {})
  @options = options
end

Public Instance Methods

user_contributions(user) click to toggle source
# File lib/wikiranger/wikipedia.rb, line 14
def user_contributions(user)
  uri      = "#{api_base_uri}/w/api.php?action=query&format=json&list=usercontribs&uclimit=max&ucuser=#{URI.escape(user)}&ucdir=older&ucprop=&ucprop=ids|title|timestamp|comment|size|sizediff"
  response = request(uri)
  if response.code.to_i != 200
    unexpected_response!("Unexpected response code: #{response.code} when retrieving user contributions for #{user}")
  end
  parsed_body   = JSON.parse(response.body)
  contributions = []
  parsed_body["query"]["usercontribs"].each do |contribution|
    contributions.push(Wikiranger::Wikipedia::UserContribution.new(contribution))
  end
  contributions
end

Private Instance Methods

api_base_uri() click to toggle source
# File lib/wikiranger/wikipedia.rb, line 42
def api_base_uri
  options[:api_base_uri] || DEFAULT_API_BASE_URI
end
http_object(uri) click to toggle source
# File lib/wikiranger/wikipedia.rb, line 36
def http_object(uri)
  http = Net::HTTP.new(uri.host, uri.port).tap do |h|
    h.use_ssl = (uri.scheme == "https")
  end
end
request(uri) click to toggle source
# File lib/wikiranger/wikipedia.rb, line 30
def request(uri)
  uri  = URI.parse(uri)
  http = http_object(uri)
  http.get(uri.request_uri)
end
unexpected_response!(message) click to toggle source
# File lib/wikiranger/wikipedia.rb, line 46
def unexpected_response!(message)
  fail Wikiranger::Wikipedia::UnexpectedResponseError, message
end