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 ...@@ -32,6 +32,22 @@ module Geocoder
coordinates[1] coordinates[1]
end end
def state
fail
end
def province
state
end
def state_code
fail
end
def province_code
state_code
end
def country def country
fail fail
end end
......
...@@ -4,13 +4,21 @@ module Geocoder::Result ...@@ -4,13 +4,21 @@ module Geocoder::Result
class Freegeoip < Base class Freegeoip < Base
def address(format = :full) def address(format = :full)
"#{city}#{', ' + region_code unless region_code == ''} #{postal_code}, #{country}" "#{city}#{', ' + state_code unless state_code == ''} #{postal_code}, #{country}"
end end
def city def city
@data['city'] @data['city']
end end
def state
@data['region_name']
end
def state_code
@data['region_code']
end
def country def country
@data['country_name'] @data['country_name']
end end
...@@ -24,7 +32,7 @@ module Geocoder::Result ...@@ -24,7 +32,7 @@ module Geocoder::Result
end end
def self.response_attributes def self.response_attributes
%w[region_code region_name metrocode zipcode country_name ip] %w[metrocode ip]
end end
response_attributes.each do |a| response_attributes.each do |a|
......
...@@ -23,7 +23,7 @@ module Geocoder::Result ...@@ -23,7 +23,7 @@ module Geocoder::Result
@data['prov'] @data['prov']
end end
alias_method :province, :state alias_method :state_code, :state
def postal_code def postal_code
@data['postal'] @data['postal']
......
...@@ -12,8 +12,9 @@ module Geocoder::Result ...@@ -12,8 +12,9 @@ module Geocoder::Result
end end
def city def city
fields = [:locality, :sublocality, :administrative_area_level_3, fields = [:locality, :sublocality,
:administrative_area_level_2, :administrative_area_level_1] :administrative_area_level_3,
:administrative_area_level_2]
fields.each do |f| fields.each do |f|
if entity = address_components_of_type(f).first if entity = address_components_of_type(f).first
return entity['long_name'] return entity['long_name']
...@@ -21,6 +22,18 @@ module Geocoder::Result ...@@ -21,6 +22,18 @@ module Geocoder::Result
end end
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 def country
if country = address_components_of_type(:country).first if country = address_components_of_type(:country).first
country['long_name'] country['long_name']
......
...@@ -11,6 +11,14 @@ module Geocoder::Result ...@@ -11,6 +11,14 @@ module Geocoder::Result
@data['city'] @data['city']
end end
def state
@data['state']
end
def state_code
@data['statecode']
end
def country def country
@data['country'] @data['country']
end end
...@@ -25,8 +33,8 @@ module Geocoder::Result ...@@ -25,8 +33,8 @@ module Geocoder::Result
def self.response_attributes def self.response_attributes
%w[quality offsetlat offsetlon radius boundingbox name %w[quality offsetlat offsetlon radius boundingbox name
line1 line2 line3 line4 cross house street xstreet unittype unit postal line1 line2 line3 line4 cross house street xstreet unittype unit
neighborhood county state countrycode statecode countycode neighborhood county countycode
level0 level1 level2 level3 level4 level0code level1code level2code level0 level1 level2 level3 level4 level0code level1code level2code
timezone areacode uzip hash woeid woetype] timezone areacode uzip hash woeid woetype]
end end
......
...@@ -23,6 +23,14 @@ module Geocoder::Result ...@@ -23,6 +23,14 @@ module Geocoder::Result
address_details['CountryNameCode'] address_details['CountryNameCode']
end end
def state
""
end
def state_code
""
end
def postal_code def postal_code
"" ""
end end
......
...@@ -427,13 +427,17 @@ class GeocoderTest < Test::Unit::TestCase ...@@ -427,13 +427,17 @@ class GeocoderTest < Test::Unit::TestCase
def assert_result_has_required_attributes(result) def assert_result_has_required_attributes(result)
m = "Lookup #{Geocoder::Configuration.lookup} does not support %s attribute." m = "Lookup #{Geocoder::Configuration.lookup} does not support %s attribute."
assert result.coordinates.is_a?(Array), m % "coordinates" assert result.coordinates.is_a?(Array), m % "coordinates"
assert result.latitude.is_a?(Float), m % "latitude" assert result.latitude.is_a?(Float), m % "latitude"
assert result.longitude.is_a?(Float), m % "longitude" assert result.longitude.is_a?(Float), m % "longitude"
assert result.city.is_a?(String), m % "city" assert result.city.is_a?(String), m % "city"
assert result.postal_code.is_a?(String), m % "postal_code" assert result.state.is_a?(String), m % "state"
assert result.country.is_a?(String), m % "country" assert result.state_code.is_a?(String), m % "state_code"
assert result.country_code.is_a?(String), m % "country_code" assert result.province.is_a?(String), m % "province"
assert_not_nil result.address, m % "address" 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
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