class ProPublica
Attributes
api_key[RW]
Public Class Methods
new(api_key)
click to toggle source
# File lib/propublica.rb, line 7 def initialize(api_key) @api_key = api_key end
Public Instance Methods
about()
click to toggle source
# File lib/propublica.rb, line 11 def about puts "Hello! This is a Ruby wrapper for the ProPublica API. Try getting starting by seeing current senators for California, for example: 'sens = client.get_senate_members(115).select{ |sen| sen[:state] == 'CA'}'" return self.get_senate_members(115).select{ |sen| sen[:state] == 'CA'} end
config(api_key)
click to toggle source
# File lib/propublica.rb, line 18 def config(api_key) @api_key = api_key end
get_house_members(congress_number)
click to toggle source
TO-DO: Be able to select and retrieve all desired information keys (e.g., twitter_account).
# File lib/propublica.rb, line 68 def get_house_members(congress_number) if response = self.get_response_from_API(congress_number,"house") raw_house_members_data = JSON.parse(response.body) house_members = raw_house_members_data["results"].first["members"] all_members = [] house_members.each do |hash| member = {} member[:first_name] = hash["first_name"] member[:last_name] = hash["last_name"] member[:link] = hash["api_uri"] member[:party] = hash["party"] member[:state] = hash["state"] member[:next_election] = hash["next_election"] member[:twitter_account] = hash["twitter_account"] all_members << member end return all_members else return "Please configure your API key." end end
get_member(congressional_id)
click to toggle source
# File lib/propublica.rb, line 91 def get_member(congressional_id) if @api_key != nil && @api_key.length > 10 # To-Do: Add validation. uri = URI.parse("https://api.propublica.org/congress/v1/members/#{congressional_id}.json") request = Net::HTTP::Get.new(uri) request["X-Api-Key"] = @api_key req_options = { use_ssl: uri.scheme == "https", } response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http| http.request(request) end raw_member_data = JSON.parse(response.body) return raw_member_data["results"].first else puts "Please configure your API key." return false end end
get_response_from_API(congress, chamber)
click to toggle source
# File lib/propublica.rb, line 22 def get_response_from_API(congress, chamber) if @api_key != nil && @api_key.length > 10 # To-Do: Add validation. uri = URI.parse("https://api.propublica.org/congress/v1/#{congress}/#{chamber}/members.json") request = Net::HTTP::Get.new(uri) request["X-Api-Key"] = @api_key req_options = { use_ssl: uri.scheme == "https", } response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http| http.request(request) end return response else puts "Please configure your API key." return false end end
get_senate_members(congress_number)
click to toggle source
TO-DO: Be able to select and retrieve all desired information keys (e.g., twitter_account).
# File lib/propublica.rb, line 44 def get_senate_members(congress_number) if response = self.get_response_from_API(congress_number,"senate") raw_senate_members_data = JSON.parse(response.body) senate_members = raw_senate_members_data["results"].first["members"] all_members = [] senate_members.each do |hash| member = {} member[:first_name] = hash["first_name"] member[:last_name] = hash["last_name"] member[:link] = hash["api_uri"] member[:party] = hash["party"] member[:state] = hash["state"] member[:next_election] = hash["next_election"] member[:twitter_account] = hash["twitter_account"] all_members << member end return all_members else return "Please configure your API key." end end