luigi-sunlight 0.9.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +40 -1
- data/lib/sunlight/legislator.rb +20 -0
- data/sunlight.gemspec +5 -3
- metadata +5 -5
data/README.textile
CHANGED
@@ -108,7 +108,6 @@ Lastly, to provide your users with a name search functionality, use @Legislator#
|
|
108
108
|
|
109
109
|
h3. District
|
110
110
|
|
111
|
-
|
112
111
|
There's also the @District@ object. @District#get@ takes in either lat/long or an address and does it's best to return the correct Congressional District:
|
113
112
|
|
114
113
|
<pre><code>
|
@@ -126,6 +125,46 @@ Finally, two more methods, @District.all_from_zipcode@ and @District.zipcodes_in
|
|
126
125
|
zipcodes = Sunlight::District.zipcodes_in("NY", "10") # returns array of zip codes as strings ["11201", "11202", "11203",...]
|
127
126
|
</code></pre>
|
128
127
|
|
128
|
+
|
129
|
+
h3. Committees
|
130
|
+
|
131
|
+
Members of Congress sit on all-important @Committees@, the smaller bodies that hold hearings and are first to review legislation.
|
132
|
+
|
133
|
+
The @Committee@ object has three identifying fields, and an array of subcommittees, which are @Committee@ objects themselves. To get all the committees for a given chamber of Congress:
|
134
|
+
|
135
|
+
<pre><code>
|
136
|
+
committees = Sunlight::Committee.all_for_chamber("Senate") # or "House" or "Joint"
|
137
|
+
some_committee = committees.last
|
138
|
+
some_committee.name # "Senate Committee on Agriculture, Nutrition, and Forestry"
|
139
|
+
some_committee.id # "SSAF"
|
140
|
+
some_committee.chamber # "Senate"
|
141
|
+
|
142
|
+
some_committee.subcommittees.each do |subcommittee|
|
143
|
+
# do some stuff...
|
144
|
+
end
|
145
|
+
</code></pre>
|
146
|
+
|
147
|
+
The @Committee@ object also keeps a collection of members in that committee, but since that's an API-heavy call, it must be done for each Committee one at a time:
|
148
|
+
|
149
|
+
<pre><code>
|
150
|
+
committees = Sunlight::Committee.all_for_chamber("Senate") # or "House" or "Joint"
|
151
|
+
some_committee = committees.last # some_committee.members starts out as nil
|
152
|
+
some_committee.load_members # some_committee.members is now populated
|
153
|
+
some_committee.members.each do |legislator|
|
154
|
+
# do some stuff...
|
155
|
+
end
|
156
|
+
</code></pre>
|
157
|
+
|
158
|
+
Coming from the opposite direction, the @Legislator@ object has a method for getting all committees for that particular Legislator, returning an array of @Committee@ objects:
|
159
|
+
|
160
|
+
<pre><code>
|
161
|
+
legislators = Sunlight::Legislator.search_by_name("Ted Kennedy")
|
162
|
+
legislator = legislators.first
|
163
|
+
legislator.committees.each do |committee|
|
164
|
+
# do some stuff...
|
165
|
+
end
|
166
|
+
</code></pre>
|
167
|
+
|
129
168
|
h3. Lobbyists and Filings
|
130
169
|
|
131
170
|
Moving away from members of Congress, the Sunlight API also exposes data on @Lobbyists@, the organizations and companies they lobby on behalf of, and the @Issues@ they lobby on. Lobbyists must submit filings to the Senate Office of Public Records, and these are represented as @Filings@ in the API.
|
data/lib/sunlight/legislator.rb
CHANGED
@@ -16,6 +16,26 @@ module Sunlight
|
|
16
16
|
instance_variable_set("@#{key}", value) if Legislator.instance_methods.include? key
|
17
17
|
end
|
18
18
|
end
|
19
|
+
|
20
|
+
# Get the committees the Legislator sits on
|
21
|
+
#
|
22
|
+
# Returns:
|
23
|
+
#
|
24
|
+
# An array of Committee objects, each possibly
|
25
|
+
# having its own subarray of subcommittees
|
26
|
+
def committees
|
27
|
+
url = Sunlight::Base.construct_url("committees.allForLegislator", {:bioguide_id => self.bioguide_id})
|
28
|
+
|
29
|
+
if (result = Sunlight::Base.get_json_data(url))
|
30
|
+
committees = []
|
31
|
+
result["response"]["committees"].each do |committee|
|
32
|
+
committees << Sunlight::Committee.new(committee["committee"])
|
33
|
+
end
|
34
|
+
else
|
35
|
+
nil # appropriate params not found
|
36
|
+
end
|
37
|
+
committees
|
38
|
+
end
|
19
39
|
|
20
40
|
|
21
41
|
#
|
data/sunlight.gemspec
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "sunlight"
|
3
|
-
s.version = "0.
|
4
|
-
s.date = "2009-
|
3
|
+
s.version = "1.0.0"
|
4
|
+
s.date = "2009-06-10"
|
5
5
|
s.summary = "Library for accessing the Sunlight Labs API."
|
6
|
-
s.
|
6
|
+
s.description = "Library for accessing the Sunlight Labs API."
|
7
|
+
s.rubyforge_project = "sunlight"
|
8
|
+
s.email = "luigi@sunlightfoundation.com"
|
7
9
|
s.homepage = "http://github.com/luigi/sunlight"
|
8
10
|
s.authors = ["Luigi Montanez"]
|
9
11
|
s.files = ['sunlight.gemspec', 'lib/sunlight.rb', 'lib/sunlight/base.rb',
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: luigi-sunlight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luigi Montanez
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-06-10 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -32,8 +32,8 @@ dependencies:
|
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.6.1
|
34
34
|
version:
|
35
|
-
description:
|
36
|
-
email: luigi
|
35
|
+
description: Library for accessing the Sunlight Labs API.
|
36
|
+
email: luigi@sunlightfoundation.com
|
37
37
|
executables: []
|
38
38
|
|
39
39
|
extensions: []
|
@@ -72,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
72
|
version:
|
73
73
|
requirements: []
|
74
74
|
|
75
|
-
rubyforge_project:
|
75
|
+
rubyforge_project: sunlight
|
76
76
|
rubygems_version: 1.2.0
|
77
77
|
signing_key:
|
78
78
|
specification_version: 2
|