Class: CongressV3::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/congress_v3/request.rb

Constant Summary collapse

BASE_URI =
'https://congress.api.sunlightfoundation.com'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(route, params) ⇒ Request



10
11
12
13
14
15
16
17
18
# File 'lib/congress_v3/request.rb', line 10

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 }
  @route = route
  @params = defaults.merge(params)
end

Instance Attribute Details

#paramsObject

Returns the value of attribute params.



8
9
10
# File 'lib/congress_v3/request.rb', line 8

def params
  @params
end

#routeObject

Returns the value of attribute route.



8
9
10
# File 'lib/congress_v3/request.rb', line 8

def route
  @route
end

Class Method Details

.bill_search(params) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/congress_v3/request.rb', line 40

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



50
51
52
53
# File 'lib/congress_v3/request.rb', line 50

def self.bill_text(uri)
  html = Nokogiri::HTML(open(uri))
  html.css('body pre').text
end

.bills(params) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/congress_v3/request.rb', line 30

def self.bills(params)
  response = new("/bills", params).request

  response.results.map! do |bill|
    CongressV3::Bill.new(bill)
  end

  response
end

.legislators(params = {}) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/congress_v3/request.rb', line 20

def self.legislators(params={})
  response = new("/legislators", params).request

  response.results.map! do |legislator|
    CongressV3::Legislator.new(legislator)
  end

  response
end

Instance Method Details

#requestObject



55
56
57
58
59
60
# File 'lib/congress_v3/request.rb', line 55

def request
  uri = URI(BASE_URI + route)
  uri.query = URI.encode_www_form(params)
  response = Net::HTTP.get(uri)
  CongressV3::Response.new(JSON.parse(response))
end