geokit 1.8.4 → 1.8.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/.travis.yml +4 -6
  2. data/CHANGELOG.md +9 -0
  3. data/README.markdown +27 -3
  4. data/fixtures/vcr_cassettes/bing_au.yml +86 -0
  5. data/fixtures/vcr_cassettes/bing_full.yml +61 -68
  6. data/fixtures/vcr_cassettes/bing_full_au.yml +43 -39
  7. data/fixtures/vcr_cassettes/bing_full_de.yml +43 -39
  8. data/fixtures/vcr_cassettes/fcc_reverse_geocode.yml +9 -7
  9. data/fixtures/vcr_cassettes/geocodio_geocode.yml +43 -0
  10. data/fixtures/vcr_cassettes/google_city.yml +8 -6
  11. data/fixtures/vcr_cassettes/google_country_code_biased_result.yml +27 -25
  12. data/fixtures/vcr_cassettes/google_full.yml +13 -16
  13. data/fixtures/vcr_cassettes/google_full_short.yml +8 -6
  14. data/fixtures/vcr_cassettes/google_language_response_fr.yml +23 -21
  15. data/fixtures/vcr_cassettes/google_multi.yml +7 -5
  16. data/fixtures/vcr_cassettes/google_reverse_madrid.yml +281 -278
  17. data/fixtures/vcr_cassettes/google_reverse_madrid_es.yml +26 -32
  18. data/fixtures/vcr_cassettes/map_quest_full.yml +53 -0
  19. data/fixtures/vcr_cassettes/map_quest_reverse_madrid.yml +52 -0
  20. data/fixtures/vcr_cassettes/ripe_geocode_45.yml +45 -0
  21. data/fixtures/vcr_cassettes/yahoo_city.yml +1 -1
  22. data/fixtures/vcr_cassettes/yahoo_full.yml +1 -1
  23. data/fixtures/vcr_cassettes/yahoo_no_results.yml +1 -1
  24. data/lib/geokit/geocoders.rb +16 -1
  25. data/lib/geokit/geocoders/bing.rb +22 -18
  26. data/lib/geokit/geocoders/fcc.rb +2 -1
  27. data/lib/geokit/geocoders/geocodio.rb +59 -0
  28. data/lib/geokit/geocoders/google.rb +7 -3
  29. data/lib/geokit/geocoders/mapquest.rb +3 -2
  30. data/lib/geokit/geocoders/ripe.rb +8 -5
  31. data/lib/geokit/geocoders/yahoo.rb +2 -1
  32. data/lib/geokit/lat_lng.rb +13 -3
  33. data/lib/geokit/mappable.rb +13 -0
  34. data/lib/geokit/multi_geocoder.rb +13 -2
  35. data/lib/geokit/net_adapter/net_http.rb +6 -1
  36. data/lib/geokit/version.rb +1 -1
  37. data/test/helper.rb +2 -1
  38. data/test/test_bing_geocoder.rb +23 -3
  39. data/test/test_fcc_geocoder.rb +1 -1
  40. data/test/test_geocodio_geocoder.rb +33 -0
  41. data/test/test_google_geocoder.rb +31 -17
  42. data/test/test_latlng.rb +18 -0
  43. data/test/test_map_quest.rb +56 -0
  44. data/test/test_multi_geocoder.rb +7 -0
  45. data/test/test_ripe_geocoder.rb +19 -12
  46. data/test/test_yahoo_geocoder.rb +7 -7
  47. metadata +12 -8
@@ -1,7 +1,8 @@
1
1
  module Geokit
2
2
  module Geocoders
3
3
  class GoogleGeocoder < Geocoder
4
- config :client_id, :cryptographic_key, :channel
4
+ config :client_id, :cryptographic_key, :channel, :api_key
5
+ self.secure = true
5
6
 
6
7
  private
7
8
  # ==== OPTIONS
@@ -62,9 +63,12 @@ module Geokit
62
63
  channel_string = channel ? "&channel=#{channel}" : ''
63
64
  urlToSign = query_string + "&client=#{client_id}" + channel_string
64
65
  signature = sign_gmap_bus_api_url(urlToSign, cryptographic_key)
