class CongressV3::Request

Constants

BASE_URI

Attributes

params[RW]
route[RW]

Public Class Methods

bill_text(uri) click to toggle source
# File lib/congress_v3/request.rb, line 61
def self.bill_text(uri)
  html = Nokogiri::HTML(open(uri, allow_redirections: :all))
  html.css('body pre').text
end
bill_votes(bill_id, params={}) click to toggle source
# File lib/congress_v3/request.rb, line 66
def self.bill_votes(bill_id, params={})
  params[:bill_id] = bill_id
  params[:fields] = "voter_ids,chamber,vote_type,required,result,voted_at"
  response = new('/votes', params).request

  response
end
bills(params) click to toggle source
# File lib/congress_v3/request.rb, line 31
def self.bills(params)
  response = new("/bills", params).request

  response.results.map! do |bill|
    CongressV3::Bill.new(bill)
  end

  response
end
legislator_votes(legislator_id, params={}) click to toggle source
# File lib/congress_v3/request.rb, line 74
def self.legislator_votes(legislator_id, params={})
  request = new('/votes', params)
  uri = URI(BASE_URI + '/votes')
  uri.query = URI.encode_www_form(request.params) + '&voter_ids.' + legislator_id
  response = request.parse_response_body(uri)

  response.results.map! do |vote|
    CongressV3::Vote.new(vote)
  end

  response
end
legislators(params={}) click to toggle source
# File lib/congress_v3/request.rb, line 21
def self.legislators(params={})
  response = new("/legislators", params).request

  response.results.map! do |legislator|
    CongressV3::Legislator.new(legislator)
  end

  response
end
new(route, params) click to toggle source
# File lib/congress_v3/request.rb, line 11
def initialize(route, params)
  if !CongressV3::Config.api_key || CongressV3::Config.api_key.empty?
    raise Exception.new("API Key MUST be set!")
  end

  defaults = { page: 1, apikey: CongressV3::Config.api_key, per_page: 50 }
  @route = route
  @params = defaults.merge(params)
end
votes(params) click to toggle source
# File lib/congress_v3/request.rb, line 51
def self.votes(params)
  response = new('/votes', params).request

  response.results.map! do |vote|
    CongressV3::Vote.new(vote)
  end

  response
end

Public Instance Methods

parse_response_body(uri) click to toggle source
# File lib/congress_v3/request.rb, line 93
def parse_response_body(uri)
  response_body = Net::HTTP.get(uri)
  json_response = JSON.parse(response_body)
  CongressV3::Response.new(json_response)
end
request() click to toggle source
# File lib/congress_v3/request.rb, line 87
def request
  uri = URI(BASE_URI + route)
  uri.query = URI.encode_www_form(params)
  parse_response_body(uri)
end