fcc_reboot 0.1

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.
@@ -0,0 +1,37 @@
1
+ require 'faraday_middleware'
2
+ require 'faraday/response/raise_error'
3
+
4
+ module FccReboot
5
+ class Client
6
+ # @private
7
+ module Connection
8
+ private
9
+
10
+ def connection(raw=false)
11
+ options = {
12
+ #:headers => {'Accept' => "*/#{format}", 'User-Agent' => user_agent},
13
+ :headers => {'Accept' => 'application/json'},
14
+ :proxy => proxy,
15
+ :ssl => {:verify => false},
16
+ :url => 'http://data.fcc.gov/api/' + endpoint.to_s
17
+ }
18
+
19
+ Faraday::Connection.new(options) do |connection|
20
+ connection.use Faraday::Request::Multipart
21
+ unless raw
22
+ connection.use Faraday::Response::Mashify
23
+ case format.to_s.downcase
24
+ when 'json'
25
+ connection.use Faraday::Response::ParseJson
26
+ when 'xml'
27
+ connection.use Faraday::Response::ParseXml
28
+ end
29
+ end
30
+ connection.use Faraday::Response::RaiseError
31
+ connection.adapter(adapter)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+
@@ -0,0 +1,40 @@
1
+ module FccReboot
2
+ class Client
3
+ module Request
4
+ def get(path, options={}, raw=false)
5
+ request(:get, path, options, raw)
6
+ end
7
+
8
+ def post(path, options={}, raw=false)
9
+ request(:post, path, options, raw)
10
+ end
11
+
12
+ def put(path, options={}, raw=false)
13
+ request(:put, path, options, raw)
14
+ end
15
+
16
+ def delete(path, options={}, raw=false)
17
+ request(:delete, path, options, raw)
18
+ end
19
+
20
+ private
21
+
22
+ def request(method, path, options, raw)
23
+ response = connection(raw).send(method) do |request|
24
+ case method
25
+ when :get, :delete
26
+ request.url(formatted_path(path), options)
27
+ when :post, :put
28
+ request.path = formatted_path(path)
29
+ request.body = options unless options.empty?
30
+ end
31
+ end
32
+ raw ? response : response.body
33
+ end
34
+
35
+ def formatted_path(path)
36
+ [path, format].compact.join('.')
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,44 @@
1
+ require 'faraday'
2
+
3
+ module FccReboot
4
+ module Configuration
5
+ VALID_OPTIONS_KEYS = [
6
+ :adapter,
7
+ :endpoint,
8
+ :user_agent,
9
+ :proxy,
10
+ :format].freeze
11
+
12
+ VALID_FORMATS = [
13
+ :json,
14
+ :xml].freeze
15
+
16
+ DEFAULT_ADAPTER = Faraday.default_adapter
17
+ DEFAULT_ENDPOINT = nil
18
+ DEFAULT_PROXY = nil
19
+ DEFAULT_FORMAT = nil
20
+ DEFAULT_USER_AGENT = "FccReboot Ruby Gem #{FccReboot::VERSION}".freeze
21
+
22
+ attr_accessor *VALID_OPTIONS_KEYS
23
+
24
+ def self.extended(base)
25
+ base.reset
26
+ end
27
+
28
+ def configure
29
+ yield self
30
+ end
31
+
32
+ def options
33
+ VALID_OPTIONS_KEYS.inject({}){|o,k| o.merge!(k => send(k)) }
34
+ end
35
+
36
+ def reset
37
+ self.adapter = DEFAULT_ADAPTER
38
+ self.user_agent = DEFAULT_USER_AGENT
39
+ self.endpoint = DEFAULT_ENDPOINT
40
+ self.format = DEFAULT_FORMAT
41
+ self.proxy = DEFAULT_FORMAT
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module FccReboot
2
+ VERSION = "0.1"
3
+ end
data/spec/api.rb ADDED
@@ -0,0 +1,294 @@
1
+ require 'helper'
2
+
3
+ describe FccReboot, ".broadband_test" do
4
+ before do
5
+ stub_request(:get, 'http://data.fcc.gov/api/speedtest/find').
6
+ with(:query => {:format => 'json', :latitude => '38.0', :longitude => '-77.5'}).
7
+ to_return(:body => fixture('broadband_test.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
8
+ end
9
+
10
+ it "should request the correct resource" do
11
+ FccReboot.broadband_test({:latitude => '38.0', :longitude => '-77.5'})
12
+ a_request(:get, 'http://data.fcc.gov/api/speedtest/find').
13
+ with(:query => {:format => 'json', :latitude => '38.0', :longitude => '-77.5'}).
14
+ should have_been_made
15
+ end
16
+
17
+ it "should return the correct results" do
18
+ test = FccReboot.broadband_test({:latitude => '38.0', :longitude => '-77.5'})
19
+ puts test.inspect
20
+ test.should be_an Hash
21
+ test["wirelineMaxDownload"].should == 17773.0
22
+ end
23
+ end
24
+
25
+ describe FccReboot, ".census_block" do
26
+ before do
27
+ stub_request(:get, 'http://data.fcc.gov/api/block/find').
28
+ with(:query => {:format => 'json', :latitude => '38.0', :longitude => '-77.5'}).
29
+ to_return(:body => fixture('census-block-conversions-api.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
30
+ end
31
+
32
+ it "should request the correct resource" do
33
+ FccReboot.find_census_block(:latitude => '38.0', :longitude => '-77.5')
34
+ a_request(:get, 'http://data.fcc.gov/api/block/find').
35
+ with(:query => {:format => 'json', :latitude => '38.0', :longitude => '-77.5'}).
36
+ should have_been_made
37
+ end
38
+
39
+ it "should return the correct results" do
40
+ services = FccReboot.find_census_block(:latitude => '38.0', :longitude => '-77.5')
41
+ services.should be_a Hash
42
+ services["Block"]["FIPS"].should == '510339905003000'
43
+ end
44
+ end
45
+
46
+ describe FccReboot, ".frn_getlist" do
47
+ before do
48
+ stub_request(:get, 'http://data.fcc.gov/api/frn/getList').
49
+ with(:query => {:format => 'json', :stateCode => 'IL', :multi => 'Yes'}).
50
+ to_return(:body => fixture('frn-conversions-getlist.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
51
+ stub_request(:get, 'http://data.fcc.gov/api/frn/getList').
52
+ with(:query => {:format => 'json', :stateCode => 'IL', :multi => 'No'}).
53
+ to_return(:body => fixture('frn-conversions-getlist.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
54
+ end
55
+
56
+ it "should request the correct resource" do
57
+ FccReboot.frn_getlist(:stateCode => 'IL', :multi => true)
58
+ a_request(:get, 'http://data.fcc.gov/api/frn/getList').
59
+ with(:query => {:format => 'json', :stateCode => 'IL', :multi => 'Yes'}).
60
+ should have_been_made
61
+ end
62
+
63
+ it "should request the correct resource" do
64
+ FccReboot.frn_getlist(:stateCode => 'IL', :multi => false)
65
+ a_request(:get, 'http://data.fcc.gov/api/frn/getList').
66
+ with(:query => {:format => 'json', :stateCode => 'IL', :multi => 'No'}).
67
+ should have_been_made
68
+ end
69
+
70
+ it "should return the correct results" do
71
+ services = FccReboot.frn_getlist(:stateCode => 'IL', :multi => false)
72
+ services.should be_a Hash
73
+ services["Frns"]["Frn"].first["frn"].should == '0017855545'
74
+ end
75
+ end
76
+
77
+ describe FccReboot, ".frn_getinfo" do
78
+ before do
79
+ stub_request(:get, 'http://data.fcc.gov/api/frn/getInfo').
80
+ with(:query => {:format => 'json', :frn => '0017855545'}).
81
+ to_return(:body => fixture('frn-conversions-getinfo.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
82
+ end
83
+
84
+ it "should request the correct resource" do
85
+ FccReboot.frn_getinfo(:frn => '0017855545')
86
+ a_request(:get, 'http://data.fcc.gov/api/frn/getInfo').
87
+ with(:query => {:format => 'json', :frn => '0017855545'}).
88
+ should have_been_made
89
+ end
90
+
91
+ it "should return the correct results" do
92
+ services = FccReboot.frn_getinfo(:frn => '0017855545')
93
+ services.should be_a Hash
94
+ services["Info"]["frn"].should == '0017855545'
95
+ end
96
+ end
97
+
98
+ describe FccReboot, ".get_spectrum_bands" do
99
+ before do
100
+ stub_request(:get, 'http://data.fcc.gov/api/spectrum-view/services/advancedSearch/getSpectrumBands').
101
+ with(:query => {:format => 'json', :frequencyFrom=>'226', :frequencyTo => '900'}).
102
+ to_return(:body => fixture('get_spectrum_bands.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
103
+ end
104
+
105
+ it "should request the correct resource" do
106
+ FccReboot.get_spectrum_bands(:frequencyFrom=>'226', :frequencyTo => '900')
107
+ a_request(:get, 'http://data.fcc.gov/api/spectrum-view/services/advancedSearch/getSpectrumBands').
108
+ with(:query => {:format => 'json', :frequencyFrom=>'226', :frequencyTo => '900'}).
109
+ should have_been_made
110
+ end
111
+
112
+ it "should return the correct results" do
113
+ services = FccReboot.get_spectrum_bands(:frequencyFrom=>'226', :frequencyTo => '900')
114
+ services.should be_a Array
115
+ services[0]["upperBand"].should == "235"
116
+ end
117
+ end
118
+
119
+ describe FccReboot, ".get_spectrum_licenses" do
120
+ before do
121
+ stub_request(:get, 'http://data.fcc.gov/api/spectrum-view/services/advancedSearch/getLicenses').
122
+ with(:query => {:format => 'json', :name=> 'AT', :radioservice=>'Cellular'}).
123
+ to_return(:body => fixture('get_licenses.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
124
+ end
125
+
126
+ it "should request the correct resource" do
127
+ FccReboot.get_spectrum_licenses(:name=> 'AT', :radioservice=>'Cellular')
128
+ a_request(:get, 'http://data.fcc.gov/api/spectrum-view/services/advancedSearch/getLicenses').
129
+ with(:query => {:format => 'json', :name=> 'AT', :radioservice=>'Cellular'}).
130
+ should have_been_made
131
+ end
132
+
133
+ it "should return the correct results" do
134
+ services = FccReboot.get_spectrum_licenses(:name=> 'AT', :radioservice=>'Cellular')
135
+ services.should be_a Array
136
+ services[0]["id"].should == "11538"
137
+ end
138
+ end
139
+
140
+ describe FccReboot, ".get_licenses" do
141
+ before do
142
+ @query = {:searchValue => 'Verizon%20Wireless', :format =>'json'}
143
+ stub_request(:get, 'http://data.fcc.gov/api/license-view/basicSearch/getLicenses').
144
+ with(:query => @query).
145
+ to_return(:body => fixture('license-view-get-licenses.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
146
+ end
147
+
148
+ it "should request the correct resource" do
149
+ FccReboot.get_licenses(@query)
150
+ a_request(:get, 'http://data.fcc.gov/api/license-view/basicSearch/getLicenses').
151
+ with(:query => @query).
152
+ should have_been_made
153
+ end
154
+
155
+ it "should return the correct results" do
156
+ licenses = FccReboot.get_licenses(@query)
157
+ licenses.should be_a Array
158
+ licenses[0]["licenseID"].should == '2300007967'
159
+ end
160
+ end
161
+
162
+ describe FccReboot, ".get_common_names" do
163
+ before do
164
+ @query = {:commonName => 'Sprint%20Nextel', :limit => '10'}
165
+ @url = 'http://data.fcc.gov/api/license-view/licenses/getCommonNames'
166
+ stub_request(:get, @url).
167
+ with(:query => @query).
168
+ to_return(:body => fixture('license-view-get-common-names.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
169
+ end
170
+
171
+ it "should request the correct resource" do
172
+ FccReboot.get_common_names(@query)
173
+ a_request(:get, @url).
174
+ with(:query => @query).
175
+ should have_been_made
176
+ end
177
+
178
+ it "should return the correct results" do
179
+ common_names = FccReboot.get_common_names(@query)
180
+ common_names.should be_a Array
181
+ common_names[0]["statCount"].should == '11989'
182
+ end
183
+ end
184
+
185
+ describe FccReboot, ".get_statuses" do
186
+ before do
187
+ @query = {:commonName => 'Sprint%20Nextel', :limit => '10'}
188
+ @url = 'http://data.fcc.gov/api/license-view/licenses/getStatuses'
189
+ stub_request(:get, @url).
190
+ with(:query => @query).
191
+ to_return(:body => fixture('license-view-get-statuses.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
192
+ end
193
+
194
+ it "should request the correct resource" do
195
+ FccReboot.get_statuses(@query)
196
+ a_request(:get, @url).
197
+ with(:query => @query).
198
+ should have_been_made
199
+ end
200
+
201
+ it "should return the correct results" do
202
+ statuses = FccReboot.get_statuses(@query)
203
+ statuses.should be_a Array
204
+ statuses[0]["statCount"].should == '43980'
205
+ end
206
+ end
207
+
208
+ describe FccReboot, ".get_issued" do
209
+ before do
210
+ @query = {:commonName => 'Sprint%Nextel', :format => 'json'}
211
+ stub_request(:get, 'http://data.fcc.gov/api/license-view/licenses/getIssued').
212
+ with(:query => @query).
213
+ to_return(:body => fixture('get_issued.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
214
+ end
215
+
216
+ it "should request the correct resource" do
217
+ FccReboot.get_issued(@query)
218
+ a_request(:get, 'http://data.fcc.gov/api/license-view/licenses/getIssued').
219
+ with(:query => @query).
220
+ should have_been_made
221
+ end
222
+
223
+ it "should return the correct results" do
224
+ licenses = FccReboot.get_issued(@query)
225
+ licenses.should be_a Array
226
+ licenses[0]["statDesc"].should == '2001'
227
+ end
228
+ end
229
+
230
+ describe FccReboot, ".get_renewals" do
231
+ before do
232
+ @query = {:commonName => 'Sprint%Nextel', :format => 'json'}
233
+ stub_request(:get, 'http://data.fcc.gov/api/license-view/licenses/getRenewals').
234
+ with(:query => @query).
235
+ to_return(:body => fixture('get_renewals.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
236
+ end
237
+
238
+ it "should request the correct resource" do
239
+ FccReboot.get_renewals(@query)
240
+ a_request(:get, 'http://data.fcc.gov/api/license-view/licenses/getRenewals').
241
+ with(:query => @query).
242
+ should have_been_made
243
+ end
244
+
245
+ it "should return the correct results" do
246
+ licenses = FccReboot.get_renewals(@query)
247
+ licenses.should be_a Array
248
+ licenses[0]["statDesc"].should == '201104'
249
+ end
250
+ end
251
+
252
+ describe FccReboot, ".get_entities" do
253
+ before do
254
+ @query = {:commonName => 'Sprint%Nextel', :format => 'json'}
255
+ stub_request(:get, 'http://data.fcc.gov/api/license-view/licenses/getEntities').
256
+ with(:query => @query).
257
+ to_return(:body => fixture('get_entities.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
258
+ end
259
+
260
+ it "should request the correct resource" do
261
+ FccReboot.get_entities(@query)
262
+ a_request(:get, 'http://data.fcc.gov/api/license-view/licenses/getEntities').
263
+ with(:query => @query).
264
+ should have_been_made
265
+ end
266
+
267
+ it "should return the correct results" do
268
+ licenses = FccReboot.get_entities(@query)
269
+ licenses.should be_a Array
270
+ licenses[0]["statDesc"].should == 'Individual'
271
+ end
272
+ end
273
+
274
+ describe FccReboot, ".get_categories" do
275
+ before do
276
+ @query = {:commonName => 'Sprint%Nextel', :limit=>"10", :format => 'json'}
277
+ stub_request(:get, 'http://data.fcc.gov/api/license-view/licenses/getCategories').
278
+ with(:query => @query).
279
+ to_return(:body => fixture('get_entities.json'), :headers => {'Content-Type' => 'text/json; charset=utf-8'})
280
+ end
281
+
282
+ it "should request the correct resource" do
283
+ FccReboot.get_categories(@query)
284
+ a_request(:get, 'http://data.fcc.gov/api/license-view/licenses/getCategories').
285
+ with(:query => @query).
286
+ should have_been_made
287
+ end
288
+
289
+ it "should return the correct results" do
290
+ licenses = FccReboot.get_categories(@query)
291
+ licenses.should be_a Array
292
+ licenses[0]["statDesc"].should == 'Individual'
293
+ end
294
+ end
@@ -0,0 +1 @@
1
+ {"SpeedTestCounty":{"wirelineMaxDownload":17773.0,"wirelineMaxUpload":18680.0,"wirelineAvgDownload":9072.4,"wirelineAvgUpload":4562.2,"wirelessMaxDownload":14490.0,"wirelessMaxUpload":11180.0,"wirelessAvgDownload":9146.5,"wirelessAvgUpload":6498.5,"wirelineTests":66,"wirelessTests":21},"status":"OK","executionTime":"0.156"}
@@ -0,0 +1,7 @@
1
+ {
2
+ "executionTime": "0.045",
3
+ "status": "OK",
4
+ "Block": {"FIPS":"510339905003000"},
5
+ "County": {"name":"Caroline","FIPS":"51033"},
6
+ "State": {"name":"Virginia","code":"VA","FIPS":"51"}
7
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "@executionTime": "0.014",
3
+ "@status": "OK",
4
+ "Info": {
5
+ "frn": "0017855545",
6
+ "companyName": "Cygnus Telecommunications Corporation",
7
+ "holdingCompanyName": "Cygnus Telecommunications Corporation",
8
+ "regulationStatus": "N",
9
+ "States": {"state": "IL"},
10
+ "TechnologyDescs": null,
11
+ "modifyDate": "2010.07.30 15:23:02"
12
+ }
13
+ }