65
- "http://maps.googleapis.com" + urlToSign + "&signature=#{signature}"
66
+ "#{protocol}://maps.googleapis.com" + urlToSign + "&signature=#{signature}"
67
+ elsif api_key
68
+ url_with_key = query_string + "&key=#{api_key}"
69
+ "#{protocol}://maps.googleapis.com" + url_with_key
66
70
  else
67
- "http://maps.google.com" + query_string
71
+ "#{protocol}://maps.google.com" + query_string
68
72
  end
69
73
  end
70
74
 
@@ -4,20 +4,21 @@ module Geokit
4
4
  # contain a MapQuest API key. Conforms to the interface set by the Geocoder class.
5
5
  class MapQuestGeocoder < Geocoder
6
6
  config :key
7
+ self.secure = true
7
8
 
8
9
  private
9
10
 
10
11
  # Template method which does the reverse-geocode lookup.
11
12
  def self.do_reverse_geocode(latlng)
12
13
  latlng=LatLng.normalize(latlng)
13
- url = "http://www.mapquestapi.com/geocoding/v1/reverse?key=#{key}&location=#{latlng.lat},#{latlng.lng}"
14
+ url = "#{protocol}://www.mapquestapi.com/geocoding/v1/reverse?key=#{key}&location=#{latlng.lat},#{latlng.lng}"
14
15
  process :json, url
15
16
  end
16
17
 
17
18
  # Template method which does the geocode lookup.
18
19
  def self.do_geocode(address)
19
20
  address_str = address.is_a?(GeoLoc) ? address.to_geocodeable_s : address
20
- url = "http://www.mapquestapi.com/geocoding/v1/address?key=#{key}&location=#{Geokit::Inflector::url_escape(address_str)}"
21
+ url = "#{protocol}://www.mapquestapi.com/geocoding/v1/address?key=#{key}&location=#{Geokit::Inflector::url_escape(address_str)}"
21
22
  process :json, url
22
23
  end
23
24
 
@@ -2,6 +2,7 @@ module Geokit
2
2
  module Geocoders
3
3
  # Provides geocoding based upon an IP address. The underlying web service is geoplugin.net
4
4
  class RipeGeocoder < BaseIpGeocoder
5
+ self.secure = false # supports HTTPS, but Net::HTTPS doesn't like the server
5
6
  private
6
7
 
7
8
  def self.do_geocode(ip)
@@ -9,17 +10,19 @@ module Geokit
9
10
  end
10
11
 
11
12
  def self.submit_url(ip)
12
- "http://stat.ripe.net/data/geoloc/data.json?resource=#{ip}"
13
+ "#{protocol}://stat.ripe.net/data/geoloc/data.json?resource=#{ip}"
13
14
  end
14
15
 
15
16
  def self.parse_json(json)
16
17
  loc = new_loc
17
18
  data = json['data']['locations'][0]
18
19
 
19
- loc.lat = data['latitude']
20
- loc.lng = data['longitude']
21
- set_address_components(data, loc)
22
- loc.success = (data['status_code'] == 200)
20
+ if data
21
+ loc.lat = data['latitude']
22
+ loc.lng = data['longitude']
23
+ set_address_components(data, loc)
24
+ loc.success = data && (data['status_code'] == 200)
25
+ end
23
26
  loc
24
27
  end
25
28
 
@@ -4,6 +4,7 @@ module Geokit
4
4
  # contain a Yahoo API key. Conforms to the interface set by the Geocoder class.
5
5
  class YahooGeocoder < Geocoder
6
6
  config :key, :secret
7
+ self.secure = true
7
8
 
8
9
  private
9
10
  def self.submit_url(address)
@@ -13,7 +14,7 @@ module Geokit
13
14
  o = OauthUtil.new
14
15
  o.consumer_key = key
15
16
  o.consumer_secret = secret
16
- base = "http://yboss.yahooapis.com/geo/placefinder"
17
+ base = "#{protocol}://yboss.yahooapis.com/geo/placefinder"
17
18
  parsed_url = URI.parse("#{base}#{query_string}")
