federal_register 0.7.1 → 0.7.3
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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/federal_register.gemspec +2 -2
- data/lib/federal_register/client.rb +7 -1
- data/lib/federal_register/document.rb +13 -5
- data/spec/base_spec.rb +4 -3
- data/spec/document_spec.rb +15 -0
- data/spec/spec_helper.rb +5 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b888ccd1e8ba93b75d9217a494435d52408cea9bb7dd76eceee8692183d3a8f
|
4
|
+
data.tar.gz: caad2387bb549a07e0cdd581ec40265f50b46a05c18f2b2c74b193819b5d8b6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f507c18904701a263175b2cbf1d8d5fc631e6129b98217d139338ce9634e05d0f36ae9f689129bddcfc1999839537dd8a31330ca5e68b1938c349bc7a474fa25
|
7
|
+
data.tar.gz: 64cb7f390982d0e13d4e6ff6e3cf1239ad00fd6a9e53c63a7be90707323f13277d6446ddc2b3212dd4a3a15df6a5fe32a0a16a4274bffb44821c392ac8010c54
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.3
|
data/federal_register.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "federal_register"
|
8
|
-
s.version = "0.7.
|
8
|
+
s.version = "0.7.3"
|
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", "Bob Burbach"]
|
12
|
-
s.date = "2019-
|
12
|
+
s.date = "2019-11-19"
|
13
13
|
s.description = "Ruby API Client for FederalRegister.gov that handles searching documents and getting information about agencies"
|
14
14
|
s.email = "andrew@criticaljuncture.org"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -11,9 +11,11 @@ class FederalRegister::Client
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
class RecordNotFound < ResponseError; end
|
15
14
|
class BadRequest < ResponseError; end
|
15
|
+
class GatewayTimeout < ResponseError; end
|
16
|
+
class RecordNotFound < ResponseError; end
|
16
17
|
class ServerError < ResponseError; end
|
18
|
+
class ServiceUnavailable < ResponseError; end
|
17
19
|
|
18
20
|
base_uri 'https://www.federalregister.gov/api/v1'
|
19
21
|
|
@@ -29,6 +31,10 @@ class FederalRegister::Client
|
|
29
31
|
raise RecordNotFound.new(response)
|
30
32
|
when 500
|
31
33
|
raise ServerError.new(response)
|
34
|
+
when 503
|
35
|
+
raise ServiceUnavailable.new(response)
|
36
|
+
when 504
|
37
|
+
raise GatewayTimeout.new(response)
|
32
38
|
else
|
33
39
|
raise HTTParty::ResponseError.new(response)
|
34
40
|
end
|
@@ -60,13 +60,21 @@ class FederalRegister::Document < FederalRegister::Base
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def self.find(document_number, options={})
|
63
|
+
query = {}
|
64
|
+
|
65
|
+
if options[:publication_date].present?
|
66
|
+
publication_date = options[:publication_date]
|
67
|
+
publication_date = publication_date.is_a?(Date) ? publication_date.to_s(:iso) : publication_date
|
68
|
+
|
69
|
+
query.merge!(:publication_date => publication_date)
|
70
|
+
end
|
71
|
+
|
63
72
|
if options[:fields].present?
|
64
|
-
|
65
|
-
new(attributes)
|
66
|
-
else
|
67
|
-
attributes = get("/documents/#{document_number}.json").parsed_response
|
68
|
-
new(attributes, :full => true)
|
73
|
+
query.merge!(:fields => options[:fields])
|
69
74
|
end
|
75
|
+
|
76
|
+
attributes = get("/documents/#{document_number}.json", :query => query).parsed_response
|
77
|
+
new(attributes, :full => true)
|
70
78
|
end
|
71
79
|
|
72
80
|
# supports values like: '2016-26522', '2016-26522,2016-26594', '81 FR 76496', '81 FR 76496,81 FR 76685'
|
data/spec/base_spec.rb
CHANGED
@@ -45,7 +45,7 @@ describe FederalRegister::Base do
|
|
45
45
|
instance = @klass.new('panda' => date_string)
|
46
46
|
lambda {
|
47
47
|
instance.panda.should == "never going to get here"
|
48
|
-
}.should raise_error
|
48
|
+
}.should raise_error ArgumentError
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
@@ -84,10 +84,11 @@ describe FederalRegister::Base do
|
|
84
84
|
context "when value is not a valid date string" do
|
85
85
|
it "throws" do
|
86
86
|
date_string = "foo"
|
87
|
-
instance = @klass.new(
|
87
|
+
instance = @klass.new('updated_at' => date_string)
|
88
|
+
|
88
89
|
lambda {
|
89
90
|
instance.updated_at.should == '?'
|
90
|
-
}.should raise_error
|
91
|
+
}.should raise_error ArgumentError
|
91
92
|
end
|
92
93
|
end
|
93
94
|
end
|
data/spec/document_spec.rb
CHANGED
@@ -29,6 +29,21 @@ describe FederalRegister::Document do
|
|
29
29
|
result.end_page.should be(nil)
|
30
30
|
end
|
31
31
|
|
32
|
+
it "fetches the document with the provided publication date (when present)" do
|
33
|
+
document_number = "2010-213"
|
34
|
+
publication_date = "2010-02-02"
|
35
|
+
FakeWeb.register_uri(
|
36
|
+
:get,
|
37
|
+
"https://www.federalregister.gov/api/v1/documents/#{document_number}.json?publication_date=#{publication_date}",
|
38
|
+
:content_type => "text/json",
|
39
|
+
:body => {:title => "Important Notice", :publication_date => publication_date}.to_json
|
40
|
+
)
|
41
|
+
|
42
|
+
result = FederalRegister::Document.find(document_number, :publication_date => publication_date)
|
43
|
+
result.title.should eql("Important Notice")
|
44
|
+
result.publication_date.should eql(Date.parse(publication_date))
|
45
|
+
end
|
46
|
+
|
32
47
|
it "throws an error when a document doesn't exist" do
|
33
48
|
document_number = "some-random-document"
|
34
49
|
FakeWeb.register_uri(
|
data/spec/spec_helper.rb
CHANGED
@@ -13,6 +13,8 @@ FakeWeb.allow_net_connect = false
|
|
13
13
|
# in ./support/ and its subdirectories.
|
14
14
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
RSpec.configure do |config|
|
17
|
+
config.expect_with(:rspec) { |c| c.syntax = :should }
|
18
|
+
end
|
19
|
+
|
20
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: federal_register
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Carpenter
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|