diff --git a/lib/geocoder/lookups/base.rb b/lib/geocoder/lookups/base.rb index 22a7c349546c1ed9316a618524305c9b70e02080..f5e9470314eb272173cf9afdd8431629082bfe08 100644 --- a/lib/geocoder/lookups/base.rb +++ b/lib/geocoder/lookups/base.rb @@ -99,7 +99,7 @@ module Geocoder # Object used to make HTTP requests. # def http_client - protocol = "http#{'s' if configuration.use_https}" + protocol = "http#{'s' if use_ssl?}" proxy_name = "#{protocol}_proxy" if proxy = configuration.send(proxy_name) proxy_url = !!(proxy =~ /^#{protocol}/) ? proxy : protocol + '://' + proxy @@ -198,7 +198,7 @@ module Geocoder # Set in configuration but not available for every service. # def protocol - "http" + (configuration.use_https ? "s" : "") + "http" + (use_ssl? ? "s" : "") end def valid_response?(response) @@ -262,7 +262,7 @@ module Geocoder args = [uri.host, uri.port] args = args.push(uri.user, uri.password) unless uri.user.nil? or uri.password.nil? opts = {} - opts[:use_ssl] = true if configuration.use_https + opts[:use_ssl] = use_ssl? http_client.start(*args, opts) do |client| client.get(uri.request_uri, configuration.http_headers) @@ -270,6 +270,10 @@ module Geocoder end end + def use_ssl? + configuration.use_https + end + def check_api_key_configuration!(query) key_parts = query.lookup.required_api_key_parts if key_parts.size > Array(configuration.api_key).size diff --git a/lib/geocoder/lookups/telize.rb b/lib/geocoder/lookups/telize.rb index b66cdae8494a7f43f060e41bf365f09d19e783e8..43b1de404968f3120dea1258246338bf51e5ee8a 100644 --- a/lib/geocoder/lookups/telize.rb +++ b/lib/geocoder/lookups/telize.rb @@ -15,6 +15,10 @@ module Geocoder::Lookup private # --------------------------------------------------------------- + def use_ssl? + false + end + def results(query) # don't look up a loopback address, just return the stored result return [reserved_result(query.text)] if query.loopback_ip_address? diff --git a/test/integration/http_client_test.rb b/test/integration/http_client_test.rb index fbf21d098613f4201665eb4a3b302a4b6c7b227e..f0906de938621c457e3a8d31a1b14f6dacdccaaf 100644 --- a/test/integration/http_client_test.rb +++ b/test/integration/http_client_test.rb @@ -22,4 +22,10 @@ class HttpClientTest < Test::Unit::TestCase results = Geocoder.search "27701" assert_not_nil results.first end + + def test_ssl_opt_out + Geocoder.configure(ip_lookup: :telize, use_https: true) + results = Geocoder.search "74.200.247.59" + assert_not_nil results.first + end end diff --git a/test/unit/lookups/telize_test.rb b/test/unit/lookups/telize_test.rb index 864b9b70989acaee5e63eb09925d0213152329ef..1a39367d2bd5124c167cb9d47bbbc3e6e4761a40 100644 --- a/test/unit/lookups/telize_test.rb +++ b/test/unit/lookups/telize_test.rb @@ -27,4 +27,10 @@ class TelizeTest < GeocoderTestCase results = Geocoder.search("555.555.555.555") assert_equal 0, results.length end + + def test_uses_http_even_if_use_https_true + Geocoder.configure(use_https: true) + result = Geocoder.search("74.200.247.59").first + assert result.is_a?(Geocoder::Result::Telize) + end end