18
19
  "#{base}?#{o.sign(parsed_url).query_string}"
19
20
  end
@@ -32,6 +32,16 @@ module Geokit
32
32
  "#{lat},#{lng}"
33
33
  end
34
34
 
35
+ # returns latitude as [ degree, minute, second ] array
36
+ def lat_dms
37
+ self.class.decimal_to_dms(lat)
38
+ end
39
+
40
+ # returns longitude as [ degree, minute, second ] array
41
+ def lng_dms
42
+ self.class.decimal_to_dms(lng)
43
+ end
44
+
35
45
  #returns a string with comma-separated lat,lng values
36
46
  def to_s
37
47
  ll
@@ -70,7 +80,7 @@ module Geokit
70
80
  # 4) an array in the format [37.1234,-129.1234]
71
81
  # 5) a LatLng or GeoLoc (which is just passed through as-is)
72
82
  # 6) anything responding to to_lat_lng -- a LatLng will be extracted from it
73
- def self.normalize(thing,other=nil)
83
+ def self.normalize(thing, other=nil)
74
84
  return Geokit::LatLng.new(thing, other) if other
75
85
 
76
86
  case thing
@@ -78,7 +88,7 @@ module Geokit
78
88
  from_string(thing)
79
89
  when Array
80
90
  thing.size == 2 or raise ArgumentError.new("Must initialize with an Array with both latitude and longitude")
81
- Geokit::LatLng.new(thing[0],thing[1])
91
+ Geokit::LatLng.new(thing[0], thing[1])
82
92
  when LatLng # will also be true for GeoLocs
83
93
  thing
84
94
  else
@@ -93,7 +103,7 @@ module Geokit
93
103
  def self.from_string(thing)
94
104
  thing.strip!
95
105
  if match=thing.match(/(\-?\d+\.?\d*)[, ] ?(\-?\d+\.?\d*)$/)
96
- Geokit::LatLng.new(match[1],match[2])
106
+ Geokit::LatLng.new(match[1], match[2])
97
107
  else
98
108
  res = Geokit::Geocoders::MultiGeocoder.geocode(thing)
99
109
  return res if res.success?
@@ -127,6 +127,19 @@ module Geokit
127
127
  raise Geokit::Geocoders::GeocodeError
128
128
  end
129
129
 
130
+ # Given a decimal degree like -87.660333
131
+ # return a 3-element array like [ -87, 39, 37.198... ]
132
+ def decimal_to_dms(deg)
133
+ return false unless deg.is_a?(Numeric)
134
+ # seconds is 0...3599.999, representing the entire fractional part.
135
+ seconds = (deg.abs % 1.0) * 3600.0
136
+ [
137
+ deg.to_i, # degrees as positive or negative integer
138
+ (seconds / 60).to_i, # minutes as positive integer
139
+ (seconds % 60) # seconds as positive float
140
+ ]
141
+ end
142
+
130
143
  protected
131
144
 
132
145
  def deg2rad(degrees)
@@ -23,8 +23,7 @@ module Geokit
23
23
  # The failover approach is crucial for production-grade apps, but is rarely used.
24
24
  # 98% of your geocoding calls will be successful with the first call
25
25
  def self.do_geocode(address, *args)
26
- geocode_ip = /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.match(address)
27
- provider_order = geocode_ip ? Geokit::Geocoders::ip_provider_order : Geokit::Geocoders::provider_order
26
+ provider_order = provider_order_for(address, args)
28
27
 
29
28
  provider_order.each do |provider|
30
29
  klass = geocoder(provider)
@@ -59,6 +58,18 @@ module Geokit
59
58
  def self.geocoder(provider)
60
59
  Geokit::Geocoders.const_get "#{Geokit::Inflector::camelize(provider.to_s)}Geocoder"
61
60
  end
61
+
62
+ def self.provider_order_for(address, args)
63
+ if args.last.is_a?(Hash) && args.last.key?(:provider_order)
64
+ args.last.delete(:provider_order)
65
+ else
66
+ if /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/.match(address)
67
+ Geokit::Geocoders::ip_provider_order
68
+ else
69
+ Geokit::Geocoders::provider_order
70
+ end
71
+ end
72
+ end
62
73
  end
