Class: Hulse::SenateVote

Inherits:
Object
  • Object
show all
Defined in:
lib/hulse/senate_vote.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ SenateVote

Returns a new instance of SenateVote.



8
9
10
11
12
# File 'lib/hulse/senate_vote.rb', line 8

def initialize(params={})
  params.each_pair do |k,v|
    instance_variable_set("@#{k}", v)
  end
end

Instance Attribute Details

#amendmentObject (readonly)

Returns the value of attribute amendment.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def amendment
  @amendment
end

#bill_urlObject (readonly)

Returns the value of attribute bill_url.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def bill_url
  @bill_url
end

#congressObject (readonly)

Returns the value of attribute congress.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def congress
  @congress
end

#documentObject (readonly)

Returns the value of attribute document.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def document
  @document
end

#issueObject (readonly)

Returns the value of attribute issue.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def issue
  @issue
end

#majority_requirementObject (readonly)

Returns the value of attribute majority_requirement.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def majority_requirement
  @majority_requirement
end

#membersObject (readonly)

Returns the value of attribute members.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def members
  @members
end

#nomination_urlObject (readonly)

Returns the value of attribute nomination_url.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def nomination_url
  @nomination_url
end

#questionObject (readonly)

Returns the value of attribute question.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def question
  @question
end

#sessionObject (readonly)

Returns the value of attribute session.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def session
  @session
end

#tie_breakerObject (readonly)

Returns the value of attribute tie_breaker.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def tie_breaker
  @tie_breaker
end

#updated_atObject (readonly)

Returns the value of attribute updated_at.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def updated_at
  @updated_at
end

#vote_countObject (readonly)

Returns the value of attribute vote_count.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def vote_count
  @vote_count
end

#vote_dateObject (readonly)

Returns the value of attribute vote_date.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def vote_date
  @vote_date
end

#vote_document_textObject (readonly)

Returns the value of attribute vote_document_text.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def vote_document_text
  @vote_document_text
end

#vote_numberObject (readonly)

Returns the value of attribute vote_number.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def vote_number
  @vote_number
end

#vote_question_textObject (readonly)

Returns the value of attribute vote_question_text.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def vote_question_text
  @vote_question_text
end

#vote_resultObject (readonly)

Returns the value of attribute vote_result.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def vote_result
  @vote_result
end

#vote_result_textObject (readonly)

Returns the value of attribute vote_result_text.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def vote_result_text
  @vote_result_text
end

#vote_timestampObject (readonly)

Returns the value of attribute vote_timestamp.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def vote_timestamp
  @vote_timestamp
end

#vote_titleObject (readonly)

Returns the value of attribute vote_title.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def vote_title
  @vote_title
end

#yearObject (readonly)

Returns the value of attribute year.



4
5
6
# File 'lib/hulse/senate_vote.rb', line 4

def year
  @year
end

Class Method Details

.create_from_vote(response) ⇒ Object



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
# File 'lib/hulse/senate_vote.rb', line 28

def self.create_from_vote(response)
  members = []
  response['members']['member'].each do |m|
    members << m.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
  end
  self.new(congress: response['congress'].to_i,
    session: response['session'].to_i,
    year: response['congress_year'].to_i,
    vote_number: response['vote_number'].to_i,
    vote_timestamp: DateTime.parse(response['vote_date']),
    updated_at: DateTime.parse(response['modify_date']),
    vote_question_text: response['vote_question_text'],
    vote_document_text: response['vote_document_text'],
    vote_result_text: response['vote_result_text'],
    question: response['question'],
    vote_title: response['vote_title'],
    majority_requirement: response['majority_requirement'],
    vote_result: response['vote_result'],
    document: response['document'].inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo},
    amendment: response['amendment'].inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo},
    vote_count: response['count'].inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo},
    tie_breaker: response['tie_breaker'].inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo},
    members: members
  )
end

.find(year, vote) ⇒ Object



21
22
23
24
25
26
# File 'lib/hulse/senate_vote.rb', line 21

def self.find(year, vote)
  congress, session = Hulse::Utils.convert_year_to_congress_and_session(year)
  url = "http://www.senate.gov/legislative/LIS/roll_call_votes/vote#{congress}#{session}/vote_#{congress}_#{session}_#{vote.to_s.rjust(5,"0")}.xml"
  response = HTTParty.get(url)
  self.create_from_vote(response.parsed_response['roll_call_vote'])
end

.latest_vote(year) ⇒ Object



14
15
16
17
18
19
# File 'lib/hulse/senate_vote.rb', line 14

def self.latest_vote(year)
  congress, session = Hulse::Utils.convert_year_to_congress_and_session(year)
  url = "http://www.senate.gov/legislative/LIS/roll_call_lists/vote_menu_#{congress}_#{session}.xml"
  response = HTTParty.get(url)
  response.parsed_response['vote_summary']['votes']['vote'].first['vote_number'].to_i
end

.summary(year) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/hulse/senate_vote.rb', line 54

def self.summary(year)
  congress, session = Hulse::Utils.convert_year_to_congress_and_session(year)
  url = "http://www.senate.gov/legislative/LIS/roll_call_lists/vote_menu_#{congress}_#{session}.xml"
  response = HTTParty.get(url)
  return nil if response.code == 404
  votes = response.parsed_response['vote_summary']['votes']['vote']
  votes.map{|v| self.new(congress: congress, session: session, year: year, vote_number: v['vote_number'], vote_date: Date.strptime(v['vote_date']+"-#{year}", "%d-%b-%Y"), issue: v['issue'],
    question: v['question'], vote_result: v['result'], vote_count: v['vote_tally'].inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}, vote_title: v['title'])}
end

Instance Method Details

#is_nomination_vote?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/hulse/senate_vote.rb', line 64

def is_nomination_vote?
  document[:document_type] == 'PN' ? true : false
end