diff --git a/lib/geocoder.rb b/lib/geocoder.rb index 76f5ec20cc01a26f4ce05ca73516ce786a6ac815..196cf75dede7e6339705c5d017ca84e1c8b282db 100644 --- a/lib/geocoder.rb +++ b/lib/geocoder.rb @@ -53,6 +53,13 @@ module Geocoder street_lookups + ip_lookups end + ## + # Array of valid Lookup names, excluding :test. + # + def valid_lookups_except_test + valid_lookups - [:test] + end + ## # All street address lookups, default first. # @@ -77,7 +84,7 @@ module Geocoder # def lookup(query) if ip_address?(query) - get_lookup(ip_lookups.first) + get_lookup(Configuration.ip_lookup || ip_lookups.first) else get_lookup(Configuration.lookup || street_lookups.first) end diff --git a/lib/geocoder/cli.rb b/lib/geocoder/cli.rb index 8822bf627a664ae6cb48ebddaf63f40a91329544..9a7fa13b0d6aad7fb546f09782df6da38f2f81e3 100644 --- a/lib/geocoder/cli.rb +++ b/lib/geocoder/cli.rb @@ -32,9 +32,10 @@ module Geocoder Geocoder::Configuration.http_proxy = proxy end - opts.on("-s <service>", Geocoder.street_lookups, "--service <service>", - "Geocoding service: #{Geocoder.street_lookups * ', '}") do |service| + opts.on("-s <service>", Geocoder.valid_lookups_except_test, "--service <service>", + "Geocoding service: #{Geocoder.valid_lookups_except_test * ', '}") do |service| Geocoder::Configuration.lookup = service.to_sym + Geocoder::Configuration.ip_lookup = service.to_sym end opts.on("-t <seconds>", "--timeout <seconds>", diff --git a/lib/geocoder/configuration.rb b/lib/geocoder/configuration.rb index 7bbe787daa8125d6597d5249962ed64ed6ea4688..c2df6d3eb2817afc7d29eaa7febde5df061e3403 100644 --- a/lib/geocoder/configuration.rb +++ b/lib/geocoder/configuration.rb @@ -40,6 +40,7 @@ module Geocoder OPTIONS = [ :timeout, :lookup, + :ip_lookup, :language, :http_headers, :use_https, @@ -61,7 +62,8 @@ module Geocoder def set_defaults @timeout = 3 # geocoding service timeout (secs) - @lookup = :google # name of geocoding service (symbol) + @lookup = :google # name of street address geocoding service (symbol) + @ip_lookup = :freegeoip # name of IP address geocoding service (symbol) @language = :en # ISO-639 language code @http_headers = {} # HTTP headers for lookup @use_https = false # use HTTPS for lookup requests? (if supported) diff --git a/test/test_helper.rb b/test/test_helper.rb index 8ac6b3e0a6a939e7635eca5e6f63479a532c4a4c..a9cf367fe3a1ab9e02faea9617da9d9f2808bf85 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -282,11 +282,11 @@ class Test::Unit::TestCase end def all_lookups_except_test - Geocoder.valid_lookups - [:test] + Geocoder.valid_lookups_except_test end def street_lookups - all_lookups - [:freegeoip] + Geocoder.street_lookups end def is_nan_coordinates?(coordinates)