63
74
  end
64
75
  end
@@ -10,7 +10,12 @@ module Geokit
10
10
  proxy_uri = URI.parse(proxy_uri_string)
11
11
  net_http_args += [proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password]
12
12
  end
13
- Net::HTTP::new(*net_http_args).start { |http| http.request(req) }
13
+ http = Net::HTTP::new(*net_http_args)
14
+ if uri.scheme == 'https'
15
+ http.use_ssl = true
16
+ http.verify_mode = Geokit::Geocoders.ssl_verify_mode
17
+ end
18
+ http.start { |http| http.request(req) }
14
19
  end
15
20
 
16
21
  def self.success?(response)
@@ -1,3 +1,3 @@
1
1
  module Geokit
2
- VERSION = '1.8.4'
2
+ VERSION = '1.8.5'
3
3
  end
@@ -11,7 +11,7 @@ end
11
11
  require 'geoip'
12
12
 
13
13
  if ENV['COVERAGE']
14
- COVERAGE_THRESHOLD = 91
14
+ COVERAGE_THRESHOLD = 95
15
15
  require 'simplecov'
16
16
  require 'simplecov-rcov'
17
17
  require 'coveralls'
@@ -110,6 +110,7 @@ class BaseGeocoderTest < Test::Unit::TestCase #:nodoc: all
110
110
 
111
111
  # Defines common test fixtures.
112
112
  def setup
113
+ Geokit::Geocoders::request_timeout = 10
113
114
  @address = 'San Francisco, CA'
114
115
  @full_address = '100 Spear St, San Francisco, CA, 94105-1522, US'
115
116
  @full_address_short_zip = '100 Spear St, San Francisco, CA, 94105, US'
@@ -16,7 +16,7 @@ class BingGeocoderTest < BaseGeocoderTest #:nodoc: all
16
16
  def test_bing_full_address
17
17
  VCR.use_cassette('bing_full') do
18
18
  key = Geokit::Geocoders::BingGeocoder.key
19
- url = "http://dev.virtualearth.net/REST/v1/Locations/#{URI.escape(@full_address)}?key=#{key}&o=xml"
19
+ url = "https://dev.virtualearth.net/REST/v1/Locations/#{URI.escape(@full_address)}?key=#{key}&o=xml"
20
20
  res = Geokit::Geocoders::BingGeocoder.geocode(@full_address)
21
21
  assert_equal "CA", res.state
22
22
  assert_equal "San Francisco", res.city
@@ -32,7 +32,7 @@ class BingGeocoderTest < BaseGeocoderTest #:nodoc: all
32
32
  address = '440 King William Street, Adelaide, Australia'
33
33
  VCR.use_cassette('bing_full_au') do
34
34
  key = Geokit::Geocoders::BingGeocoder.key
35
- url = "http://dev.virtualearth.net/REST/v1/Locations/#{URI.escape(address)}?key=#{key}&o=xml"
35
+ url = "https://dev.virtualearth.net/REST/v1/Locations/#{URI.escape(address)}?key=#{key}&o=xml"
36
36
  res = Geokit::Geocoders::BingGeocoder.geocode(address)
37
37
  assert_equal "SA", res.state
38
38
  assert_equal "Adelaide", res.city
@@ -49,7 +49,7 @@ class BingGeocoderTest < BaseGeocoderTest #:nodoc: all
49
49
  address = "Platz der Republik 1, 11011 Berlin, Germany"
50
50
  VCR.use_cassette('bing_full_de') do
51
51
  key = Geokit::Geocoders::BingGeocoder.key
52
- url = "http://dev.virtualearth.net/REST/v1/Locations/#{URI.escape(address)}?key=#{key}&o=xml"
52
+ url = "https://dev.virtualearth.net/REST/v1/Locations/#{URI.escape(address)}?key=#{key}&o=xml"
53
53
  res = Geokit::Geocoders::BingGeocoder.geocode(address)
54
54
  assert_equal "BE", res.state
55
55
  assert_equal "Berlin", res.city
