Class: CongressV3::Request
- Inherits:
-
Object
- Object
- CongressV3::Request
- Defined in:
- lib/congress_v3/request.rb
Constant Summary collapse
- BASE_URI =
'https://congress.api.sunlightfoundation.com'
Instance Attribute Summary collapse
-
#params ⇒ Object
Returns the value of attribute params.
-
#route ⇒ Object
Returns the value of attribute route.
Class Method Summary collapse
- .bill_search(params) ⇒ Object
- .bill_text(uri) ⇒ Object
- .bill_votes(bill_id, params = {}) ⇒ Object
- .bills(params) ⇒ Object
- .legislator_votes(legislator_id, params = {}) ⇒ Object
- .legislators(params = {}) ⇒ Object
- .votes(params) ⇒ Object
Instance Method Summary collapse
-
#initialize(route, params) ⇒ Request
constructor
A new instance of Request.
- #parse_response_body(uri) ⇒ Object
- #request ⇒ Object
Constructor Details
#initialize(route, params) ⇒ Request
Returns a new instance of Request.
11 12 13 14 15 16 17 18 19 |
# File 'lib/congress_v3/request.rb', line 11 def initialize(route, params) if !CongressV3::Config.api_key || CongressV3::Config.api_key.empty? raise Exception.new("API Key MUST be set!") end defaults = { page: 1, apikey: CongressV3::Config.api_key, per_page: 50 } @route = route @params = defaults.merge(params) end |
Instance Attribute Details
#params ⇒ Object
Returns the value of attribute params.
9 10 11 |
# File 'lib/congress_v3/request.rb', line 9 def params @params end |
#route ⇒ Object
Returns the value of attribute route.
9 10 11 |
# File 'lib/congress_v3/request.rb', line 9 def route @route end |
Class Method Details
.bill_search(params) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/congress_v3/request.rb', line 41 def self.bill_search(params) response = new("/bills/search", params).request response.results.map! do |bill| CongressV3::Bill.new(bill) end response end |
.bill_text(uri) ⇒ Object
61 62 63 64 |
# File 'lib/congress_v3/request.rb', line 61 def self.bill_text(uri) html = Nokogiri::HTML(open(uri, allow_redirections: :all)) html.css('body pre').text end |
.bill_votes(bill_id, params = {}) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/congress_v3/request.rb', line 66 def self.bill_votes(bill_id, params={}) params[:bill_id] = bill_id params[:fields] = "voter_ids,chamber,vote_type,required,result,voted_at" response = new('/votes', params).request response end |
.bills(params) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/congress_v3/request.rb', line 31 def self.bills(params) response = new("/bills", params).request response.results.map! do |bill| CongressV3::Bill.new(bill) end response end |
.legislator_votes(legislator_id, params = {}) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/congress_v3/request.rb', line 74 def self.legislator_votes(legislator_id, params={}) request = new('/votes', params) uri = URI(BASE_URI + '/votes') uri.query = URI.encode_www_form(request.params) + '&voter_ids.' + legislator_id response = request.parse_response_body(uri) response.results.map! do |vote| CongressV3::Vote.new(vote) end response end |
.legislators(params = {}) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/congress_v3/request.rb', line 21 def self.legislators(params={}) response = new("/legislators", params).request response.results.map! do |legislator| CongressV3::Legislator.new(legislator) end response end |
.votes(params) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/congress_v3/request.rb', line 51 def self.votes(params) response = new('/votes', params).request response.results.map! do |vote| CongressV3::Vote.new(vote) end response end |
Instance Method Details
#parse_response_body(uri) ⇒ Object
93 94 95 96 97 |
# File 'lib/congress_v3/request.rb', line 93 def parse_response_body(uri) response_body = Net::HTTP.get(uri) json_response = JSON.parse(response_body) CongressV3::Response.new(json_response) end |
#request ⇒ Object
87 88 89 90 91 |
# File 'lib/congress_v3/request.rb', line 87 def request uri = URI(BASE_URI + route) uri.query = URI.encode_www_form(params) parse_response_body(uri) end |