federal_register 0.0.1 → 0.1.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.rdoc +1 -0
- data/VERSION +1 -1
- data/federal_register.gemspec +5 -4
- data/lib/federal_register/article.rb +5 -9
- data/lib/federal_register/result_set.rb +3 -2
- data/spec/agency_spec.rb +8 -8
- data/spec/article_spec.rb +20 -7
- data/spec/result_set_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +127 -100
data/README.rdoc
CHANGED
@@ -8,6 +8,7 @@ For more information about the FederalRegister.gov API, see http://www.federalre
|
|
8
8
|
|
9
9
|
FederalRegister::Article.find('2011-17721').title
|
10
10
|
result_set = FederalRegister::Article.search(:conditions => {:term => "Accessibility"})
|
11
|
+
# or result_set = FederalRegister.find_all('2011-17721','2011-17722')
|
11
12
|
result_set.count
|
12
13
|
result_set.results.each do |article|
|
13
14
|
puts "#{article.title} by #{article.agencies.map(&:name)}"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/federal_register.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{federal_register}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andrew Carpenter"]
|
12
|
-
s.date = %q{2011-08-
|
12
|
+
s.date = %q{2011-08-15}
|
13
13
|
s.description = %q{Ruby API Client for FederalRegister.gov that handles searching articles and getting information about agencies}
|
14
14
|
s.email = %q{andrew@criticaljuncture.org}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -41,13 +41,14 @@ Gem::Specification.new do |s|
|
|
41
41
|
s.homepage = %q{http://github.com/criticaljuncture/federal_register}
|
42
42
|
s.licenses = ["MIT"]
|
43
43
|
s.require_paths = ["lib"]
|
44
|
-
s.rubygems_version = %q{1.6
|
44
|
+
s.rubygems_version = %q{1.3.6}
|
45
45
|
s.summary = %q{Ruby API Client for FederalRegister.gov}
|
46
46
|
|
47
47
|
if s.respond_to? :specification_version then
|
48
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
48
49
|
s.specification_version = 3
|
49
50
|
|
50
|
-
if Gem::Version.new(Gem::
|
51
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
51
52
|
s.add_runtime_dependency(%q<httparty>, [">= 0.7.0"])
|
52
53
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
53
54
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
@@ -33,6 +33,10 @@ class FederalRegister::Article < FederalRegister::Base
|
|
33
33
|
attributes = get("/articles/#{document_number}.json")
|
34
34
|
new(attributes, :full => true)
|
35
35
|
end
|
36
|
+
|
37
|
+
def self.find_all(*document_numbers)
|
38
|
+
result_set = FederalRegister::ResultSet.fetch("/articles/#{document_numbers.join(',')}.json", :result_class => self)
|
39
|
+
end
|
36
40
|
|
37
41
|
def agencies
|
38
42
|
attributes["agencies"].map do |attr|
|
@@ -45,12 +49,4 @@ class FederalRegister::Article < FederalRegister::Base
|
|
45
49
|
self.class.get(attributes["#{file_type}_url"]).body
|
46
50
|
end
|
47
51
|
end
|
48
|
-
|
49
|
-
def full_text_xml
|
50
|
-
self.class.get(full_text_xml_url).body
|
51
|
-
end
|
52
|
-
|
53
|
-
def full_text_xml
|
54
|
-
self.class.get(full_text_xml_url).body
|
55
|
-
end
|
56
|
-
end
|
52
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class FederalRegister::ResultSet < FederalRegister::Client
|
2
|
-
attr_reader :count, :total_pages, :results
|
2
|
+
attr_reader :count, :total_pages, :results, :errors
|
3
3
|
|
4
4
|
def initialize(attributes, result_class)
|
5
5
|
@result_class = result_class
|
@@ -9,6 +9,7 @@ class FederalRegister::ResultSet < FederalRegister::Client
|
|
9
9
|
|
10
10
|
@prev_url = attributes['previous_page_url']
|
11
11
|
@next_url = attributes['next_page_url']
|
12
|
+
@errors = attributes['errors']
|
12
13
|
end
|
13
14
|
|
14
15
|
def next
|
@@ -24,4 +25,4 @@ class FederalRegister::ResultSet < FederalRegister::Client
|
|
24
25
|
response = get(url, options)
|
25
26
|
new(response, result_class)
|
26
27
|
end
|
27
|
-
end
|
28
|
+
end
|
data/spec/agency_spec.rb
CHANGED
@@ -5,37 +5,37 @@ describe FederalRegister::Agency do
|
|
5
5
|
before(:each) do
|
6
6
|
FakeWeb.register_uri(:get, "http://www.federalregister.gov/api/v1/agencies.json", :body => [{},{}].to_json, :content_type =>"text/json")
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "returns Agency objects" do
|
10
10
|
agencies = FederalRegister::Agency.all
|
11
11
|
agencies.each do |agency|
|
12
12
|
agency.should be_an_instance_of(FederalRegister::Agency)
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it "returns multiple agencies" do
|
17
17
|
agencies = FederalRegister::Agency.all
|
18
18
|
agencies.count.should == 2
|
19
19
|
end
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
describe "attribute loading" do
|
23
23
|
before(:each) do
|
24
24
|
@agency = FederalRegister::Agency.new({'name' => "Commerce Department", 'json_url' => "http://www.federalregister.gov/api/v1/agencies/1.json"})
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
describe "existing attribute" do
|
28
28
|
it "reads the from the json hash if already there" do
|
29
29
|
@agency.name.should == 'Commerce Department'
|
30
30
|
end
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
describe "non-existent attributes" do
|
34
34
|
it "should trigger an error" do
|
35
35
|
lambda {@agency.non_existent_attribute}.should raise_error NoMethodError
|
36
36
|
end
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
describe "missing attribute" do
|
40
40
|
FakeWeb.register_uri(:get, "http://www.federalregister.gov/api/v1/agencies/1.json", :body => {:description => "Lorem ipsum"}.to_json, :content_type =>"text/json")
|
41
41
|
it "should lazy-load from the json_url" do
|
@@ -44,7 +44,7 @@ describe FederalRegister::Agency do
|
|
44
44
|
@agency.send(:attributes)['description'].should == "Lorem ipsum"
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
describe "missing attribute when no full json" do
|
49
49
|
it "should lazy-load from the json_url" do
|
50
50
|
@agency = FederalRegister::Agency.new({'name' => "Commerce Department"})
|
@@ -52,4 +52,4 @@ describe FederalRegister::Agency do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
55
|
-
end
|
55
|
+
end
|
data/spec/article_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
|
3
3
|
describe FederalRegister::Article do
|
4
4
|
describe ".find" do
|
5
|
-
it "
|
5
|
+
it "fetches the document by its document number" do
|
6
6
|
document_number = "2010-213"
|
7
7
|
FakeWeb.register_uri(
|
8
8
|
:get,
|
@@ -10,11 +10,11 @@ describe FederalRegister::Article do
|
|
10
10
|
:content_type =>"text/json",
|
11
11
|
:body => {:title => "Important Notice"}.to_json
|
12
12
|
)
|
13
|
-
|
13
|
+
|
14
14
|
FederalRegister::Article.find(document_number).title.should == 'Important Notice'
|
15
15
|
end
|
16
|
-
|
17
|
-
it "
|
16
|
+
|
17
|
+
it "throws an error when a document doesn't exist" do
|
18
18
|
document_number = "some-random-document"
|
19
19
|
FakeWeb.register_uri(
|
20
20
|
:get,
|
@@ -25,7 +25,20 @@ describe FederalRegister::Article do
|
|
25
25
|
lambda{ FederalRegister::Article.find(document_number) }.should raise_error FederalRegister::Client::RecordNotFound
|
26
26
|
end
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
|
+
describe ".find_all" do
|
30
|
+
it "fetches multiple matching documents" do
|
31
|
+
FakeWeb.register_uri(
|
32
|
+
:get,
|
33
|
+
"http://www.federalregister.gov/api/v1/articles/abc,def.json",
|
34
|
+
:content_type =>"text/json",
|
35
|
+
:body => {:results => [{:document_number => "abc"}, {:document_number => "def"}]}.to_json
|
36
|
+
)
|
37
|
+
result_set = FederalRegister::Article.find_all('abc','def')
|
38
|
+
result_set.results.map(&:document_number).sort.should === ['abc','def']
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
29
42
|
describe ".search" do
|
30
43
|
before(:each) do
|
31
44
|
FakeWeb.register_uri(
|
@@ -35,8 +48,8 @@ describe FederalRegister::Article do
|
|
35
48
|
:body => {:count => 3}.to_json
|
36
49
|
)
|
37
50
|
end
|
38
|
-
|
39
|
-
it "
|
51
|
+
|
52
|
+
it "returns a resultset object" do
|
40
53
|
FederalRegister::Article.search(:conditions => {:term => "Fish"}).should be_an_instance_of(FederalRegister::ResultSet)
|
41
54
|
end
|
42
55
|
end
|
data/spec/result_set_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
|
3
3
|
describe FederalRegister::ResultSet do
|
4
4
|
describe "#next" do
|
5
|
-
it "
|
5
|
+
it "loads the next_page_url" do
|
6
6
|
FakeWeb.register_uri(:get, "http://www.federalregister.gov/api/v1/fishes?page=2", :body => {:count => 24}.to_json, :content_type =>"text/json")
|
7
7
|
FederalRegister::ResultSet.new({'next_page_url' => 'http://www.federalregister.gov/api/v1/fishes?page=2'}, FederalRegister::Article).next.count.should == 24
|
8
8
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,125 +1,150 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: federal_register
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
6
10
|
platform: ruby
|
7
|
-
authors:
|
11
|
+
authors:
|
8
12
|
- Andrew Carpenter
|
9
13
|
autorequire:
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
|
-
|
16
|
+
|
17
|
+
date: 2011-08-15 00:00:00 -07:00
|
13
18
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
prerelease: false
|
22
|
+
type: :runtime
|
16
23
|
name: httparty
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
24
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 7
|
31
|
+
- 0
|
22
32
|
version: 0.7.0
|
23
|
-
|
33
|
+
requirement: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
24
35
|
prerelease: false
|
25
|
-
version_requirements: *2156251100
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: shoulda
|
28
|
-
requirement: &2156250540 !ruby/object:Gem::Requirement
|
29
|
-
none: false
|
30
|
-
requirements:
|
31
|
-
- - ! '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
36
|
type: :development
|
37
|
+
name: shoulda
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 0
|
44
|
+
version: "0"
|
45
|
+
requirement: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
35
47
|
prerelease: false
|
36
|
-
|
37
|
-
- !ruby/object:Gem::Dependency
|
48
|
+
type: :development
|
38
49
|
name: bundler
|
39
|
-
|
40
|
-
|
41
|
-
requirements:
|
50
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
42
52
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 1
|
56
|
+
- 0
|
57
|
+
- 0
|
44
58
|
version: 1.0.0
|
45
|
-
|
59
|
+
requirement: *id003
|
60
|
+
- !ruby/object:Gem::Dependency
|
46
61
|
prerelease: false
|
47
|
-
|
48
|
-
- !ruby/object:Gem::Dependency
|
62
|
+
type: :development
|
49
63
|
name: jeweler
|
50
|
-
|
51
|
-
|
52
|
-
requirements:
|
64
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
53
66
|
- - ~>
|
54
|
-
- !ruby/object:Gem::Version
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
segments:
|
69
|
+
- 1
|
70
|
+
- 6
|
71
|
+
- 0
|
55
72
|
version: 1.6.0
|
56
|
-
|
73
|
+
requirement: *id004
|
74
|
+
- !ruby/object:Gem::Dependency
|
57
75
|
prerelease: false
|
58
|
-
version_requirements: *2156249380
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: rcov
|
61
|
-
requirement: &2156248820 !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
|
-
requirements:
|
64
|
-
- - ! '>='
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '0'
|
67
76
|
type: :development
|
77
|
+
name: rcov
|
78
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
segments:
|
83
|
+
- 0
|
84
|
+
version: "0"
|
85
|
+
requirement: *id005
|
86
|
+
- !ruby/object:Gem::Dependency
|
68
87
|
prerelease: false
|
69
|
-
|
70
|
-
- !ruby/object:Gem::Dependency
|
88
|
+
type: :development
|
71
89
|
name: rspec
|
72
|
-
|
73
|
-
|
74
|
-
requirements:
|
90
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
75
92
|
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
78
|
-
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
segments:
|
95
|
+
- 2
|
96
|
+
- 6
|
97
|
+
version: "2.6"
|
98
|
+
requirement: *id006
|
99
|
+
- !ruby/object:Gem::Dependency
|
79
100
|
prerelease: false
|
80
|
-
|
81
|
-
- !ruby/object:Gem::Dependency
|
101
|
+
type: :development
|
82
102
|
name: rspec
|
83
|
-
|
84
|
-
|
85
|
-
requirements:
|
103
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
86
105
|
- - ~>
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
|
89
|
-
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
segments:
|
108
|
+
- 2
|
109
|
+
- 6
|
110
|
+
version: "2.6"
|
111
|
+
requirement: *id007
|
112
|
+
- !ruby/object:Gem::Dependency
|
90
113
|
prerelease: false
|
91
|
-
|
92
|
-
- !ruby/object:Gem::Dependency
|
114
|
+
type: :development
|
93
115
|
name: activesupport
|
94
|
-
|
95
|
-
|
96
|
-
requirements:
|
116
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
97
118
|
- - ~>
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
|
100
|
-
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
segments:
|
121
|
+
- 3
|
122
|
+
version: "3"
|
123
|
+
requirement: *id008
|
124
|
+
- !ruby/object:Gem::Dependency
|
101
125
|
prerelease: false
|
102
|
-
|
103
|
-
- !ruby/object:Gem::Dependency
|
126
|
+
type: :development
|
104
127
|
name: fakeweb
|
105
|
-
|
106
|
-
|
107
|
-
requirements:
|
128
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
108
130
|
- - ~>
|
109
|
-
- !ruby/object:Gem::Version
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
segments:
|
133
|
+
- 1
|
134
|
+
- 3
|
135
|
+
- 0
|
110
136
|
version: 1.3.0
|
111
|
-
|
112
|
-
|
113
|
-
version_requirements: *2156243060
|
114
|
-
description: Ruby API Client for FederalRegister.gov that handles searching articles
|
115
|
-
and getting information about agencies
|
137
|
+
requirement: *id009
|
138
|
+
description: Ruby API Client for FederalRegister.gov that handles searching articles and getting information about agencies
|
116
139
|
email: andrew@criticaljuncture.org
|
117
140
|
executables: []
|
141
|
+
|
118
142
|
extensions: []
|
119
|
-
|
143
|
+
|
144
|
+
extra_rdoc_files:
|
120
145
|
- LICENSE.txt
|
121
146
|
- README.rdoc
|
122
|
-
files:
|
147
|
+
files:
|
123
148
|
- .document
|
124
149
|
- Gemfile
|
125
150
|
- Gemfile.lock
|
@@ -142,31 +167,33 @@ files:
|
|
142
167
|
- test/test_federal_register.rb
|
143
168
|
has_rdoc: true
|
144
169
|
homepage: http://github.com/criticaljuncture/federal_register
|
145
|
-
licenses:
|
170
|
+
licenses:
|
146
171
|
- MIT
|
147
172
|
post_install_message:
|
148
173
|
rdoc_options: []
|
149
|
-
|
174
|
+
|
175
|
+
require_paths:
|
150
176
|
- lib
|
151
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
177
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
segments:
|
182
|
+
- 0
|
183
|
+
version: "0"
|
184
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - ">="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
segments:
|
158
189
|
- 0
|
159
|
-
|
160
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
|
-
requirements:
|
163
|
-
- - ! '>='
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: '0'
|
190
|
+
version: "0"
|
166
191
|
requirements: []
|
192
|
+
|
167
193
|
rubyforge_project:
|
168
|
-
rubygems_version: 1.6
|
194
|
+
rubygems_version: 1.3.6
|
169
195
|
signing_key:
|
170
196
|
specification_version: 3
|
171
197
|
summary: Ruby API Client for FederalRegister.gov
|
172
198
|
test_files: []
|
199
|
+
|