@@ -57,6 +57,26 @@ class BingGeocoderTest < BaseGeocoderTest #:nodoc: all
57
57
  assert res.country == 'Germany'
58
58
  assert_equal "Platz der Republik 1, 10557 Berlin", res.full_address
59
59
  assert_equal "bing", res.provider
60
+ assert_equal 'address', res.precision
61
+ assert_equal 8, res.accuracy
62
+ assert_url url
63
+ end
64
+ end
65
+
66
+ def test_bing_country
67
+ address = "Australia"
68
+ VCR.use_cassette('bing_au') do
69
+ key = Geokit::Geocoders::BingGeocoder.key
70
+ url = "https://dev.virtualearth.net/REST/v1/Locations/#{URI.escape(address)}?key=#{key}&o=xml"
71
+ res = Geokit::Geocoders::BingGeocoder.geocode(address)
72
+ assert_equal nil, res.state
73
+ assert_equal nil, res.city
74
+ assert_array_in_delta [-25.585, 134.504], res.to_a
75
+ assert res.country == 'Australia'
76
+ assert_equal 'Australia', res.full_address
77
+ assert_equal "bing", res.provider
78
+ assert_equal 'country', res.precision
79
+ assert_equal 8, res.accuracy
60
80
  assert_url url
61
81
  end
62
82
  end
@@ -12,7 +12,7 @@ class FCCGeocoderTest < BaseGeocoderTest #:nodoc: all
12
12
 
13
13
  def test_fcc_reverse_geocode
14
14
  VCR.use_cassette('fcc_reverse_geocode') do
15
- url = "http://data.fcc.gov/api/block/find?format=json&latitude=34.05&longitude=-118.25"
15
+ url = "https://data.fcc.gov/api/block/find?format=json&latitude=34.05&longitude=-118.25"
16
16
  res = Geokit::Geocoders::FCCGeocoder.reverse_geocode(@la)
17
17
  assert_url url
18
18
  assert_equal res.country_code, 'US'
@@ -0,0 +1,33 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ Geokit::Geocoders::GeocodioGeocoder.key = '723d41115152d224fd74727df34727c444537f7'
4
+
5
+ class GeocodioGeocoderTest < BaseGeocoderTest #:nodoc: all
6
+ def setup
7
+ super
8
+ @full_address = '1 Infinite Loop, Cupertino, CA 95014'
9
+ @second_address = '300 Brannan St, San Francisco, CA 94107'
10
+ end
11
+
12
+ def assert_url(expected_url)
13
+ assert_equal expected_url, TestHelper.get_last_url.gsub(/&oauth_[a-z_]+=[a-zA-Z0-9\-. %]+/, '').gsub('%20', '+')
14
+ end
15
+
16
+ def test_geocodio_geocode
17
+ VCR.use_cassette('geocodio_geocode') do
18
+ res = Geokit::Geocoders::GeocodioGeocoder.geocode(@full_address)
19
+ url = "http://api.geocod.io/v1/geocode?q=#{Geokit::Inflector.url_escape(@full_address)}&api_key=723d41115152d224fd74727df34727c444537f7"
20
+
21
+ assert_url url
22
+
23
+ verify(res)
24
+ end
25
+ end
26
+
27
+ def verify(location)
28
+ assert_equal location.city, 'Cupertino'
29
+ assert_equal location.zip, '95014'
30
+ assert_equal location.lat, 37.331669
31
+ assert_equal location.lng, -122.03074
32
+ end
33
+ end
@@ -33,12 +33,26 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
33
33
  url = Geokit::Geocoders::GoogleGeocoder.send(:submit_url, 'address=New+York')
34
34
  Geokit::Geocoders::GoogleGeocoder.client_id = nil
35
35
  Geokit::Geocoders::GoogleGeocoder.cryptographic_key = nil
