census_api 1.2.0 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c6080f79695746c9da16b9a6a39eaaeb8f8932d
4
- data.tar.gz: bb8d0ce3088e0c78fc36beba6b8bed9b1b95a604
3
+ metadata.gz: d339bee3037ab0d8bb8392064a3cc83ab41aa4ae
4
+ data.tar.gz: bc7c082251040e2010950612a3b4c7406d59876f
5
5
  SHA512:
6
- metadata.gz: bde1d5a14e91651c1b29156fa4ddb23a9fc05c5206a2a42d9f28b7e2e968d38e0a7ec11bb696f619d6c6f3253f5956738d033e85fdae9103ce657d49f9b32889
7
- data.tar.gz: 88a0931b9c90edde163cf67c6711e2b483ae0f5b951a9585e49912007c0a9ae002843f62e1aa9ac4c2c0b63f39a35a79a32b70f3cb9c58beba612b3197914d7f
6
+ metadata.gz: 0e963d9624c8ba6b03023736dcbfbc53902f782a8f6cc347f55fa0e959a025c7c1671a1f5f04f4e48df54f294e5ceadbfc766fc3caf5efc0e61c4b2fd9851688
7
+ data.tar.gz: 9e02121dbae295a01b861741ccdddefdeb8f26e113f47e13fc1d8756fcc15434ce71e52d9e667966f44dc01e0ca4cb0fe2262cfd3494c1c17dbaedf7d838d79c
data/.travis.yml ADDED
@@ -0,0 +1,12 @@
1
+ sudo: false
2
+ language: ruby
3
+ bundler_args: ''
4
+ rvm:
5
+ - 2.5.1
6
+ - 2.4.4
7
+ - 2.3.4
8
+ - 2.3.7
9
+ before_install:
10
+ - gem install bundler --version '~> 2.0.1'
11
+ script: "rake"
12
+
data/README.md CHANGED
@@ -5,11 +5,8 @@ This gem provides a Ruby wrapper around the Census Bureau API.
5
5
 
6
6
  ## Obtaining an API key
7
7
 
