congress_v3 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de4beab59d795874ea746a15b6c5d9e1140086d0
4
- data.tar.gz: fa31dd69988db7629bd5d4ae4022cadc2d89dd5a
3
+ metadata.gz: 2ade7d194872c4bfac099b3003bbf2ebdf07aded
4
+ data.tar.gz: d14bd115745bba6e0dad22ea80823c0a518d9c33
5
5
  SHA512:
6
- metadata.gz: c68f9dfbcfc605fb058a7ecb4427401500d4a95af25ea3b31231952b968b102543bce62d94ec3ab76ea20b9f251d3673425f127e5e8ae853a1b80cf8b9478b3e
7
- data.tar.gz: ef2dfe10682d1f7c58a1fb2e4e98843aef096fb2297c517b02392ec0416179447d920241e6c1d976a222ae23f85272c293b5c8bcf9ff335237d44d098dcab46c
6
+ metadata.gz: 2985c6210623d17744687d24c00c471ceba16cbbfd105f92acadcc9acc7b3a685c08b61c81d9f1bf2fe24dd4b013e47579fe743969604928bd6bf99f50f4bbcf
7
+ data.tar.gz: 2e76ca5566d17625831e4b2306f8490bcb933c3f55c4a0e56058176c77c765f96f5aa0e7b1ae22e499b6d7e79882e2f3c32d1e90c325ee8ab1a1cef37e528d06
data/.gitignore CHANGED
@@ -11,3 +11,4 @@
11
11
  .env
12
12
  /vcr_cassettes
13
13
  *.gem
14
+ .DS_Store
data/.travis.yml CHANGED
@@ -4,4 +4,4 @@ rvm:
4
4
  - 2.3.0
5
5
  - 2.2.4
6
6
  - 2.0.0
7
- before_install: gem install bundler -v 1.11.2
7
+ before_install: gem install bundler -v 1.12.3
data/congress_v3.gemspec CHANGED
@@ -20,8 +20,9 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_dependency "nokogiri", "~> 1.6.7"
23
+ spec.add_dependency "open_uri_redirections"
23
24
 
24
- spec.add_development_dependency "bundler", "~> 1.11.2"
25
+ spec.add_development_dependency "bundler", "~> 1.12.3"
25
26
  spec.add_development_dependency "rake", "~> 10.0"
26
27
  spec.add_development_dependency "rspec", "~> 3.0"
27
28
  spec.add_development_dependency "pry", "~> 0.10.0"
data/lib/congress_v3.rb CHANGED
@@ -4,6 +4,7 @@ require 'congress_v3/request'
4
4
  require 'congress_v3/response'
5
5
  require 'congress_v3/legislator'
6
6
  require 'congress_v3/bill'
7
+ require 'congress_v3/vote'
7
8
 
8
9
  module CongressV3
9
10
  end
@@ -21,4 +21,8 @@ class CongressV3::Bill
21
21
  "No text for this bill"
22
22
  end
23
23
  end
24
+
25
+ def votes(params={})
26
+ @votes ||= CongressV3::Request.bill_votes(bill_id, params)
27
+ end
24
28
  end
@@ -21,4 +21,8 @@ class CongressV3::Legislator
21
21
  def term
22
22
  Time.parse(term_start)...Time.parse(term_end)
23
23
  end
24
+
25
+ def votes(params={})
26
+ @votes ||= CongressV3::Request.legislator_votes(bioguide_id, params)
27
+ end
24
28
  end
@@ -2,6 +2,7 @@ require 'net/http'
2
2
  require 'json'
3
3
  require 'nokogiri'
4
4
  require 'open-uri'
5
+ require 'open_uri_redirections'
5
6
 
6
7
  class CongressV3::Request
7
8
  BASE_URI = 'https://congress.api.sunlightfoundation.com'
@@ -47,15 +48,70 @@ class CongressV3::Request
47
48
  response
48
49
  end
49
50
 
51
+ def self.votes(params)
52
+ response = new('/votes', params).request
53
+
54
+ response.results.map! do |vote|
55
+ CongressV3::Vote.new(vote)
56
+ end
57
+
58
+ response
59
+ end
60
+
50
61
  def self.bill_text(uri)
51
- html = Nokogiri::HTML(open(uri))
62
+ html = Nokogiri::HTML(open(uri, allow_redirections: :all))
52
63
  html.css('body pre').text
53
64
  end
54
65
 
66
+ def self.bill_votes(bill_id, params={})
67
+ params[:bill_id] = bill_id
68
+ params[:fields] = "voters,chamber"
69
+ response = new('/votes', params).request
70
+
71
+ senators = []
72
+ representatives = []
73
+
74
+ response.results.each do |result|
75
+ chamber = result["chamber"]
76
+ if (chamber == "house" && representatives.empty?) || (chamber == "senate" && senators.empty?)
77
+ result["voters"].each do |_, voter|
78
+ voter["voter"].merge!(vote: voter["vote"])
79
+ voter = CongressV3::Legislator.new(voter["voter"])
80
+ case chamber
81
+ when "house"
82
+ representatives << voter
83
+ when "senate"
84
+ senators << voter
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ { senate: senators, house: representatives }
91
+ end
92
+
93
+ def self.legislator_votes(legislator_id, params={})
94
+ request = new('/votes', params)
95
+ uri = URI(BASE_URI + '/votes')
96
+ uri.query = URI.encode_www_form(request.params) + '&voter_ids.' + legislator_id
97
+ response = request.parse_response_body(uri)
98
+
99
+ response.results.map! do |vote|
100
+ CongressV3::Vote.new(vote)
101
+ end
102
+
103
+ response
104
+ end
105
+
55
106
  def request
56
107
  uri = URI(BASE_URI + route)
57
108
  uri.query = URI.encode_www_form(params)
58
- response = Net::HTTP.get(uri)
59
- CongressV3::Response.new(JSON.parse(response))
109
+ parse_response_body(uri)
110
+ end
111
+
112
+ def parse_response_body(uri)
113
+ response_body = Net::HTTP.get(uri)
114
+ json_response = JSON.parse(response_body)
115
+ CongressV3::Response.new(json_response)
60
116
  end
61
117
  end
@@ -1,3 +1,3 @@
1
1
  module CongressV3
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -0,0 +1,12 @@
1
+ class CongressV3::Vote
2
+ def self.all(params={})
3
+ CongressV3::Request.votes(params)
4
+ end
5
+
6
+ def initialize(params)
7
+ params.each do |key, value|
8
+ instance_variable_set("@#{key}", value)
9
+ self.class.send(:attr_reader, key)
10
+ end
11
+ end
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: congress_v3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - charlesmassry
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-25 00:00:00.000000000 Z
11
+ date: 2016-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -24,20 +24,34 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.6.7
27
+ - !ruby/object:Gem::Dependency
28
+ name: open_uri_redirections
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: 1.11.2
47
+ version: 1.12.3
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: 1.11.2
54
+ version: 1.12.3
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -160,6 +174,7 @@ files:
160
174
  - lib/congress_v3/request.rb
161
175
  - lib/congress_v3/response.rb
162
176
  - lib/congress_v3/version.rb
177
+ - lib/congress_v3/vote.rb
163
178
  homepage: https://github.com/CharlesMassry/CongressV3
164
179
  licenses:
165
180
  - MIT