36
- assert_equal 'http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=New+York&client=clientID&signature=9mevp7SoVsSKzF9nj-vApMYbatg=', url
36
+ assert_equal 'https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=New+York&client=clientID&signature=9mevp7SoVsSKzF9nj-vApMYbatg=', url
37
+ end
38
+
39
+ def test_google_api_key
40
+ Geokit::Geocoders::GoogleGeocoder.api_key = 'someKey'
41
+ url = Geokit::Geocoders::GoogleGeocoder.send(:submit_url, 'address=New+York')
42
+ Geokit::Geocoders::GoogleGeocoder.api_key = nil
43
+ assert_equal 'https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=New+York&key=someKey', url
44
+ end
45
+
46
+ def test_google_insecure_url
47
+ Geokit::Geocoders.secure = false
48
+ url = Geokit::Geocoders::GoogleGeocoder.send(:submit_url, 'address=New+York')
49
+ Geokit::Geocoders.secure = true
50
+ assert_equal 'http://maps.google.com/maps/api/geocode/json?sensor=false&address=New+York', url
37
51
  end
38
52
 
39
53
  def test_google_full_address
40
54
  VCR.use_cassette('google_full_short') do
41
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
55
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
42
56
  TestHelper.expects(:last_url).with(url)
43
57
  res=Geokit::Geocoders::GoogleGeocoder.geocode(@address)
44
58
  assert_equal "CA", res.state
@@ -52,7 +66,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
52
66
 
53
67
  def test_google_full_address_with_geo_loc
54
68
  VCR.use_cassette('google_full') do
55
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@full_address_short_zip)}"
69
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@full_address_short_zip)}"
56
70
  TestHelper.expects(:last_url).with(url)
57
71
  res=Geokit::Geocoders::GoogleGeocoder.geocode(@google_full_loc)
58
72
  assert_equal "CA", res.state
@@ -66,7 +80,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
66
80
 
67
81
  def test_google_full_address_accuracy
68
82
  VCR.use_cassette('google_full') do
69
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@full_address_short_zip)}"
83
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@full_address_short_zip)}"
70
84
  TestHelper.expects(:last_url).with(url)
71
85
  res=Geokit::Geocoders::GoogleGeocoder.geocode(@google_full_loc)
72
86
 
@@ -76,7 +90,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
76
90
 
77
91
  def test_google_city
78
92
  VCR.use_cassette('google_city') do
79
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
93
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
80
94
  TestHelper.expects(:last_url).with(url)
81
95
  res=Geokit::Geocoders::GoogleGeocoder.do_geocode(@address)
82
96
  assert_nil res.street_address
@@ -91,7 +105,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
91
105
 
92
106
  def test_google_city_accuracy
93
107
  VCR.use_cassette('google_city') do
94
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
108
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
95
109
  TestHelper.expects(:last_url).with(url)
96
110
  res=Geokit::Geocoders::GoogleGeocoder.geocode(@address)
97
111
  assert_equal 4, res.accuracy
@@ -100,7 +114,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
100
114
 
101
115
  def test_google_city_with_geo_loc
102
116
  VCR.use_cassette('google_city') do
103
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
117
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
104
118
  TestHelper.expects(:last_url).with(url)
105
119
  res=Geokit::Geocoders::GoogleGeocoder.geocode(@google_city_loc)
106
120
  assert_equal "CA", res.state
@@ -115,7 +129,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
115
129
 
116
130
  def test_google_suggested_bounds
117
131
  VCR.use_cassette('google_full') do
118
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@full_address_short_zip)}"
132
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@full_address_short_zip)}"
119
133
  TestHelper.expects(:last_url).with(url)
120
134
  res = Geokit::Geocoders::GoogleGeocoder.geocode(@google_full_loc)
121
135
  assert_instance_of Geokit::Bounds, res.suggested_bounds
@@ -129,21 +143,21 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
129
143
  Geokit::LatLng.new(33.7036917, -118.6681759),
130
144
  Geokit::LatLng.new(34.3373061, -118.1552891)
131
145
  )
132
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=Winnetka&bounds=33.7036917%2C-118.6681759%7C34.3373061%2C-118.1552891"
146
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=Winnetka&bounds=33.7036917%2C-118.6681759%7C34.3373061%2C-118.1552891"
133
147
  Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url)
134
148
  Geokit::Geocoders::GoogleGeocoder.geocode('Winnetka', :bias => bounds)
135
149
  end
136
150
 
