zipcodeservices 0.0.1 → 0.0.2
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 +8 -8
- data/.env.example +1 -0
- data/.gitignore +3 -0
- data/Gemfile.lock +8 -2
- data/README.md +38 -0
- data/foo.xml +1 -0
- data/lib/zipcodeservices/version.rb +1 -1
- data/lib/zipcodeservices.rb +126 -45
- data/spec/client_spec.rb +78 -13
- data/spec/spec_helper.rb +3 -0
- data/spec/vcr_cassettes/json/client_should_get_cities_by_state_id__province_id_.yml +90 -0
- data/spec/vcr_cassettes/json/client_should_get_cities_by_state_id__provinces_id__and_country_id.yml +1808 -0
- data/spec/vcr_cassettes/json/client_should_get_countries.yml +800 -0
- data/spec/vcr_cassettes/json/client_should_get_states-provinces_by_country_id.yml +1870 -0
- data/spec/vcr_cassettes/json/client_should_get_the_distance_between_zip_codes.yml +41 -0
- data/spec/vcr_cassettes/json/client_should_get_zip_codes_in_radius_of_latitude_and_longitude.yml +144 -0
- data/spec/vcr_cassettes/json/client_should_get_zip_codes_in_radius_of_zip_code.yml +439 -0
- data/spec/vcr_cassettes/json/client_should_retrieve_zip_code_info.yml +44 -0
- data/spec/vcr_cassettes/json/client_should_return_information_on_ip_addresses.yml +45 -0
- data/spec/vcr_cassettes/json/client_should_return_zips_in_radius_of_ip_address.yml +45 -0
- data/spec/vcr_cassettes/xml/client_should_get_zip_codes_in_radius_of_zip_code.yml +748 -0
- data/spec/vcr_cassettes/xml/client_should_retrieve_zip_code_info.yml +51 -0
- data/xmltest +1 -0
- data/zipcodeservices.gemspec +6 -4
- metadata +68 -11
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
MmE3MWYxNzU4NWIyNTdkMzJiNzYzYzNhZjNmNDA0ZjMxYzc0ZTQ5ZQ==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
ZDQ4MzM5OTEzYTNkOGU1ZjdlMjU3MmY0ODg4ZjYzOGExZDlhMzE3Zg==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
ZDJiYWU0N2EwYTFiZGZkMzhiYTQ1NDk0YjVhY2YzOTQ4ZTJlYWQ5ZTBlMmYx
|
|
10
|
+
NTc1M2NhNWI5NDBhYjlmZThjNjM1MDM5YTRhOTU4Mzg5MDkyYWQ0NDdhOTk5
|
|
11
|
+
ZDI3OTY2YjM0MjA1MGY0YjBhNWFkZmM4NzAwMDIxMjBkNzQzMGU=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
YzA5NzY0YjkwNmUzZTU0YWExOGU5NWUzZTAyZWZhOGIzMzA0NmU5Y2JjMDMy
|
|
14
|
+
YTcwMjkyYWY0ZGI1YWJhZmY2ZTE2MjI0NGVhNzM3NGVhN2M1M2ZhZjFkMmRm
|
|
15
|
+
MzczODQ5NmUwNDk1NDE2M2Y3MmQ3NGU2MjRjZDRmZjQzM2ViYmI=
|
data/.env.example
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export ZIP_CODE_SERVICES_API_KEY="YOUR API KEY HERE"
|
data/.gitignore
CHANGED
|
@@ -11,6 +11,7 @@ capybara-*.html
|
|
|
11
11
|
.rspec
|
|
12
12
|
/.bundle
|
|
13
13
|
/vendor/bundle
|
|
14
|
+
/vendor/*
|
|
14
15
|
/log/*
|
|
15
16
|
/tmp/*
|
|
16
17
|
/db/*.sqlite3
|
|
@@ -27,6 +28,8 @@ coverage
|
|
|
27
28
|
config/database.yml
|
|
28
29
|
/public/uploads
|
|
29
30
|
.*.swp
|
|
31
|
+
.*.swo
|
|
30
32
|
.env
|
|
31
33
|
*.gem
|
|
32
34
|
/spec/vcr_cassettes/*
|
|
35
|
+
/tags
|
data/Gemfile.lock
CHANGED
|
@@ -2,6 +2,8 @@ PATH
|
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
4
|
zipcodeservices (0.0.1)
|
|
5
|
+
multi_xml
|
|
6
|
+
nokogiri
|
|
5
7
|
typhoeus (= 0.3.3)
|
|
6
8
|
|
|
7
9
|
GEM
|
|
@@ -40,7 +42,11 @@ GEM
|
|
|
40
42
|
lumberjack (1.0.5)
|
|
41
43
|
method_source (0.8.2)
|
|
42
44
|
mime-types (2.2)
|
|
45
|
+
mini_portile (0.5.3)
|
|
46
|
+
multi_xml (0.5.5)
|
|
43
47
|
nio4r (1.0.0)
|
|
48
|
+
nokogiri (1.6.1)
|
|
49
|
+
mini_portile (~> 0.5.0)
|
|
44
50
|
pry (0.9.12.6)
|
|
45
51
|
coderay (~> 1.0)
|
|
46
52
|
method_source (~> 0.8)
|
|
@@ -61,7 +67,7 @@ GEM
|
|
|
61
67
|
timers (1.1.0)
|
|
62
68
|
typhoeus (0.3.3)
|
|
63
69
|
mime-types
|
|
64
|
-
vcr (2.2
|
|
70
|
+
vcr (2.9.2)
|
|
65
71
|
|
|
66
72
|
PLATFORMS
|
|
67
73
|
ruby
|
|
@@ -70,5 +76,5 @@ DEPENDENCIES
|
|
|
70
76
|
debugger
|
|
71
77
|
guard-rspec
|
|
72
78
|
rspec (~> 2.13)
|
|
73
|
-
vcr
|
|
79
|
+
vcr (~> 2.4)
|
|
74
80
|
zipcodeservices!
|
data/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
Zipcode Services.
|
|
2
|
+
=================
|
|
3
|
+
|
|
4
|
+
This is a ruby library that interfaces Zip Code Services -- a IP Address and Zip Code database with Zip Code Distance Search and IP Address Distance Search APIs available to members.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
gem install zipcodeservices
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Use
|
|
15
|
+
```
|
|
16
|
+
ZipCodeServices.apikey = ENV['ZIP_CODE_SERVICES_API_KEY']
|
|
17
|
+
ZipCodeServices.data_format = :json
|
|
18
|
+
zips = ZipCodeServices.zipcode("78702")
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Contribution
|
|
22
|
+
|
|
23
|
+
Installation for contributors
|
|
24
|
+
|
|
25
|
+
1. Get an api key from zipcodeservices.com
|
|
26
|
+
2. Fork the repo
|
|
27
|
+
3. Add the API key as the environment variable ZIP_CODE_SERVICES_API_KEY
|
|
28
|
+
- Linux:
|
|
29
|
+
* First -- add ```ZIP_CODE_SERVICES_API_KEY=YOUR_KEY``` to .env
|
|
30
|
+
* Next -- Type ```. .env``` before running any tests
|
|
31
|
+
- Windows: Add your environment variables using the following instructions: http://www.computerhope.com/issues/ch000549.htm
|
|
32
|
+
4. Ensure all tests pass by running ```rspec spec```
|
|
33
|
+
5. Submit a pull request with your changes
|
|
34
|
+
|
|
35
|
+
Please write tests for any changes you make or we will have our way with you
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
data/foo.xml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<GetAllProvincesByCountryIdResponse xmlns="http://tempuri.org/"><GetAllProvincesByCountryIdResult xmlns:a="http://schemas.datacontract.org/2004/07/Zips.DTO" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:StateDTO><a:Abbreviation>AL</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>1</a:Id><a:State>Alabama</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>AK</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>2</a:Id><a:State>Alaska</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>AS</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>3</a:Id><a:State>American Samoa</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>AZ</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>4</a:Id><a:State>Arizona</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>AR</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>5</a:Id><a:State>Arkansas</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>CA</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>6</a:Id><a:State>California</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>CO</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>7</a:Id><a:State>Colorado</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>CT</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>8</a:Id><a:State>Connecticut</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>DC</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>9</a:Id><a:State>District Of Columbia</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>DE</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>10</a:Id><a:State>Delaware</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>FM</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>11</a:Id><a:State>Federated States of Micronesia</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>FL</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>12</a:Id><a:State>Florida</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>GA</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>13</a:Id><a:State>Georgia</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>GU</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>14</a:Id><a:State>Guam</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>HI</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>15</a:Id><a:State>Hawaii</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>ID</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>16</a:Id><a:State>Idaho</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>IL</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>17</a:Id><a:State>Illinois</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>IN</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>18</a:Id><a:State>Indiana</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>IA</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>19</a:Id><a:State>Iowa</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>KS</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>20</a:Id><a:State>Kansas</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>KY</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>21</a:Id><a:State>Kentucky</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>LA</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>22</a:Id><a:State>Louisiana</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>ME</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>23</a:Id><a:State>Maine</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>MH</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>24</a:Id><a:State>Marshall Islands</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>MD</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>25</a:Id><a:State>Maryland</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>MA</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>26</a:Id><a:State>Massachusetts</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>MI</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>27</a:Id><a:State>Michigan</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>MN</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>28</a:Id><a:State>Minnesota</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>MS</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>29</a:Id><a:State>Mississippi</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>MO</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>30</a:Id><a:State>Missouri</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>MT</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>31</a:Id><a:State>Montana</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>NE</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>32</a:Id><a:State>Nebraska</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>NV</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>33</a:Id><a:State>Nevada</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>NH</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>34</a:Id><a:State>New Hampshire</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>NJ</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>35</a:Id><a:State>New Jersey</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>NM</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>36</a:Id><a:State>New Mexico</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>NY</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>37</a:Id><a:State>New York</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>NC</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>38</a:Id><a:State>North Carolina</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>ND</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>39</a:Id><a:State>North Dakota</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>OH</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>40</a:Id><a:State>Ohio</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>OK</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>41</a:Id><a:State>Oklahoma</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>OR</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>42</a:Id><a:State>Oregon</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>PW</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>43</a:Id><a:State>Palau</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>PA</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>44</a:Id><a:State>Pennsylvania</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>PR</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>45</a:Id><a:State>Puerto Rico</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>RI</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>46</a:Id><a:State>Rhode Island</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>SC</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>47</a:Id><a:State>South Carolina</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>SD</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>48</a:Id><a:State>South Dakota</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>TN</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>49</a:Id><a:State>Tennessee</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>TX</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>50</a:Id><a:State>Texas</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>UT</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>51</a:Id><a:State>Utah</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>VT</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>52</a:Id><a:State>Vermont</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>VI</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>53</a:Id><a:State>Virgin Islands</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>VA</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>54</a:Id><a:State>Virginia</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>WA</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>55</a:Id><a:State>Washington</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>WV</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>56</a:Id><a:State>West Virginia</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>WI</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>57</a:Id><a:State>Wisconsin</a:State></a:StateDTO><a:StateDTO><a:Abbreviation>WY</a:Abbreviation><a:Continent>North America</a:Continent><a:ContinentCode>NA</a:ContinentCode><a:Country>United States</a:Country><a:CountryAbbreviation>US</a:CountryAbbreviation><a:CountryId>1</a:CountryId><a:Id>58</a:Id><a:State>Wyoming</a:State></a:StateDTO></GetAllProvincesByCountryIdResult></GetAllProvincesByCountryIdResponse>
|
data/lib/zipcodeservices.rb
CHANGED
|
@@ -2,21 +2,34 @@
|
|
|
2
2
|
%w[
|
|
3
3
|
rubygems
|
|
4
4
|
typhoeus
|
|
5
|
+
multi_xml
|
|
5
6
|
].each { |r| require r }
|
|
6
7
|
|
|
7
8
|
module ZipCodeServices
|
|
8
|
-
@base_uri = 'https://www.zipcodeservices.com/services/rest
|
|
9
|
+
@base_uri = 'https://www.zipcodeservices.com/services/rest' #/json' #/zipcodes.svc'
|
|
10
|
+
#MultiXml.parser = :ox
|
|
11
|
+
MultiXml.parser = :nokogiri
|
|
9
12
|
|
|
10
13
|
class << self;
|
|
11
|
-
|
|
14
|
+
attr_accessor :data_format
|
|
12
15
|
attr_accessor :apikey
|
|
13
16
|
|
|
17
|
+
def base_uri
|
|
18
|
+
fmt = data_format == :xml ? 'xml' : 'json'
|
|
19
|
+
"#{@base_uri}/#{fmt}"
|
|
20
|
+
end
|
|
21
|
+
|
|
14
22
|
def zipcode(zip)
|
|
15
23
|
#/{apikey}/{zipcode}
|
|
16
|
-
response = Typhoeus::Request.get( "#{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
response = Typhoeus::Request.get( "#{base_uri}/zipcodes.svc/#{apikey}/#{zip}")
|
|
25
|
+
if response.code == 200
|
|
26
|
+
if data_format == :xml
|
|
27
|
+
j = MultiXml.parse(response.body)
|
|
28
|
+
raise "BAD API KEY" if j.first[1].first[1]["City"] == nil
|
|
29
|
+
else
|
|
30
|
+
j = JSON::parse(response.body)
|
|
31
|
+
raise "BAD API KEY" if j.first[1]["City"] == nil
|
|
32
|
+
end
|
|
20
33
|
j
|
|
21
34
|
elsif response.code == 404
|
|
22
35
|
nil
|
|
@@ -26,11 +39,15 @@ module ZipCodeServices
|
|
|
26
39
|
end
|
|
27
40
|
|
|
28
41
|
def radius(zip, rad)
|
|
29
|
-
|
|
30
|
-
response = Typhoeus::Request.get( "#{@base_uri}/zipcodes.svc/#{apikey}/#{zip}/#{rad}")
|
|
42
|
+
response = Typhoeus::Request.get( "#{base_uri}/zipcodes.svc/#{apikey}/#{zip}/#{rad}")
|
|
31
43
|
if response.code == 200
|
|
32
|
-
|
|
33
|
-
|
|
44
|
+
if data_format == :xml
|
|
45
|
+
j = MultiXml.parse(response.body)
|
|
46
|
+
raise "BAD API KEY" if j.first[1].first[1] == nil
|
|
47
|
+
else
|
|
48
|
+
j = JSON::parse(response.body)
|
|
49
|
+
raise "BAD API KEY" if j["RetrieveZipCodesInRadiusResult"] == nil
|
|
50
|
+
end
|
|
34
51
|
j
|
|
35
52
|
elsif response.code == 404
|
|
36
53
|
nil
|
|
@@ -39,13 +56,18 @@ module ZipCodeServices
|
|
|
39
56
|
end
|
|
40
57
|
end
|
|
41
58
|
|
|
42
|
-
def radius_by_latlong(lat,
|
|
43
|
-
|
|
44
|
-
response = Typhoeus::Request.get( "#{@base_uri}/zipcodes.svc/GetZipCodesInRadiusLatLong?apikey=#{apikey}&latitude=#{lat}&longitude=#{lon}&radius=#{rad}")
|
|
59
|
+
def radius_by_latlong(lat, lon, rad)
|
|
60
|
+
response = Typhoeus::Request.get( "#{base_uri}/zipcodes.svc/GetZipCodesInRadiusLatLong?apikey=#{apikey}&latitude=#{lat}&longitude=#{lon}&radius=#{rad}")
|
|
45
61
|
if response.code == 200
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
62
|
+
if data_format == :xml
|
|
63
|
+
j = MultiXml.parse(response.body)
|
|
64
|
+
raise "BAD API KEY" if j.first[1].first[1].first[1][0]["PostalCode"] == nil
|
|
65
|
+
else
|
|
66
|
+
j = JSON::parse(response.body)
|
|
67
|
+
raise "BAD API KEY" if j.first[1].first["PostalCode"] == nil
|
|
68
|
+
# ["GetZipCodesInRadiusOfLatLongResult"] ==nil
|
|
69
|
+
end
|
|
70
|
+
j
|
|
49
71
|
elsif response.code == 404
|
|
50
72
|
nil
|
|
51
73
|
else
|
|
@@ -54,26 +76,34 @@ module ZipCodeServices
|
|
|
54
76
|
end
|
|
55
77
|
|
|
56
78
|
def distance_between_zipcodes(zip1, zip2)
|
|
57
|
-
|
|
58
|
-
response = Typhoeus::Request.get( "#{@base_uri}/zipcodes.svc/GetDistanceBetweenZipCodes?apikey=#{apikey}&zipcode1=#{zip1}&zipcode2=#{zip2}")
|
|
79
|
+
response = Typhoeus::Request.get( "#{base_uri}/zipcodes.svc/GetDistanceBetweenZipCodes?apikey=#{apikey}&zipcode1=#{zip1}&zipcode2=#{zip2}")
|
|
59
80
|
if response.code == 200
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
81
|
+
if data_format == :xml
|
|
82
|
+
j = MultiXml.parse(response.body)
|
|
83
|
+
raise "BAD API KEY" if j.first[1].first[1]["DistanceAwayInMiles"] == nil
|
|
84
|
+
else
|
|
85
|
+
j = JSON::parse(response.body)
|
|
86
|
+
raise "BAD API KEY" if j.first[1]["ZipCode1"] == nil
|
|
87
|
+
end
|
|
88
|
+
j
|
|
63
89
|
elsif response.code == 404
|
|
64
90
|
nil
|
|
65
91
|
else
|
|
66
92
|
raise response.body
|
|
67
|
-
|
|
68
|
-
|
|
93
|
+
end
|
|
94
|
+
end
|
|
69
95
|
|
|
70
96
|
def countries
|
|
71
|
-
|
|
72
|
-
response = Typhoeus::Request.get( "#{@base_uri}/countries.svc/#{apikey}")
|
|
97
|
+
response = Typhoeus::Request.get( "#{base_uri}/countries.svc/#{apikey}")
|
|
73
98
|
if response.code == 200
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
99
|
+
if data_format == :xml
|
|
100
|
+
j = MultiXml.parse(response.body)
|
|
101
|
+
raise "BAD API KEY" if j.first[1].first[1].first[1][0]["Abbreviation"] == nil
|
|
102
|
+
else
|
|
103
|
+
j = JSON::parse(response.body)
|
|
104
|
+
raise "BAD API KEY" if j["GetCountriesResult"] == nil
|
|
105
|
+
end
|
|
106
|
+
j
|
|
77
107
|
elsif response.code == 404
|
|
78
108
|
nil
|
|
79
109
|
else
|
|
@@ -82,12 +112,17 @@ module ZipCodeServices
|
|
|
82
112
|
end
|
|
83
113
|
|
|
84
114
|
def states(country_id)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
115
|
+
response = Typhoeus::Request.get( "#{base_uri}/provinces.svc/#{apikey}/#{country_id}")
|
|
116
|
+
if response.code == 200
|
|
117
|
+
if data_format == :xml
|
|
118
|
+
j = MultiXml.parse(response.body)
|
|
119
|
+
raise "BAD API KEY" if j.first[1].first[1].first[1][0]["Abbreviation"] == nil
|
|
120
|
+
j
|
|
121
|
+
else
|
|
122
|
+
j = JSON::parse(response.body)
|
|
123
|
+
raise "BAD API KEY" if j["GetAllProvincesByCountryIdResult"] == nil
|
|
124
|
+
j
|
|
125
|
+
end
|
|
91
126
|
elsif response.code == 404
|
|
92
127
|
nil
|
|
93
128
|
else
|
|
@@ -98,11 +133,17 @@ module ZipCodeServices
|
|
|
98
133
|
|
|
99
134
|
def cities(province_id)
|
|
100
135
|
#/{apikey}/{zipcode}
|
|
101
|
-
response = Typhoeus::Request.get( "#{
|
|
136
|
+
response = Typhoeus::Request.get( "#{base_uri}/cities.svc/#{apikey}/#{province_id}")
|
|
102
137
|
if response.code == 200
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
138
|
+
if data_format == :xml
|
|
139
|
+
j = MultiXml.parse(response.body)
|
|
140
|
+
raise "BAD API KEY" if j.first[1].first[1].first[1][0]["City"] == nil
|
|
141
|
+
j
|
|
142
|
+
else
|
|
143
|
+
j = JSON::parse(response.body)
|
|
144
|
+
raise "BAD API KEY" if j["GetCitiesByProvinceResult"] == nil
|
|
145
|
+
j
|
|
146
|
+
end
|
|
106
147
|
elsif response.code == 404
|
|
107
148
|
nil
|
|
108
149
|
else
|
|
@@ -111,12 +152,17 @@ module ZipCodeServices
|
|
|
111
152
|
end
|
|
112
153
|
|
|
113
154
|
def cities_by_state_and_country(province_id, country_id)
|
|
114
|
-
|
|
115
|
-
response = Typhoeus::Request.get( "#{@base_uri}/cities.svc/#{apikey}/#{province_id}/#{country_id}")
|
|
155
|
+
response = Typhoeus::Request.get( "#{base_uri}/cities.svc/#{apikey}/#{province_id}/#{country_id}")
|
|
116
156
|
if response.code == 200
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
157
|
+
if data_format == :xml
|
|
158
|
+
j = MultiXml.parse(response.body)
|
|
159
|
+
raise "BAD API KEY" if j.first[1].first[1].first[1][20]["City"] == nil
|
|
160
|
+
j
|
|
161
|
+
else
|
|
162
|
+
j = JSON::parse(response.body)
|
|
163
|
+
raise "BAD API KEY" if j["GetCitiesByProvinceAndCountryResult"] == nil # NOTE: also happens when a province id is not valid for a country
|
|
164
|
+
j
|
|
165
|
+
end
|
|
120
166
|
elsif response.code == 404
|
|
121
167
|
nil
|
|
122
168
|
else
|
|
@@ -124,7 +170,42 @@ module ZipCodeServices
|
|
|
124
170
|
end
|
|
125
171
|
end
|
|
126
172
|
|
|
173
|
+
def ipaddress(ip)
|
|
174
|
+
response = Typhoeus::Request.get( "#{base_uri}/ipaddress.svc/GetIP?apikey=#{apikey}&ip=#{ip}")
|
|
175
|
+
if response.code == 200
|
|
176
|
+
if data_format == :xml
|
|
177
|
+
j = MultiXml.parse(response.body)
|
|
178
|
+
raise "BAD API KEY" if j.first[1].first[1]["ZipCode"] == nil
|
|
179
|
+
j
|
|
180
|
+
else
|
|
181
|
+
j = JSON::parse(response.body)
|
|
182
|
+
raise "BAD API KEY" if j["RetrieveIPAddressDataResult"] == nil # NOTE: also happens when a province id is not valid for a country
|
|
183
|
+
j
|
|
184
|
+
end
|
|
185
|
+
elsif response.code == 404
|
|
186
|
+
nil
|
|
187
|
+
else
|
|
188
|
+
raise response.body
|
|
189
|
+
end
|
|
190
|
+
end
|
|
127
191
|
|
|
128
|
-
|
|
192
|
+
def ipaddress_radius(ip, rad)
|
|
193
|
+
response = Typhoeus::Request.get( "#{base_uri}/ipaddress.svc/GetZipsInRadiusOfIP?apikey=#{apikey}&ip=#{ip}&radius=#{rad}")
|
|
194
|
+
if response.code == 200
|
|
195
|
+
if data_format == :xml
|
|
196
|
+
j = MultiXml.parse(response.body)
|
|
197
|
+
raise "BAD API KEY" if j.first[1].first[1].first[1]["PostalCode"] == nil
|
|
198
|
+
j
|
|
199
|
+
else
|
|
200
|
+
j = JSON::parse(response.body)
|
|
201
|
+
raise "BAD API KEY" if j["RetrieveZipCodesInRadiusOfIPResult"] == nil # NOTE: also happens when a province id is not valid for a country
|
|
202
|
+
j
|
|
203
|
+
end
|
|
204
|
+
elsif response.code == 404
|
|
205
|
+
nil
|
|
206
|
+
else
|
|
207
|
+
raise response.body
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
129
211
|
end
|
|
130
|
-
|
data/spec/client_spec.rb
CHANGED
|
@@ -1,52 +1,117 @@
|
|
|
1
1
|
require 'zipcodeservices'
|
|
2
2
|
require 'spec_helper'
|
|
3
3
|
|
|
4
|
-
describe "client" do
|
|
5
|
-
|
|
4
|
+
describe "json client" do
|
|
6
5
|
before(:each) do
|
|
7
|
-
ZipCodeServices.
|
|
6
|
+
ZipCodeServices.data_format = :json
|
|
8
7
|
end
|
|
9
8
|
|
|
10
|
-
it "should retrieve zip code info", :vcr, record: :
|
|
9
|
+
it "should retrieve zip code info", :vcr, record: :all do
|
|
11
10
|
zips = ZipCodeServices.zipcode("78702")
|
|
12
11
|
zips.first[1]["City"].should == "Austin"
|
|
13
12
|
# test other item
|
|
14
13
|
end
|
|
15
14
|
|
|
16
|
-
it "should get zip codes in radius of zip code", :vcr, record: :
|
|
15
|
+
it "should get zip codes in radius of zip code", :vcr, record: :all do
|
|
17
16
|
zips = ZipCodeServices.radius(78702, 1)
|
|
18
17
|
zips.first[1].first["PostalCode"].should == "78701"
|
|
19
18
|
end
|
|
20
19
|
|
|
21
|
-
it "should get zip codes in radius of latitude and longitude", :vcr, record: :
|
|
20
|
+
it "should get zip codes in radius of latitude and longitude", :vcr, record: :all do
|
|
22
21
|
zips = ZipCodeServices.radius_by_latlong("30.2645715", "-97.7284341", 1)
|
|
23
22
|
zips.first[1].first["PostalCode"].should == "73301"
|
|
24
23
|
end
|
|
25
24
|
|
|
26
|
-
it "should get the distance between zip codes", :vcr, record: :
|
|
25
|
+
it "should get the distance between zip codes", :vcr, record: :all do
|
|
27
26
|
zips = ZipCodeServices.distance_between_zipcodes("78702", "01109")
|
|
28
27
|
zips.first[1]["DistanceAwayInMiles"].should == 1616.501295
|
|
29
28
|
end
|
|
30
29
|
|
|
31
30
|
|
|
32
|
-
it "should get countries", :vcr, record: :
|
|
31
|
+
it "should get countries", :vcr, record: :all do
|
|
33
32
|
countries = ZipCodeServices.countries
|
|
34
33
|
countries.first[1].first["Abbreviation"].should == "US"
|
|
35
34
|
end
|
|
36
35
|
|
|
37
|
-
it "should get states
|
|
36
|
+
it "should get states-provinces by country id", :vcr, record: :all do
|
|
38
37
|
states = ZipCodeServices.states(1)
|
|
39
|
-
|
|
38
|
+
states.first[1].first["Abbreviation"].should == "AL"
|
|
40
39
|
end
|
|
41
40
|
|
|
42
|
-
it "should get cities by
|
|
41
|
+
it "should get cities by state id (province id)", :vcr, record: :all do
|
|
43
42
|
cities = ZipCodeServices.cities(200)
|
|
44
|
-
|
|
43
|
+
cities.first[1].first["City"].should == "Alamo"
|
|
45
44
|
end
|
|
46
45
|
|
|
47
|
-
it "should get cities by state id (provinces id) and country id
|
|
46
|
+
it "should get cities by state id (provinces id) and country id", :vcr, record: :all do
|
|
48
47
|
cities = ZipCodeServices.cities_by_state_and_country(1, 1)
|
|
49
48
|
cities.first[1][20]["City"].should == "Arlington"
|
|
50
49
|
end
|
|
51
50
|
|
|
51
|
+
it "should return information on ip addresses", :vcr, record: :all do
|
|
52
|
+
data = ZipCodeServices.ipaddress("184.98.179.3")
|
|
53
|
+
data.first[1]["ZipCode"].should == "85001"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "should return zips in radius of ip address", :vcr, record: :all do
|
|
57
|
+
data = ZipCodeServices.ipaddress_radius("184.98.179.3", 1)
|
|
58
|
+
data.first[1].first["PostalCode"].should == "86323"
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
describe "xml client" do
|
|
64
|
+
before(:each) do
|
|
65
|
+
ZipCodeServices.data_format = :xml
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should retrieve zip code info", :vcr, record: :all do
|
|
69
|
+
zips = ZipCodeServices.zipcode("78702")
|
|
70
|
+
zips.first[1].first[1]["City"].should == "Austin"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "should get zip codes in radius of zip code", :vcr, record: :all do
|
|
74
|
+
zips = ZipCodeServices.radius(78702, 1)
|
|
75
|
+
zips.first[1].first[1].first[1].first["PostalCode"].should == "78701"
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should get zip codes in radius of latitude and longitude", :vcr, record: :all do
|
|
79
|
+
zips = ZipCodeServices.radius_by_latlong("30.2645715", "-97.7284341", 1)
|
|
80
|
+
zips.first[1]["GetZipCodesInRadiusOfLatLongResult"]["ZipCodeWithDistanceDTO"][0]["PostalCode"].should == "73301"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "should get the distance between zip codes", :vcr, record: :all do
|
|
84
|
+
zips = ZipCodeServices.distance_between_zipcodes("78702", "01109")
|
|
85
|
+
zips.first[1]["RetrieveDistanceBetweenZipCodesResult"]["DistanceAwayInMiles"].should == "1616.501295"
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "should get countries", :vcr, record: :all do
|
|
89
|
+
countries = ZipCodeServices.countries
|
|
90
|
+
countries.first[1].first[1].first[1][0]["Abbreviation"].should == "US"
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "should get states-provinces by country id", :vcr, record: :all do
|
|
94
|
+
states = ZipCodeServices.states(1)
|
|
95
|
+
states.first[1].first[1].first[1][0]["Abbreviation"].should == "AL"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "should get cities by state id (province id)", :vcr, record: :all do
|
|
99
|
+
cities = ZipCodeServices.cities(200)
|
|
100
|
+
cities.first[1].first[1].first[1][0]["City"].should == "Alamo"
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "should get cities by state id (provinces id) and country id", :vcr, record: :all do
|
|
104
|
+
cities = ZipCodeServices.cities_by_state_and_country(1, 1)
|
|
105
|
+
cities.first[1].first[1].first[1][20]["City"].should == "Arlington"
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "should return information on ip addresses", :vcr, record: :all do
|
|
109
|
+
data = ZipCodeServices.ipaddress("184.98.179.3")
|
|
110
|
+
data.first[1].first[1]["ZipCode"].should == "85001"
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "should return zips in radius of ip address", :vcr, record: :all do
|
|
114
|
+
data = ZipCodeServices.ipaddress_radius("184.98.179.3", 1)
|
|
115
|
+
data.first[1].first[1].first[1]["PostalCode"].should == "86323"
|
|
116
|
+
end
|
|
52
117
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -2,10 +2,13 @@ require 'rspec'
|
|
|
2
2
|
require 'vcr'
|
|
3
3
|
#require 'webmock/rspec'
|
|
4
4
|
|
|
5
|
+
ZipCodeServices.apikey = ENV['ZIP_CODE_SERVICES_API_KEY']
|
|
6
|
+
|
|
5
7
|
VCR.configure do |c|
|
|
6
8
|
c.allow_http_connections_when_no_cassette = true
|
|
7
9
|
c.cassette_library_dir = 'spec/vcr_cassettes'
|
|
8
10
|
c.hook_into :typhoeus
|
|
11
|
+
c.filter_sensitive_data("<API_KEY>") { ZipCodeServices.apikey }
|
|
9
12
|
end
|
|
10
13
|
|
|
11
14
|
RSpec.configure do |config|
|