Class: Hulse::HouseVote
- Inherits:
-
Object
- Object
- Hulse::HouseVote
- Defined in:
- lib/hulse/house_vote.rb
Instance Attribute Summary collapse
-
#amendment_author ⇒ Object
readonly
Returns the value of attribute amendment_author.
-
#amendment_number ⇒ Object
readonly
Returns the value of attribute amendment_number.
-
#bill_number ⇒ Object
readonly
Returns the value of attribute bill_number.
-
#bill_url ⇒ Object
readonly
Returns the value of attribute bill_url.
-
#chamber ⇒ Object
readonly
Returns the value of attribute chamber.
-
#congress ⇒ Object
readonly
Returns the value of attribute congress.
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#majority ⇒ Object
readonly
Returns the value of attribute majority.
-
#members ⇒ Object
readonly
Returns the value of attribute members.
-
#party_summary ⇒ Object
readonly
Returns the value of attribute party_summary.
-
#question ⇒ Object
readonly
Returns the value of attribute question.
-
#session ⇒ Object
readonly
Returns the value of attribute session.
-
#vote_count ⇒ Object
readonly
Returns the value of attribute vote_count.
-
#vote_number ⇒ Object
readonly
Returns the value of attribute vote_number.
-
#vote_result ⇒ Object
readonly
Returns the value of attribute vote_result.
-
#vote_timestamp ⇒ Object
readonly
Returns the value of attribute vote_timestamp.
-
#vote_type ⇒ Object
readonly
Returns the value of attribute vote_type.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(params = {}) ⇒ HouseVote
constructor
A new instance of HouseVote.
Constructor Details
#initialize(params = {}) ⇒ HouseVote
Returns a new instance of HouseVote.
7 8 9 10 11 |
# File 'lib/hulse/house_vote.rb', line 7 def initialize(params={}) params.each_pair do |k,v| instance_variable_set("@#{k}", v) end end |
Instance Attribute Details
#amendment_author ⇒ Object (readonly)
Returns the value of attribute amendment_author.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def @amendment_author end |
#amendment_number ⇒ Object (readonly)
Returns the value of attribute amendment_number.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def amendment_number @amendment_number end |
#bill_number ⇒ Object (readonly)
Returns the value of attribute bill_number.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def bill_number @bill_number end |
#bill_url ⇒ Object (readonly)
Returns the value of attribute bill_url.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def bill_url @bill_url end |
#chamber ⇒ Object (readonly)
Returns the value of attribute chamber.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def chamber @chamber end |
#congress ⇒ Object (readonly)
Returns the value of attribute congress.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def congress @congress end |
#description ⇒ Object (readonly)
Returns the value of attribute description.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def description @description end |
#majority ⇒ Object (readonly)
Returns the value of attribute majority.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def majority @majority end |
#members ⇒ Object (readonly)
Returns the value of attribute members.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def members @members end |
#party_summary ⇒ Object (readonly)
Returns the value of attribute party_summary.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def party_summary @party_summary end |
#question ⇒ Object (readonly)
Returns the value of attribute question.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def question @question end |
#session ⇒ Object (readonly)
Returns the value of attribute session.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def session @session end |
#vote_count ⇒ Object (readonly)
Returns the value of attribute vote_count.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def vote_count @vote_count end |
#vote_number ⇒ Object (readonly)
Returns the value of attribute vote_number.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def vote_number @vote_number end |
#vote_result ⇒ Object (readonly)
Returns the value of attribute vote_result.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def vote_result @vote_result end |
#vote_timestamp ⇒ Object (readonly)
Returns the value of attribute vote_timestamp.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def @vote_timestamp end |
#vote_type ⇒ Object (readonly)
Returns the value of attribute vote_type.
4 5 6 |
# File 'lib/hulse/house_vote.rb', line 4 def vote_type @vote_type end |
Class Method Details
.create_from_vote(response) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# 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 |
.find(year, vote) ⇒ Object
20 21 22 23 24 |
# 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) ⇒ Object
13 14 15 16 17 18 |
# 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 |