federal_register 0.4.0 → 0.5.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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{federal_register}
8
- s.version = "0.4.0"
8
+ s.version = "0.5.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-10-29}
12
+ s.date = %q{2012-03-30}
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 = [
@@ -43,7 +43,7 @@ Gem::Specification.new do |s|
43
43
  s.homepage = %q{http://github.com/criticaljuncture/federal_register}
44
44
  s.licenses = ["MIT"]
45
45
  s.require_paths = ["lib"]
46
- s.rubygems_version = %q{1.5.2}
46
+ s.rubygems_version = %q{1.7.2}
47
47
  s.summary = %q{Ruby API Client for FederalRegister.gov}
48
48
 
49
49
  if s.respond_to? :specification_version then
@@ -1,4 +1,5 @@
1
1
  class FederalRegister::Article < FederalRegister::Base
2
+ class InvalidDocumentNumber < ArgumentError; end
2
3
  add_attribute :abstract,
3
4
  :abstract_html_url,
4
5
  :action,
@@ -17,6 +18,7 @@ class FederalRegister::Article < FederalRegister::Base
17
18
  :pdf_url,
18
19
  :regulation_id_numbers,
19
20
  :start_page,
21
+ :subtype,
20
22
  :title,
21
23
  :type,
22
24
  :volume
@@ -31,11 +33,14 @@ class FederalRegister::Article < FederalRegister::Base
31
33
  end
32
34
 
33
35
  def self.find(document_number)
36
+ validate_document_number!(document_number)
34
37
  attributes = get("/articles/#{document_number}.json")
35
38
  new(attributes, :full => true)
36
39
  end
37
40
 
38
41
  def self.find_all(*document_numbers)
42
+ document_numbers = document_numbers.flatten
43
+ document_numbers.each {|doc_num| validate_document_number!(doc_num)}
39
44
  result_set = FederalRegister::ResultSet.fetch("/articles/#{document_numbers.join(',')}.json", :result_class => self)
40
45
  end
41
46
 
@@ -50,4 +55,12 @@ class FederalRegister::Article < FederalRegister::Base
50
55
  self.class.get(send("#{file_type}_url")).body
51
56
  end
52
57
  end
58
+
59
+ private
60
+
61
+ def self.validate_document_number!(document_number)
62
+ if document_number.blank? || document_number !~ /^[a-zA-Z0-9-]+$/
63
+ raise InvalidDocumentNumber.new("'#{document_number}' is not a valid FR Document Number")
64
+ end
65
+ end
53
66
  end
@@ -54,7 +54,5 @@ class FederalRegister::Base < FederalRegister::Client
54
54
  end
55
55
  end
56
56
 
57
- private
58
-
59
57
  attr_reader :attributes
60
58
  end
@@ -24,6 +24,10 @@ describe FederalRegister::Article do
24
24
  )
25
25
  lambda{ FederalRegister::Article.find(document_number) }.should raise_error FederalRegister::Client::RecordNotFound
26
26
  end
27
+
28
+ it "throws an error when given an invalid document number" do
29
+ lambda{ FederalRegister::Article.find('an! invalid! document! number!') }.should raise_error FederalRegister::Article::InvalidDocumentNumber
30
+ end
27
31
  end
28
32
 
29
33
  describe ".find_all" do
@@ -37,6 +41,10 @@ describe FederalRegister::Article do
37
41
  result_set = FederalRegister::Article.find_all('abc','def')
38
42
  result_set.results.map(&:document_number).sort.should === ['abc','def']
39
43
  end
44
+
45
+ it "throws an error when given an invalid document number" do
46
+ lambda{ FederalRegister::Article.find_all('123-456','an! invalid! document! number!') }.should raise_error FederalRegister::Article::InvalidDocumentNumber
47
+ end
40
48
  end
41
49
 
42
50
  describe ".search" do
metadata CHANGED
@@ -1,169 +1,124 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: federal_register
3
- version: !ruby/object:Gem::Version
4
- hash: 15
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 0
10
- version: 0.4.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Andrew Carpenter
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-10-29 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- type: :runtime
23
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2012-03-30 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: &70208318603020 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- - 7
32
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
33
21
  version: 0.7.0
34
- name: httparty
35
- version_requirements: *id001
22
+ type: :runtime
36
23
  prerelease: false
37
- - !ruby/object:Gem::Dependency
38
- type: :development
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
24
+ version_requirements: *70208318603020
25
+ - !ruby/object:Gem::Dependency
48
26
  name: shoulda
49
- version_requirements: *id002
50
- prerelease: false
51
- - !ruby/object:Gem::Dependency
27
+ requirement: &70208318601540 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
52
33
  type: :development
53
- requirement: &id003 !ruby/object:Gem::Requirement
34
+ prerelease: false
35
+ version_requirements: *70208318601540
36
+ - !ruby/object:Gem::Dependency
37
+ name: bundler
38
+ requirement: &70208318600540 !ruby/object:Gem::Requirement
54
39
  none: false
55
- requirements:
40
+ requirements:
56
41
  - - ~>
57
- - !ruby/object:Gem::Version
58
- hash: 23
59
- segments:
60
- - 1
61
- - 0
62
- - 0
42
+ - !ruby/object:Gem::Version
63
43
  version: 1.0.0
64
- name: bundler
65
- version_requirements: *id003
66
- prerelease: false
67
- - !ruby/object:Gem::Dependency
68
44
  type: :development
69
- requirement: &id004 !ruby/object:Gem::Requirement
45
+ prerelease: false
46
+ version_requirements: *70208318600540
47
+ - !ruby/object:Gem::Dependency
48
+ name: jeweler
49
+ requirement: &70208318599520 !ruby/object:Gem::Requirement
70
50
  none: false
71
- requirements:
51
+ requirements:
72
52
  - - ~>
73
- - !ruby/object:Gem::Version
74
- hash: 15
75
- segments:
76
- - 1
77
- - 6
78
- - 0
53
+ - !ruby/object:Gem::Version
79
54
  version: 1.6.0
80
- name: jeweler
81
- version_requirements: *id004
82
- prerelease: false
83
- - !ruby/object:Gem::Dependency
84
55
  type: :development
85
- requirement: &id005 !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
94
- name: rcov
95
- version_requirements: *id005
96
56
  prerelease: false
97
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *70208318599520
58
+ - !ruby/object:Gem::Dependency
59
+ name: rcov
60
+ requirement: &70208318598420 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
98
66
  type: :development
99
- requirement: &id006 !ruby/object:Gem::Requirement
67
+ prerelease: false
68
+ version_requirements: *70208318598420
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &70208318588640 !ruby/object:Gem::Requirement
100
72
  none: false
101
- requirements:
73
+ requirements:
102
74
  - - ~>
103
- - !ruby/object:Gem::Version
104
- hash: 15
105
- segments:
106
- - 2
107
- - 6
108
- version: "2.6"
109
- name: rspec
110
- version_requirements: *id006
111
- prerelease: false
112
- - !ruby/object:Gem::Dependency
75
+ - !ruby/object:Gem::Version
76
+ version: '2.6'
113
77
  type: :development
114
- requirement: &id007 !ruby/object:Gem::Requirement
78
+ prerelease: false
79
+ version_requirements: *70208318588640
80
+ - !ruby/object:Gem::Dependency
81
+ name: rspec
82
+ requirement: &70208318587660 !ruby/object:Gem::Requirement
115
83
  none: false
116
- requirements:
84
+ requirements:
117
85
  - - ~>
118
- - !ruby/object:Gem::Version
119
- hash: 15
120
- segments:
121
- - 2
122
- - 6
123
- version: "2.6"
124
- name: rspec
125
- version_requirements: *id007
126
- prerelease: false
127
- - !ruby/object:Gem::Dependency
86
+ - !ruby/object:Gem::Version
87
+ version: '2.6'
128
88
  type: :development
129
- requirement: &id008 !ruby/object:Gem::Requirement
89
+ prerelease: false
90
+ version_requirements: *70208318587660
91
+ - !ruby/object:Gem::Dependency
92
+ name: activesupport
93
+ requirement: &70208318586740 !ruby/object:Gem::Requirement
130
94
  none: false
131
- requirements:
95
+ requirements:
132
96
  - - ~>
133
- - !ruby/object:Gem::Version
134
- hash: 5
135
- segments:
136
- - 3
137
- version: "3"
138
- name: activesupport
139
- version_requirements: *id008
140
- prerelease: false
141
- - !ruby/object:Gem::Dependency
97
+ - !ruby/object:Gem::Version
98
+ version: '3'
142
99
  type: :development
143
- requirement: &id009 !ruby/object:Gem::Requirement
100
+ prerelease: false
101
+ version_requirements: *70208318586740
102
+ - !ruby/object:Gem::Dependency
103
+ name: fakeweb
104
+ requirement: &70208318586020 !ruby/object:Gem::Requirement
144
105
  none: false
145
- requirements:
106
+ requirements:
146
107
  - - ~>
147
- - !ruby/object:Gem::Version
148
- hash: 27
149
- segments:
150
- - 1
151
- - 3
152
- - 0
108
+ - !ruby/object:Gem::Version
153
109
  version: 1.3.0
154
- name: fakeweb
155
- version_requirements: *id009
110
+ type: :development
156
111
  prerelease: false
157
- description: Ruby API Client for FederalRegister.gov that handles searching articles and getting information about agencies
112
+ version_requirements: *70208318586020
113
+ description: Ruby API Client for FederalRegister.gov that handles searching articles
114
+ and getting information about agencies
158
115
  email: andrew@criticaljuncture.org
159
116
  executables: []
160
-
161
117
  extensions: []
162
-
163
- extra_rdoc_files:
118
+ extra_rdoc_files:
164
119
  - LICENSE.txt
165
120
  - README.rdoc
166
- files:
121
+ files:
167
122
  - .document
168
123
  - .watchr
169
124
  - Gemfile
@@ -186,39 +141,32 @@ files:
186
141
  - spec/public_inspection_document_spec.rb
187
142
  - spec/result_set_spec.rb
188
143
  - spec/spec_helper.rb
189
- has_rdoc: true
190
144
  homepage: http://github.com/criticaljuncture/federal_register
191
- licenses:
145
+ licenses:
192
146
  - MIT
193
147
  post_install_message:
194
148
  rdoc_options: []
195
-
196
- require_paths:
149
+ require_paths:
197
150
  - lib
198
- required_ruby_version: !ruby/object:Gem::Requirement
151
+ required_ruby_version: !ruby/object:Gem::Requirement
199
152
  none: false
200
- requirements:
201
- - - ">="
202
- - !ruby/object:Gem::Version
203
- hash: 3
204
- segments:
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ segments:
205
158
  - 0
206
- version: "0"
207
- required_rubygems_version: !ruby/object:Gem::Requirement
159
+ hash: -1815142448098795316
160
+ required_rubygems_version: !ruby/object:Gem::Requirement
208
161
  none: false
209
- requirements:
210
- - - ">="
211
- - !ruby/object:Gem::Version
212
- hash: 3
213
- segments:
214
- - 0
215
- version: "0"
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
216
166
  requirements: []
217
-
218
167
  rubyforge_project:
219
- rubygems_version: 1.5.2
168
+ rubygems_version: 1.7.2
220
169
  signing_key:
221
170
  specification_version: 3
222
171
  summary: Ruby API Client for FederalRegister.gov
223
172
  test_files: []
224
-