class Hulse::HouseMember

Attributes

bioguide_id[R]
caucus_party[R]
committees[R]
courtesy[R]
district_code[R]
first_name[R]
footnote[R]
formal_name[R]
hometown[R]
is_vacant[R]
last_elected_date[R]
last_name[R]
middle_name[R]
office_building[R]
office_room[R]
office_zip[R]
official_name[R]
party[R]
phone[R]
predecessor[R]
sort_name[R]
state_name[R]
state_postal[R]
subcommittees[R]
suffix[R]
sworn_date[R]
vacancy_date[R]

Public Class Methods

create_from_xml(response) click to toggle source
# File lib/hulse/house_member.rb, line 22
  def self.create_from_xml(response)
    members = []
    response['MemberData']['members']['member'].each do |member|
      if member['member_info']['elected_date']['date'] == ''
        footnote = member['member_info']['footnote']
        predecessor = member['predecessor_info']
        vacancy_date = Date.parse(member['predecessor_info']['pred_vacate_date']['date'])
        vacant = true
      else
        footnote, predecessor, vacancy_date = nil
        vacant = false
      end

      members << self.new(bioguide_id: member['member_info']['bioguideID'],
        sort_name: member['member_info']['sort_name'],
        last_name: member['member_info']['lastname'],
        first_name: member['member_info']['firstname'],
        middle_name: member['member_info']['middlename'],
        suffix: member['member_info']['suffix'],
        courtesy: member['member_info']['courtesy'],
        official_name: member['member_info']['official_name'],
        formal_name: member['member_info']['formal_name'],
        party: member['member_info']['party'],
        caucus_party: member['member_info']['caucus'],
        state_postal: member['member_info']['state']['postal_code'],
        state_name: member['member_info']['state']['state_fullname'],
        district: member['member_info']['district'],
        district_code: member['statedistrict'],
        hometown: member['member_info']['townname'],
        office_building: member['member_info']['office_building'],
        office_room: member['member_info']['office_room'],
        office_zip: member['member_info']['office_zip']+'-'+member['member_info']['office_zip_suffix'],
        phone: member['member_info']['phone'],
        last_elected_date: begin Date.parse(member['member_info']['elected_date']['date']) rescue nil end,
        sworn_date: begin Date.parse(member['member_info']['sworn_date']['date']) rescue nil end,
        committees: member['committee_assignments']['committee'],
        subcommittees: member['committee_assignments']['subcommittee'],
        is_vacant: vacant,
        footnote: footnote,
        predecessor: predecessor,
        vacancy_date: vacancy_date
      )
    end
    members
  end
end
current() click to toggle source
# File lib/hulse/house_member.rb, line 15
def self.current
  url = "http://clerk.house.gov/xml/lists/MemberData.xml"
  response = HTTParty.get(url)
  self.create_from_xml(response)
end
new(params={}) click to toggle source
# File lib/hulse/house_member.rb, line 9
def initialize(params={})
  params.each_pair do |k,v|
    instance_variable_set("@#{k}", v)
  end
end