8
- To be able to use this gem, you'll need a Census Bureau API key. To request an API key, visit
9
- [http://www.census.gov/developers/tos/key_request.html][key] and follow the instructions.
10
-
11
- [key]: (http://www.census.gov/developers/tos/key_request.html)
12
-
8
+ To be able to use this gem, you'll need a Census Bureau API key. To request an API key,
9
+ [visit http://www.census.gov/developers/tos/key_request.html](http://www.census.gov/developers/tos/key_request.html) and follow the instructions.
13
10
 
14
11
  ## Installing the gem
15
12
 
@@ -19,6 +16,12 @@ To use this gem, install it with <tt>gem install census_api</tt> or add it to yo
19
16
 
20
17
  And install it with <tt>bundle install</tt>
21
18
 
19
+ ## Notice: Breaking API Changes
20
+
21
+ The US Census Bureau is currently centralizing ["all data in the Census API into a uniform and consistent format across all datasets and surveys"](https://www.census.gov/data/developers/updates/api-format-changes--sf1-2010.html) which will result in breaking changes. Some variable names have changed and [a complete variable mapping is not available.](https://www.census.gov/data/developers/updates/api-format-changes--sf1-2010.html)
22
+
23
+ This Readme and test suite examples have been updated. 1/10/19
24
+
22
25
  ## Usage / Retrieving Census Data
23
26
 
24
27
  ### (Optional) Set the API key as an environment variable
@@ -57,7 +60,7 @@ To query the 2006-2010 ACS5 dataset, set the dataset to 'ACS5':
57
60
  Then, use `Client#where` with an options hash to query for Census data. The fields and level parameters are required. The within parameter is optional and scopes the query. For example:
58
61
 
59
62
  ```ruby
60
- @client.where({ fields: 'P0010001', level: 'COUNTY:001', within: 'STATE:06' })
63
+ @client.where({ fields: 'P001001', level: 'COUNTY:001', within: 'STATE:06' })
61
64
 
62
65
  ```
63
66
 
@@ -83,39 +86,39 @@ The 'within' parameter is optional, or required, depending upon the geography ty
83
86
 
84
87
  Retrieve fields for all States:
85
88
 
86
- `@client.where({ fields: 'P0010001', level: 'STATE' })`
89
+ `@client.where({ fields: 'P001001', level: 'STATE' })`
87
90
 
88
91
  Retrieve fields for California (geoid: 06):
89
92
 
90
- `@client.where({ fields: 'P0010001', level: 'STATE:06' })`
93
+ `@client.where({ fields: 'P001001', level: 'STATE:06' })`
91
94
 
92
95
  Retrieve fields for California and Alaska:
93
96
 
94
- `@client.where({ fields: 'P0010001', level: 'STATE:06,02' })`
97
+ `@client.where({ fields: 'P001001', level: 'STATE:06,02' })`
95
98
 
96
99
  #### COUNTY - *(050) state-county*
97
100
 
98
101
  Retrieve fields for all Counties:
99
102
 
100
- `@client.where({ fields: 'P0010001', level: 'COUNTY' })`
103
+ `@client.where({ fields: 'P001001', level: 'COUNTY' })`
101
104
 
102
105
  Retrieve fields for Counties in California:
103
106
 
104
- `@client.where({ fields: 'P0010001', level: 'COUNTY', within: 'STATE:06' })`
107
+ `@client.where({ fields: 'P001001', level: 'COUNTY', within: 'STATE:06' })`
105
108
 
106
109
  Retrieve fields for a specific County in California:
107
110
 
108
- `@client.where({ fields: 'P0010001', level: 'COUNTY:001', within: 'STATE:06' })`
111
+ `@client.where({ fields: 'P001001', level: 'COUNTY:001', within: 'STATE:06' })`
109
112
 
110
113
  #### COUSUB - *(060) state-county-county subdivision*
111
114
 
112
115
  Retrieve fields for all County Subdivisions within a specific County:
113
116
 
114
- `@client.where({ fields: 'P0010001', level: 'COUSUB', within: 'STATE:02+COUNTY:290' })`
117
+ `@client.where({ fields: 'P001001', level: 'COUSUB', within: 'STATE:02+COUNTY:290' })`
115
118
 
116
119
  Retrieve fields for a specific County Subdivision within a specific County:
117
120
 
118
- `@client.where({ fields: 'P0010001', level: 'COUSUB:86690', within: 'STATE:02+COUNTY:290' })`
121
+ `@client.where({ fields: 'P001001', level: 'COUSUB:86690', within: 'STATE:02+COUNTY:290' })`
119
122
 
120
123
  Note: You must also specify the State the County belongs to.
121
124
 
@@ -123,231 +126,231 @@ Note: You must also specify the State the County belongs to.
123
126
 
124
127
  Retrieve fields for all Subminor Civil Subdivisions within a specific County Subdivision:
125
128
 
126
- `@client.where({ fields: 'P0010001', level: 'SUBMCD', within: 'STATE:72+COUNTY:127+COUSUB:79693' })`
129
+ `@client.where({ fields: 'P001001', level: 'SUBMCD', within: 'STATE:72+COUNTY:127+COUSUB:79693' })`
127
130
 
128
131
  Retrieve fields for a specific Subminor Civil Subdivisions within a specific County Subdivision:
129
132
 
130
- `@client.where({ fields: 'P0010001', level: 'SUBMCD:02350', within: 'STATE:72+COUNTY:127+COUSUB:79693' })`
133
+ `@client.where({ fields: 'P001001', level: 'SUBMCD:02350', within: 'STATE:72+COUNTY:127+COUSUB:79693' })`
131
134
 
132
135
  #### TABBLOCK - *(101) state-county-tract-block*
133
136
 
134
137
  Retrieve fields for all Blocks within a specific Tract
135
138
 
136
- `@client.where({ fields: 'P0010001', level: 'TABBLOCK', within: 'STATE:02+COUNTY:290+TRACT:00100' })`
139
+ `@client.where({ fields: 'P001001', level: 'TABBLOCK', within: 'STATE:02+COUNTY:290+TRACT:00100' })`
137
140
 
138
141
  Retrieve fields for a specific Subminor Civil Subdivisions within a specific County Subdivision:
139
142
 
140
- `@client.where({ fields: 'P0010001', level: 'SUBMCD:02350', within: 'STATE:72+COUNTY:127+COUSUB:79693' })`
143
+ `@client.where({ fields: 'P001001', level: 'SUBMCD:02350', within: 'STATE:72+COUNTY:127+COUSUB:79693' })`
141
144
 
142
145
  #### TRACT - *(140) state-county-tract*
143
146
 
144
147
  Retrieve fields for all Tracts within a specific County:
145
148
 
146
- `@client.where({ fields: 'P0010001', level: 'TRACT', within: 'STATE:02+COUNTY:170' })`
149
+ `@client.where({ fields: 'P001001', level: 'TRACT', within: 'STATE:02+COUNTY:170' })`
147
150
 
148
151
  Retrieve fields for a specific Tract within a specific County:
149
152
 
150
- `@client.where({ fields: 'P0010001', level: 'TRACT:000101', within: 'STATE:02+COUNTY:170' })`
153
+ `@client.where({ fields: 'P001001', level: 'TRACT:000101', within: 'STATE:02+COUNTY:170' })`
151
154
 
152
155
  #### BG - *(150) state-county- tract-block group*
153
156
 
154
157
  Retrieve fields for all Block Groups within a specific Tract:
155
158
 
156
- `@client.where({ fields: 'P0010001', level: 'BG', within: 'STATE:02+COUNTY:170+TRACT:000101' })`
159
+ `@client.where({ fields: 'P001001', level: 'BG', within: 'STATE:02+COUNTY:170+TRACT:000101' })`
157
160
 
158
161
  Retrieve fields for a specific Block Group within a specific Tract:
159
162
 
160
- `@client.where({ fields: 'P0010001', level: 'BG:1', within: 'STATE:02+COUNTY:170+TRACT:000101' })`
163
+ `@client.where({ fields: 'P001001', level: 'BG:1', within: 'STATE:02+COUNTY:170+TRACT:000101' })`
161
164
 
162
165
  #### PLACE -*(160) state-place*
163
166
 
164
167
  Retrieve fields for all Places:
165
168
 
166
- `@client.where({ fields: 'P0010001', level: 'PLACE' })`
169
+ `@client.where({ fields: 'P001001', level: 'PLACE' })`
167
170
 
168
171
  Retrieve fields for all Places within a specific State:
169
172
 
170
- `@client.where({ fields: 'P0010001', level: 'PLACE', within: 'STATE:06' })`
173
+ `@client.where({ fields: 'P001001', level: 'PLACE', within: 'STATE:06' })`
171
174
 
172
175
  Retrieve fields for a specific place within a specific State:
173
176
 
174
- `@client.where({ fields: 'P0010001', level: 'PLACE:00135', within: 'STATE:06' })`
177
+ `@client.where({ fields: 'P001001', level: 'PLACE:00135', within: 'STATE:06' })`
175
178
 
176
179
  #### ANRC - *(260) state-alaska native regional corporation*
177
180
 
178
181
  Retrieve fields for all Alaska Native Regional Corporations:
179
182
 
180
- `@client.where({ fields: 'P0010001', level: 'ANRC' })`
183
+ `@client.where({ fields: 'P001001', level: 'ANRC' })`
181
184
 
182
185
  Retrieve fields for all Alaska Native Regional Corporations within a specific State:
183
186
 
184
- `@client.where({ fields: 'P0010001', level: 'ANRC', within: 'STATE:02' })`
187
+ `@client.where({ fields: 'P001001', level: 'ANRC', within: 'STATE:02' })`
185
188
 
186
189
  Retrieve fields for all Alaska Native Regional Corporations within a specific State:
187
190
 
188
- `@client.where({ fields: 'P0010001', level: 'ANRC:00590', within: 'STATE:02' })`
191
+ `@client.where({ fields: 'P001001', level: 'ANRC:00590', within: 'STATE:02' })`
189
192
 
190
193
  #### AIANNH - *(280) state-american indian area/alaska native area/hawaiian home land*
191
194
 
192
195
  Retrieve fields for all American Indian Area/Alaska Native Area/Hawaiian Home Land:
193
196
 
194
- `@client.where({ fields: 'P0010001', level: 'AIANNH' })`
197
+ `@client.where({ fields: 'P001001', level: 'AIANNH' })`
195
198
 
196
199
  Retrieve fields for all American Indian Area/Alaska Native Area/Hawaiian Home Land within a specific State:
197
200
 
198
- `@client.where({ fields: 'P0010001', level: 'AIANNH', within: 'STATE:02 }')`
201
+ `@client.where({ fields: 'P001001', level: 'AIANNH', within: 'STATE:02 }')`
199
202
 
200
203
  Retrieve fields for a specific American Indian Area/Alaska Native Area/Hawaiian Home Land within a specific State:
201
204
 
202
- `@client.where({ fields: 'P0010001', level: 'AIANNH:03800', within: 'STATE:02' })`
205
+ `@client.where({ fields: 'P001001', level: 'AIANNH:03800', within: 'STATE:02' })`
203
206
 
204
207
  #### AITS - *(281) state-american indian area-tribal subdivision*
205
208
 
206
209
  Retrieve fields for all American Indian Area-Tribal Subdivisions:
207
210
 
208
- __DOES NOT WORK__: `@client.where({ fields: 'P0010001', level: 'AITS' })`
211
+ __DOES NOT WORK__: `@client.where({ fields: 'P001001', level: 'AITS' })`
209
212
 
210
213
  Retrieve fields for all American Indian Area-Tribal Subdivisions in a specific American Indian Area:
211
214
 
212
- `@client.where({ fields: 'P0010001', level: 'AITS', within: 'STATE:40+AIANNH:13735' })`
215
+ `@client.where({ fields: 'P001001', level: 'AITS', within: 'STATE:40+AIANNH:13735' })`
213
216
 
214
217
  Retrieve fields for a specific American Indian Area-Tribal Subdivision in a specific American Indian Area:
215
218
 
216
- `@client.where({ fields: 'P0010001', level: 'AITS:83127', within: 'STATE:40+AIANNH:13735' })`
219
+ `@client.where({ fields: 'P001001', level: 'AITS:83127', within: 'STATE:40+AIANNH:13735' })`
217
220
 
218
221
  #### CBSA - *(320) state-metropolitan statistical area/micropolitan statistical area*
219
222
 
220
223
  Retrieve fields from all Metropolitan Statistical Areas / Micropolitan Statistical Areas in a specific State:
221
224
 
222
- `@client.where({ fields: 'P0010001', level: 'CBSA', within: 'STATE:02' })`
225
+ `@client.where({ fields: 'P001001', level: 'CBSA', within: 'STATE:02' })`
223
226
 
224
227
  Retrieve fields from a specific Metropolitan Statistical Areas / Micropolitan Statistical Areas in a specific State:
225
228
 
226
- `@client.where({ fields: 'P0010001', level: 'CBSA:11260', within: 'STATE:02' })`
229
+ `@client.where({ fields: 'P001001', level: 'CBSA:11260', within: 'STATE:02' })`
227
230
 
228
231
  #### METDIV - *(323) state-metropolitan statistical area/micropolitan statistical area- metropolitan division*
229
232
 
230
233
  Retrieve fields from all Metropolitan Divisions in a specific Metropolitan Statistical Area / Micropolitan Statistical Area:
231
234
 
232
- `@client.where({ fields: 'P0010001', level: 'METDIV', within: 'STATE:06+CBSA:31100' })`
235
+ `@client.where({ fields: 'P001001', level: 'METDIV', within: 'STATE:06+CBSA:31100' })`
233
236
 
234
237
  Retrieve fields from all Metropolitan Division in a specific Metropolitan Statistical Area / Micropolitan Statistical Area:
235
238
 
236
- `@client.where({ fields: 'P0010001', level: 'METDIV', within: 'STATE:06+CBSA:31100' })`
239
+ `@client.where({ fields: 'P001001', level: 'METDIV', within: 'STATE:06+CBSA:31100' })`
237
240
 
238
241
  Retrieve fields from a specific Metropolitan Division in a specific Metropolitan Statistical Area / Micropolitan Statistical Area:
239
242
 
240
- `@client.where({ fields: 'P0010001', level: 'METDIV:31084', within: 'STATE:06+CBSA:31100' })`
243
+ `@client.where({ fields: 'P001001', level: 'METDIV:31084', within: 'STATE:06+CBSA:31100' })`
241
244
 
242
245
  #### CSA - *(340) - state-combined statistical area*
243
246
 
244
247
  Retrieve fields from all Combined Statistical Areas in a specific State:
245
248
 
246
- `@client.where({ fields: 'P0010001', level: 'CSA', within: 'STATE:24' })`
249
+ `@client.where({ fields: 'P001001', level: 'CSA', within: 'STATE:24' })`
247
250
 
248
251
  Retrieve fields from a specific Combined Statistical Area in a specific State:
249
252
 
250
- `@client.where({ fields: 'P0010001', level: 'CSA:428', within: 'STATE:24' })`
253
+ `@client.where({ fields: 'P001001', level: 'CSA:428', within: 'STATE:24' })`
251
254
 
252
255
  #### CD - *(500) state-congressional district*
253
256
 
254
257
  Retrieve fields from all Congressional Districts in a specific State:
255
258
 
256
- `@client.where({ fields: 'P0010001', level: 'CD', within: 'STATE:24' })`
259
+ `@client.where({ fields: 'P001001', level: 'CD', within: 'STATE:24' })`
257
260
 
258
261
  Retrieve fields from a specific Congressional District in a specific State:
259
262
 
260
- `@client.where({ fields: 'P0010001', level: 'CD:01', within: 'STATE:24' })`
263
+ `@client.where({ fields: 'P001001', level: 'CD:01', within: 'STATE:24' })`
261
264
 
262
265
  #### COUNTY (Remainder) - *(510) state-congressional district-county*
263
266
 
264
267
  Retrieve fields for all Counties within a specific Congressional District:
265
268
 
266
- `@client.where({ fields: 'P0010001', level: 'COUNTY', within: 'STATE:24+CD:01' })`
269
+ `@client.where({ fields: 'P001001', level: 'COUNTY', within: 'STATE:24+CD:01' })`
267
270
 
268
271
  Retrieve fields for a specific County within a specific Congressional District:
269
272
 
270
- `@client.where({ fields: 'P0010001', level: 'COUNTY:003', within: 'STATE:24+CD:01' })`
273
+ `@client.where({ fields: 'P001001', level: 'COUNTY:003', within: 'STATE:24+CD:01' })`
271
274
 
272
275
  #### TRACT (Remainder) - *(511) state-congressional district-county-tract*
273
276
 
274
277
  Retrieve fields for all Tracts within a specific Congressional District, County Remainder:
275
278
 
276
- `@client.where({ fields: 'P0010001', level: 'TRACT', within: 'STATE:24+CD:01+COUNTY:003' })`
279
+ `@client.where({ fields: 'P001001', level: 'TRACT', within: 'STATE:24+CD:01+COUNTY:003' })`
277
280
 
278
281
  Retrieve fields for a specific County within a specific Congressional District, County Remainder:
279
282
 
280
- `@client.where({ fields: 'P0010001', level: 'TRACT:702100', within: 'STATE:24+CD:01+COUNTY:003' })`
283
+ `@client.where({ fields: 'P001001', level: 'TRACT:702100', within: 'STATE:24+CD:01+COUNTY:003' })`
281
284
 
282
285
  ### COUSUB (Remainder) - *(521) state-congressional district-county-county subdivision*
283
286
 
284
287
  Retrieve fields for all County Subdivisions within a specific Congressional District, County Remainder:
285
288
 
286
- `@client.where({ fields: 'P0010001', level: 'COUSUB', within: 'STATE:24+CD:01+COUNTY:003' })`
289
+ `@client.where({ fields: 'P001001', level: 'COUSUB', within: 'STATE:24+CD:01+COUNTY:003' })`
287
290
 
288
291
  Retrieve fields for a specific County Subdivision within a specific Congressional District, County Remainder:
289
292
 
290
- `@client.where({ fields: 'P0010001', level: 'COUSUB:90100', within: 'STATE:24+CD:01+COUNTY:003' })`
293
+ `@client.where({ fields: 'P001001', level: 'COUSUB:90100', within: 'STATE:24+CD:01+COUNTY:003' })`
291
294
 
292
295
  #### PLACE (Remainder) - *(531) state congressional district-place*
293
296
 
294
297
  Retrieve fields for all Places within a specific Congressional District:
295
298
 
296
- `@client.where({ fields: 'P0010001', level: 'PLACE', within: 'STATE:24+CD:01' })`
299
+ `@client.where({ fields: 'P001001', level: 'PLACE', within: 'STATE:24+CD:01' })`
297
300
 
298
301
  Retrieve fields for a specific Place within a specific Congressional District, County Remainder:
299
302
 
300
- `@client.where({ fields: 'P0010001', level: 'PLACE:00125', within: 'STATE:24+CD:01' })`
303
+ `@client.where({ fields: 'P001001', level: 'PLACE:00125', within: 'STATE:24+CD:01' })`
301
304
 
302
305
  #### AIANNH (Remainder) - *550) state-congressional district-american indian area/alaska native area/hawaiian home land*
303
306
 
304
307
  Retrieve fields for all American Indian Area/Alaska Native Area/Hawaiian Home Lands within a specific Congressional District:
305
308
 
306
- `@client.where({ fields: 'P0010001', level: 'AIANNH', within: 'STATE:02+CD:00' })`
309
+ `@client.where({ fields: 'P001001', level: 'AIANNH', within: 'STATE:02+CD:00' })`
307
310
 
308
311
  Retrieve fields for a specific American Indian Area/Alaska Native Area/Hawaiian Home Land within a specific Congressional District:
309
312
 
310
- __DOES NOT WORK__: `@client.where({ fields: 'P0010001', level: 'AIANNH:0010', within: 'STATE:02+CD:00' })`
313
+ __DOES NOT WORK__: `@client.where({ fields: 'P001001', level: 'AIANNH:0010', within: 'STATE:02+CD:00' })`
311
314
 
312
315
  #### ANRC (Remainder) - *(560) state-congressional district-alaska native regional corporation*
313
316
 
314
317
  Retrieve fields for all Alaska Native Regional Corporations within a specific Congressional District:
315
318
 
316
- `@client.where({ fields: 'P0010001', level: 'AIANNH', within: 'STATE:02+CD:00' })`
319
+ `@client.where({ fields: 'P001001', level: 'AIANNH', within: 'STATE:02+CD:00' })`
317
320
 
318
321
  Retrieve fields for a specific Alaska Native Regional Corporation within a specific Congressional District:
319
322
 
320
- `@client.where({ fields: 'P0010001', level: 'AIANNH:00590', within: 'STATE:02+CD:00' })`
323
+ `@client.where({ fields: 'P001001', level: 'AIANNH:00590', within: 'STATE:02+CD:00' })`
321
324
 
322
325
  #### SLDU - *(610) state-state legislative district (upper chamber)*
323
326
 
324
327
  Retrieve fields for all State Legislative Districts (Upper Chamber) within a State:
325
328
 
326
- `@client.where({ fields: 'P0010001', level: 'SLDU', within: 'STATE:02' })`
329
+ `@client.where({ fields: 'P001001', level: 'SLDU', within: 'STATE:02' })`
327
330
 
328
331
  Retrieve fields for a specific State Legislative District (Upper Chamber) within a State:
329
332
 
330
- `@client.where({ fields: 'P0010001', level: 'SLDU:00A', within: 'STATE:02' })`
333
+ `@client.where({ fields: 'P001001', level: 'SLDU:00A', within: 'STATE:02' })`
331
334
 
332
335
  #### SLDU - *(620) state-state legislative district (lower chamber)*
333
336
 
334
337
  Retrieve fields for all State Legislative Districts (Lower Chamber) within a State:
335
338
 
336
- `@client.where({ fields: 'P0010001', level: 'SLDL', within: 'STATE:02' })`
339
+ `@client.where({ fields: 'P001001', level: 'SLDL', within: 'STATE:02' })`
337
340
 
338
341
  Retrieve fields for a specific State Legislative District (Lower Chamber) within a State:
339
342
 
340
- `@client.where({ fields: 'P0010001', level: 'SLDL:001', within: 'STATE:02' })`
343
+ `@client.where({ fields: 'P001001', level: 'SLDL:001', within: 'STATE:02' })`
341
344
  
342
345
  #### ZCTA5 - *(871) state-zip code tabulation area*
343
346
 
344
347
  Retrieve fields for all Zip Code Tabulation Areas within a specific State:
345
348
 
346
- `@client.where({ fields: 'P0010001', level: 'ZCTA5', within: 'STATE:02' })`
349
+ `@client.where({ fields: 'P001001', level: 'ZCTA5', within: 'STATE:02' })`
347
350
 
348
351
  Retrieve fields for a specific Zip Code Tabulation Area within a specific State:
349
352
 
350
- `@client.where({ fields: 'P0010001', level: 'ZCTA5:99501', within: 'STATE:02' })`
353
+ `@client.where({ fields: 'P001001', level: 'ZCTA5:99501', within: 'STATE:02' })`
351
354
 
352
355
  ## ACS5 2010 Examples and Supported Geography
353
356
 
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
- require 'bundler/gem_tasks'
1
+ require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task test: :spec
7
+
8
+ task default: :test
9
+
data/census_api.gemspec CHANGED
@@ -22,8 +22,11 @@ Gem::Specification.new do |gem|
22
22
  gem.require_paths = ['lib']
23
23
 
24
24
  gem.add_runtime_dependency 'http'
25
+ gem.add_development_dependency 'bundler', '~> 2.0.1'
26
+ gem.add_development_dependency 'rake'
25
27
  gem.add_development_dependency 'rspec'
26
- gem.add_development_dependency 'webmock', '< 2.0'
27
- gem.add_development_dependency 'vcr'
28
+ gem.add_development_dependency 'webmock', '>= 3.4.2'
29
+ gem.add_development_dependency 'vcr', '>= 4.0'
28
30
  gem.add_development_dependency 'rubocop'
31
+ gem.add_development_dependency 'rest-client'
29
32
  end
@@ -29,7 +29,7 @@ module CensusApi
29
29
  [:fields, :level].each do |f|
30
30
  fail ArgumentError, "#{f} is a requied parameter" if options[f].nil?
31
31
  end
32
- options[:within] = [options[:within]]
32
+ options[:within] = [options[:within]] unless options[:within].nil?
33
33
  Request.find(dataset, options)
34
34
  end
35
35
 
@@ -11,6 +11,19 @@ module CensusApi
11
11
  attr_accessor :response
12
12
 
13
13
  def initialize(vintage, source, options)
14
+ api_changes = [
15
+ {source: 'acs1', from: 2012, to: 2015, new_endpoint: 'acs/acs1'},
16
+ #{source: 'acs3', from: 2012, to: 2013, new_endpoint: 'acs/acs3'},
17
+ {source: 'acs5', from: 2010, to: 2015, new_endpoint: 'acs/acs5'},
18
+ {source: 'acsse', from: 2014, to: 2015, new_endpoint: 'acs/acsse'},
19
+ {source: 'sf1', from: 2010, to: 2010, new_endpoint: 'dec/sf1'}
20
+ ]
21
+ route = api_changes.detect do |a|
22
+ a[:source] == source && a[:from] <= vintage.to_i && a[:to] >= vintage.to_i
23
+ end
24
+ if route
25
+ source = route[:new_endpoint]
26
+ end
14
27
  uri = "/data/#{vintage}/#{source}?#{to_params(options)}"
15
28
  @response = $census_connection.get(uri.to_s)
16
29
  @response.flush
@@ -20,12 +33,13 @@ module CensusApi
20
33
  fields = options[:fields]
21
34
  fields = fields.split(',').push('NAME').join(',') if fields.is_a? String
22
35
  fields = fields.push('NAME').join(',') if fields.is_a? Array
23
- level = format(options[:level], false, source)
24
- params = { key: options[:key], get: fields, for: level }
25
- unless (options[:within].nil? || (options[:within].is_a?(Array) && options[:within].compact.empty?))
26
- params.merge!(in: format(options[:within][0], true, source))
36
+ level = format(options[:level])
37
+ params = { get: fields, for: level }
38
+ unless options[:within].nil? || (options[:within].is_a?(Array) && options[:within].empty?)
39
+ params.merge!(in: format(options[:within].join("+")))
27
40
  end
28
41
  options.merge!(vintage: 2010) unless options[:vintage]
42
+ params.merge!(key: options[:key]) if !!(options[:key])
29
43
  request = new(options[:vintage], source, params)
30
44
  request.parse_response
31
45
  end
@@ -61,22 +75,18 @@ module CensusApi
61
75
  }
62
76
  end
63
77
 
64
- def self.format(str, truncate, source=nil)
65
- result = str.split('+').map do |s|
78
+ def self.format(str)
79
+ str.split("+").map do |s|
66
80
  s = s.match(':') ? s.split(':') : [s, '*']
67
- shp = shapes[s[0].upcase]
68
- name = shp[[source,'name'].compact.join("_")]||shp['name']
69
- s.shift && s.unshift(name.downcase.gsub(' ', '+')) unless shp.nil?
70
- s.unshift(s.shift.split('/')[0]) if !s[0].scan('home+land').empty? && truncate
71
- s.join(':')
72
- end
73
- result.join('+')
81
+ name = (shapes[s[0]]['attribute'] rescue s[0]).gsub(/\s/, '%20')
82
+ s.shift && s.unshift(name) && s.join(':')
83
+ end.join("%20")
74
84
  end
75
85
 
76
86
  def self.shapes
77
87
  return @@census_shapes if defined?(@@census_shapes)
78
88
  @@census_shapes = {}
79
- path = "#{File.dirname(__FILE__)}/../yml/census_shapes.yml"
89
+ path = "#{File.dirname(__FILE__)}/../data/census_shapes.yml"
80
90
  YAML.load_file(path).each { |k, v| @@census_shapes[k] = v }
81
91
  @@census_shapes
82
92
  end