137
151
  def test_service_unavailable
138
152
  response = MockFailure.new
139
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
153
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector::url_escape(@address)}"
140
154
  Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
141
155
  assert !Geokit::Geocoders::GoogleGeocoder.geocode(@google_city_loc).success
142
156
  end
143
157
 
144
158
  def test_multiple_results
145
159
  VCR.use_cassette('google_multi') do
146
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector.url_escape('via Sandro Pertini 8, Ossona, MI')}"
160
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector.url_escape('via Sandro Pertini 8, Ossona, MI')}"
147
161
  TestHelper.expects(:last_url).with(url)
148
162
  res=Geokit::Geocoders::GoogleGeocoder.geocode('via Sandro Pertini 8, Ossona, MI')
149
163
  assert_equal 5, res.all.size
@@ -171,7 +185,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
171
185
  VCR.use_cassette('google_reverse_madrid') do
172
186
  madrid = Geokit::GeoLoc.new
173
187
  madrid.lat, madrid.lng = "40.4167413", "-3.7032498"
174
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&latlng=#{Geokit::Inflector::url_escape(madrid.ll)}"
188
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&latlng=#{Geokit::Inflector::url_escape(madrid.ll)}"
175
189
  TestHelper.expects(:last_url).with(url)
176
190
  res=Geokit::Geocoders::GoogleGeocoder.do_reverse_geocode(madrid.ll)
177
191
 
@@ -191,7 +205,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
191
205
 
192
206
  def test_reverse_geocode_language
193
207
  VCR.use_cassette('google_reverse_madrid_es') do
194
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&latlng=40.416%2C-3.703&language=es"
208
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&latlng=40.416%2C-3.703&language=es"
195
209
  TestHelper.expects(:last_url).with(url)
196
210
  language_result = Geokit::Geocoders::GoogleGeocoder.reverse_geocode('40.416,-3.703', :language => 'es')
197
211
 
@@ -202,7 +216,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
202
216
 
203
217
  def test_country_code_biasing
204
218
  VCR.use_cassette('google_country_code_biased_result') do
205
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=Syracuse&region=it"
219
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=Syracuse&region=it"
206
220
  TestHelper.expects(:last_url).with(url)
207
221
  biased_result = Geokit::Geocoders::GoogleGeocoder.geocode('Syracuse', :bias => 'it')
208
222
 
@@ -213,7 +227,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
213
227
 
214
228
  def test_language_response
215
229
  VCR.use_cassette('google_language_response_fr') do
216
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=Hanoi&language=FR"
230
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=Hanoi&language=FR"
217
231
  TestHelper.expects(:last_url).with(url)
218
232
  language_result = Geokit::Geocoders::GoogleGeocoder.geocode('Hanoi', :language => 'FR')
219
233
 
@@ -225,7 +239,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
225
239
  def test_too_many_queries
226
240
  response = MockSuccess.new
227
241
  response.expects(:body).returns %q/{"status": "OVER_QUERY_LIMIT"}/
228
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector.url_escape(@address)}"
242
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector.url_escape(@address)}"
229
243
  Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
230
244
  assert_raise Geokit::Geocoders::TooManyQueriesError do
231
245
  res=Geokit::Geocoders::GoogleGeocoder.geocode(@address)
@@ -235,7 +249,7 @@ class GoogleGeocoderTest < BaseGeocoderTest #:nodoc: all
235
249
  def test_invalid_request
236
250
  response = MockSuccess.new
237
251
  response.expects(:body).returns %q/{"results" : [], "status" : "INVALID_REQUEST"}/
238
- url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector.url_escape("3961 V\u00EDa Marisol")}"
252
+ url = "https://maps.google.com/maps/api/geocode/json?sensor=false&address=#{Geokit::Inflector.url_escape("3961 V\u00EDa Marisol")}"
239
253
  Geokit::Geocoders::GoogleGeocoder.expects(:call_geocoder_service).with(url).returns(response)
240
254
  assert_raise Geokit::Geocoders::GeocodeError do
241
255
  Geokit::Geocoders::GoogleGeocoder.geocode("3961 V\u00EDa Marisol")