class Hulse::HouseVote
Attributes
amendment_number[R]
bill_number[R]
bill_url[R]
chamber[R]
congress[R]
description[R]
majority[R]
members[R]
party_summary[R]
question[R]
session[R]
vote_count[R]
vote_number[R]
vote_result[R]
vote_timestamp[R]
vote_type[R]
Public Class Methods
create_from_vote(response)
click to toggle source
# File lib/hulse/house_vote.rb, line 26 def self.create_from_vote(response) party_totals = [] if response['vote_metadata']['vote_totals']['totals_by_party'] response['vote_metadata']['vote_totals']['totals_by_party'].each do |p| party_totals << p.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} end end members = [] mappings = {"__content__" => "name"} if response['vote_data'] response['vote_data']['recorded_vote'].each do |m| m['legislator']['name'] = m['legislator'].delete('__content__') m['legislator']['bioguide_id'] = m['legislator'].delete('name_id') # prior to 2003, bioguide IDs were not used in the XML m['legislator']['vote'] = m['vote'] members << m['legislator'].inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} end end if response['vote_metadata']['vote_question'] == 'Election of the Speaker' vote_counts = response['vote_metadata']['vote_totals']['totals_by_candidate'].reject{|k,v| k == 'total_stub'}.inject({}){|memo,(k,v)| memo[k['candidate'].to_sym] = k['candidate_total'].to_i; memo} else vote_counts = response['vote_metadata']['vote_totals']['totals_by_vote'].reject{|k,v| k == 'total_stub'}.inject({}){|memo,(k,v)| memo[k.to_sym] = v.to_i; memo} end self.new(majority: response['vote_metadata']['majority'], congress: response['vote_metadata']['congress'].to_i, session: response['vote_metadata']['session'], chamber: response['vote_metadata']['chamber'], vote_number: response['vote_metadata']['rollcall_num'].to_i, bill_number: response['vote_metadata']['legis_num'], bill_url: response['vote_metadata']['legis_num'] ? Hulse::Utils.bill_url(response['vote_metadata']['congress'], response['vote_metadata']['legis_num']) : nil, question: response['vote_metadata']['vote_question'], amendment_number: response['vote_metadata']['amendment_num'], amendment_author: response['vote_metadata']['amendment_author'], vote_type: response['vote_metadata']['vote_type'], vote_result: response['vote_metadata']['vote_result'], vote_timestamp: begin DateTime.parse(response['vote_metadata']['action_date'] + ' ' + response['vote_metadata']['action_time']['time_etz']) rescue nil end, description: response['vote_metadata']['vote_desc'], party_summary: party_totals, vote_count: vote_counts, members: members) end end
find(year, vote)
click to toggle source
# File lib/hulse/house_vote.rb, line 20 def self.find(year, vote) url = "http://clerk.house.gov/evs/#{year.to_s}/roll#{vote.to_s.rjust(3,"0")}.xml" response = HTTParty.get(url) self.create_from_vote(response.parsed_response['rollcall_vote']) end
latest_vote(year)
click to toggle source
# File lib/hulse/house_vote.rb, line 13 def self.latest_vote(year) url = "http://clerk.house.gov/evs/#{year}/index.asp" response = HTTParty.get(url) doc = Nokogiri::HTML(response.parsed_response) (doc/:a).first.text.to_i end
new(params={})
click to toggle source
# File lib/hulse/house_vote.rb, line 7 def initialize(params={}) params.each_pair do |k,v| instance_variable_set("@#{k}", v) end end