Module: ZipCodeServices
- Defined in:
- lib/zipcodeservices.rb,
lib/zipcodeservices/version.rb
Constant Summary collapse
- VERSION =
'0.0.2'
Class Attribute Summary collapse
-
.apikey ⇒ Object
Returns the value of attribute apikey.
-
.data_format ⇒ Object
Returns the value of attribute data_format.
Class Method Summary collapse
- .base_uri ⇒ Object
- .cities(province_id) ⇒ Object
- .cities_by_state_and_country(province_id, country_id) ⇒ Object
- .countries ⇒ Object
- .distance_between_zipcodes(zip1, zip2) ⇒ Object
- .ipaddress(ip) ⇒ Object
- .ipaddress_radius(ip, rad) ⇒ Object
- .radius(zip, rad) ⇒ Object
- .radius_by_latlong(lat, lon, rad) ⇒ Object
- .states(country_id) ⇒ Object (also: provinces)
- .zipcode(zip) ⇒ Object
Class Attribute Details
.apikey ⇒ Object
Returns the value of attribute apikey.
15 16 17 |
# File 'lib/zipcodeservices.rb', line 15 def apikey @apikey end |
.data_format ⇒ Object
Returns the value of attribute data_format.
14 15 16 |
# File 'lib/zipcodeservices.rb', line 14 def data_format @data_format end |
Class Method Details
.base_uri ⇒ Object
17 18 19 20 |
# File 'lib/zipcodeservices.rb', line 17 def base_uri fmt = data_format == :xml ? 'xml' : 'json' "#{@base_uri}/#{fmt}" end |
.cities(province_id) ⇒ Object
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/zipcodeservices.rb', line 134 def cities(province_id) #/{apikey}/{zipcode} response = Typhoeus::Request.get( "#{base_uri}/cities.svc/#{apikey}/#{province_id}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1].first[1][0]["City"] == nil j else j = JSON::parse(response.body) raise "BAD API KEY" if j["GetCitiesByProvinceResult"] == nil j end elsif response.code == 404 nil else raise response.body end end |
.cities_by_state_and_country(province_id, country_id) ⇒ Object
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/zipcodeservices.rb', line 154 def cities_by_state_and_country(province_id, country_id) response = Typhoeus::Request.get( "#{base_uri}/cities.svc/#{apikey}/#{province_id}/#{country_id}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1].first[1][20]["City"] == nil j else j = JSON::parse(response.body) raise "BAD API KEY" if j["GetCitiesByProvinceAndCountryResult"] == nil # NOTE: also happens when a province id is not valid for a country j end elsif response.code == 404 nil else raise response.body end end |
.countries ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/zipcodeservices.rb', line 96 def countries response = Typhoeus::Request.get( "#{base_uri}/countries.svc/#{apikey}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1].first[1][0]["Abbreviation"] == nil else j = JSON::parse(response.body) raise "BAD API KEY" if j["GetCountriesResult"] == nil end j elsif response.code == 404 nil else raise response.body end end |
.distance_between_zipcodes(zip1, zip2) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/zipcodeservices.rb', line 78 def distance_between_zipcodes(zip1, zip2) response = Typhoeus::Request.get( "#{base_uri}/zipcodes.svc/GetDistanceBetweenZipCodes?apikey=#{apikey}&zipcode1=#{zip1}&zipcode2=#{zip2}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1]["DistanceAwayInMiles"] == nil else j = JSON::parse(response.body) raise "BAD API KEY" if j.first[1]["ZipCode1"] == nil end j elsif response.code == 404 nil else raise response.body end end |
.ipaddress(ip) ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/zipcodeservices.rb', line 173 def ipaddress(ip) response = Typhoeus::Request.get( "#{base_uri}/ipaddress.svc/GetIP?apikey=#{apikey}&ip=#{ip}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1]["ZipCode"] == nil j else j = JSON::parse(response.body) raise "BAD API KEY" if j["RetrieveIPAddressDataResult"] == nil # NOTE: also happens when a province id is not valid for a country j end elsif response.code == 404 nil else raise response.body end end |
.ipaddress_radius(ip, rad) ⇒ Object
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/zipcodeservices.rb', line 192 def ipaddress_radius(ip, rad) response = Typhoeus::Request.get( "#{base_uri}/ipaddress.svc/GetZipsInRadiusOfIP?apikey=#{apikey}&ip=#{ip}&radius=#{rad}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1].first[1]["PostalCode"] == nil j else j = JSON::parse(response.body) raise "BAD API KEY" if j["RetrieveZipCodesInRadiusOfIPResult"] == nil # NOTE: also happens when a province id is not valid for a country j end elsif response.code == 404 nil else raise response.body end end |
.radius(zip, rad) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/zipcodeservices.rb', line 41 def radius(zip, rad) response = Typhoeus::Request.get( "#{base_uri}/zipcodes.svc/#{apikey}/#{zip}/#{rad}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1] == nil else j = JSON::parse(response.body) raise "BAD API KEY" if j["RetrieveZipCodesInRadiusResult"] == nil end j elsif response.code == 404 nil else raise response.body end end |
.radius_by_latlong(lat, lon, rad) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/zipcodeservices.rb', line 59 def radius_by_latlong(lat, lon, rad) response = Typhoeus::Request.get( "#{base_uri}/zipcodes.svc/GetZipCodesInRadiusLatLong?apikey=#{apikey}&latitude=#{lat}&longitude=#{lon}&radius=#{rad}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1].first[1][0]["PostalCode"] == nil else j = JSON::parse(response.body) raise "BAD API KEY" if j.first[1].first["PostalCode"] == nil # ["GetZipCodesInRadiusOfLatLongResult"] ==nil end j elsif response.code == 404 nil else raise response.body end end |
.states(country_id) ⇒ Object Also known as: provinces
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/zipcodeservices.rb', line 114 def states(country_id) response = Typhoeus::Request.get( "#{base_uri}/provinces.svc/#{apikey}/#{country_id}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1].first[1][0]["Abbreviation"] == nil j else j = JSON::parse(response.body) raise "BAD API KEY" if j["GetAllProvincesByCountryIdResult"] == nil j end elsif response.code == 404 nil else raise response.body end end |
.zipcode(zip) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/zipcodeservices.rb', line 22 def zipcode(zip) #/{apikey}/{zipcode} response = Typhoeus::Request.get( "#{base_uri}/zipcodes.svc/#{apikey}/#{zip}") if response.code == 200 if data_format == :xml j = MultiXml.parse(response.body) raise "BAD API KEY" if j.first[1].first[1]["City"] == nil else j = JSON::parse(response.body) raise "BAD API KEY" if j.first[1]["City"] == nil end j elsif response.code == 404 nil else raise response.body end end |