Class: ProPublica
- Inherits:
-
Object
- Object
- ProPublica
- Defined in:
- lib/propublica.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
Returns the value of attribute api_key.
Instance Method Summary collapse
- #about ⇒ Object
- #config(api_key) ⇒ Object
-
#get_house_members(congress_number) ⇒ Object
TO-DO: Be able to select and retrieve all desired information keys (e.g., twitter_account).
- #get_member(congressional_id) ⇒ Object
- #get_response_from_API(congress, chamber) ⇒ Object
-
#get_senate_members(congress_number) ⇒ Object
TO-DO: Be able to select and retrieve all desired information keys (e.g., twitter_account).
-
#initialize(api_key) ⇒ ProPublica
constructor
A new instance of ProPublica.
Constructor Details
#initialize(api_key) ⇒ ProPublica
Returns a new instance of ProPublica.
7 8 9 |
# File 'lib/propublica.rb', line 7 def initialize(api_key) @api_key = api_key end |
Instance Attribute Details
#api_key ⇒ Object
Returns the value of attribute api_key.
5 6 7 |
# File 'lib/propublica.rb', line 5 def api_key @api_key end |
Instance Method Details
#about ⇒ Object
11 12 13 14 15 16 |
# 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) ⇒ Object
18 19 20 |
# File 'lib/propublica.rb', line 18 def config(api_key) @api_key = api_key end |
#get_house_members(congress_number) ⇒ Object
TO-DO: Be able to select and retrieve all desired information keys (e.g., twitter_account).
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# 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) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# 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 = { use_ssl: uri.scheme == "https", } response = Net::HTTP.start(uri.hostname, uri.port, ) 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) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# 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 = { use_ssl: uri.scheme == "https", } response = Net::HTTP.start(uri.hostname, uri.port, ) do |http| http.request(request) end return response else puts "Please configure your API key." return false end end |
#get_senate_members(congress_number) ⇒ Object
TO-DO: Be able to select and retrieve all desired information keys (e.g., twitter_account).
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# 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 |