Skip to content
Snippets Groups Projects
Commit 83b6c743 authored by Alex Reisner's avatar Alex Reisner
Browse files

Add Result#state and #state_code attributes.

Also alias as #province and #province_code.
parent 2a80bc91
No related branches found
No related tags found
No related merge requests found
......@@ -32,6 +32,22 @@ module Geocoder
coordinates[1]
end
def state
fail
end
def province
state
end
def state_code
fail
end
def province_code
state_code
end
def country
fail
end
......
......@@ -4,13 +4,21 @@ module Geocoder::Result
class Freegeoip < Base
def address(format = :full)
"#{city}#{', ' + region_code unless region_code == ''} #{postal_code}, #{country}"
"#{city}#{', ' + state_code unless state_code == ''} #{postal_code}, #{country}"
end
def city
@data['city']
end
def state
@data['region_name']
end
def state_code
@data['region_code']
end
def country
@data['country_name']
end
......@@ -24,7 +32,7 @@ module Geocoder::Result
end
def self.response_attributes
%w[region_code region_name metrocode zipcode country_name ip]
%w[metrocode ip]
end
response_attributes.each do |a|
......
......@@ -23,7 +23,7 @@ module Geocoder::Result
@data['prov']
end
alias_method :province, :state
alias_method :state_code, :state
def postal_code
@data['postal']
......
......@@ -12,8 +12,9 @@ module Geocoder::Result
end
def city
fields = [:locality, :sublocality, :administrative_area_level_3,
:administrative_area_level_2, :administrative_area_level_1]
fields = [:locality, :sublocality,
:administrative_area_level_3,
:administrative_area_level_2]
fields.each do |f|
if entity = address_components_of_type(f).first
return entity['long_name']
......@@ -21,6 +22,18 @@ module Geocoder::Result
end
end
def state
if state = address_components_of_type(:administrative_area_level_1).first
state['long_name']
end
end
def state_code
if state = address_components_of_type(:administrative_area_level_1).first
state['short_name']
end
end
def country
if country = address_components_of_type(:country).first
country['long_name']
......
......@@ -11,6 +11,14 @@ module Geocoder::Result
@data['city']
end
def state
@data['state']
end
def state_code
@data['statecode']
end
def country
@data['country']
end
......@@ -25,8 +33,8 @@ module Geocoder::Result
def self.response_attributes
%w[quality offsetlat offsetlon radius boundingbox name
line1 line2 line3 line4 cross house street xstreet unittype unit postal
neighborhood county state countrycode statecode countycode
line1 line2 line3 line4 cross house street xstreet unittype unit
neighborhood county countycode
level0 level1 level2 level3 level4 level0code level1code level2code
timezone areacode uzip hash woeid woetype]
end
......
......@@ -23,6 +23,14 @@ module Geocoder::Result
address_details['CountryNameCode']
end
def state
""
end
def state_code
""
end
def postal_code
""
end
......
......@@ -427,13 +427,17 @@ class GeocoderTest < Test::Unit::TestCase
def assert_result_has_required_attributes(result)
m = "Lookup #{Geocoder::Configuration.lookup} does not support %s attribute."
assert result.coordinates.is_a?(Array), m % "coordinates"
assert result.latitude.is_a?(Float), m % "latitude"
assert result.longitude.is_a?(Float), m % "longitude"
assert result.city.is_a?(String), m % "city"
assert result.postal_code.is_a?(String), m % "postal_code"
assert result.country.is_a?(String), m % "country"
assert result.country_code.is_a?(String), m % "country_code"
assert_not_nil result.address, m % "address"
assert result.coordinates.is_a?(Array), m % "coordinates"
assert result.latitude.is_a?(Float), m % "latitude"
assert result.longitude.is_a?(Float), m % "longitude"
assert result.city.is_a?(String), m % "city"
assert result.state.is_a?(String), m % "state"
assert result.state_code.is_a?(String), m % "state_code"
assert result.province.is_a?(String), m % "province"
assert result.province_code.is_a?(String), m % "province_code"
assert result.postal_code.is_a?(String), m % "postal_code"
assert result.country.is_a?(String), m % "country"
assert result.country_code.is_a?(String), m % "country_code"
assert_not_nil result.address, m % "address"
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment