geokit 1.8.4 → 1.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -216,4 +216,22 @@ class LatLngTest < Test::Unit::TestCase #:nodoc: all
216
216
  assert_equal "Porscheplatz 1, 45127 Essen, Deutschland", res.full_address #slightly different from yahoo
217
217
  assert_equal "google", res.provider
218
218
  end
219
+
220
+ def test_to_dms
221
+ point = Geokit::LatLng.new(41.957254, -87.660333)
222
+
223
+ dms = point.lat_dms
224
+ assert_kind_of Array, dms
225
+ assert_equal 3, dms.length
226
+ assert_kind_of Numeric, dms.length
227
+ assert_equal [41, 57], dms[0, 2]
228
+ assert_equal 26, dms[2].round
229
+
230
+ dms = point.lng_dms
231
+ assert_kind_of Array, dms
232
+ assert_equal 3, dms.length
233
+ assert_kind_of Numeric, dms.length
234
+ assert_equal [-87, 39], dms[0, 2]
235
+ assert_equal 37, dms[2].round
236
+ end
219
237
  end
@@ -0,0 +1,56 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class MapQuestGeocoderTest < BaseGeocoderTest #:nodoc: all
4
+
5
+ def setup
6
+ super
7
+ @full_address = '100 Spear St Apt. 5, San Francisco, CA, 94105-1522, US'
8
+ @google_full_hash = {:street_address=>"100 Spear St Apt. 5", :city=>"San Francisco", :state=>"CA", :zip=>"94105", :country_code=>"US"}
9
+ @google_city_hash = {:city=>"San Francisco", :state=>"CA"}
10
+
11
+ @google_full_loc = Geokit::GeoLoc.new(@google_full_hash)
12
+ @google_city_loc = Geokit::GeoLoc.new(@google_city_hash)
13
+ end
14
+
15
+
16
+ def test_map_quest_full_address_with_geo_loc
17
+ VCR.use_cassette('map_quest_full') do
18
+ key = 'Fmjtd%7Cluur2d0125%2C2s%3Do5-9a8lhz'
19
+ Geokit::Geocoders::MapQuestGeocoder.key =key
20
+ url = "https://www.mapquestapi.com/geocoding/v1/address?key=#{key}&location=100+Spear+St+Apt.+5%2C+San+Francisco%2C+CA%2C+94105%2C+US"
21
+ TestHelper.expects(:last_url).with(url)
22
+ res=Geokit::Geocoders::MapQuestGeocoder.geocode(@google_full_loc)
23
+ assert_equal "CA", res.state
24
+ assert_equal "San Francisco", res.city
25
+ assert_array_in_delta [37.7921509, -122.394], res.to_a # slightly dif from yahoo
26
+ assert res.is_us?
27
+ assert_equal "100 Spear St, Apt 5, San Francisco, CA, 94105-1500, US", res.full_address #slightly different from yahoo
28
+ assert_equal "map_quest", res.provider
29
+ end
30
+ end
31
+
32
+
33
+ def test_reverse_geocode
34
+ VCR.use_cassette('map_quest_reverse_madrid') do
35
+ madrid = Geokit::GeoLoc.new
36
+ madrid.lat, madrid.lng = "40.4167413", "-3.7032498"
37
+ key = 'Fmjtd%7Cluur2d0125%2C2s%3Do5-9a8lhz'
38
+ Geokit::Geocoders::MapQuestGeocoder.key =key
39
+ url = "https://www.mapquestapi.com/geocoding/v1/reverse?key=#{key}&location=#{madrid.lat},#{madrid.lng}"
40
+ TestHelper.expects(:last_url).with(url)
41
+ res=Geokit::Geocoders::MapQuestGeocoder.do_reverse_geocode(madrid.ll)
42
+
43
+ assert_equal madrid.lat.to_s.slice(1..5), res.lat.to_s.slice(1..5)
44
+ assert_equal madrid.lng.to_s.slice(1..5), res.lng.to_s.slice(1..5)
45
+ assert_equal "ES", res.country_code
46
+ assert_equal "map_quest", res.provider
47
+
48
+ assert_equal "Madrid", res.city
49
+ assert_equal "Comunidad de Madrid", res.state
50
+
51
+ assert_equal nil, res.country
52
+ assert_equal "28014", res.zip
53
+ assert_equal true, res.success
54
+ end
55
+ end
56
+ end
@@ -92,4 +92,11 @@ class MultiGeocoderTest < BaseGeocoderTest #:nodoc: all
92
92
  assert_equal @failure, Geokit::Geocoders::MultiGeocoder.reverse_geocode("")
93
93
  Geokit::Geocoders.provider_order = t1 # reset to orig values
94
94
  end
95
+
96
+ def test_custom_provider_order
97
+ Geokit::Geocoders::YahooGeocoder.expects(:geocode).with(@address, {}).returns(@success)
98
+ Geokit::Geocoders::GoogleGeocoder.expects(:geocode).never
99
+ Geokit::Geocoders::UsGeocoder.expects(:geocode).never
100
+ assert_equal @success, Geokit::Geocoders::MultiGeocoder.geocode(@address, :provider_order => [:yahoo, :google, :us])
101
+ end
95
102
  end
@@ -11,25 +11,32 @@ class RipeGeocoderTest < BaseGeocoderTest #:nodoc: all
11
11
  assert_equal expected_url, TestHelper.get_last_url.gsub(/&oauth_[a-z_]+=[a-zA-Z0-9\-. %]+/, '').gsub('%20', '+')
12
12
  end
13
13
 
14
+ def test_45
15
+ VCR.use_cassette('ripe_geocode_45') do
16
+ res = Geokit::Geocoders::RipeGeocoder.geocode('45.45.45.45')
17
+ assert !res.success
18
+ end
19
+ end
20
+
14
21
  def test_ripe_geocode
15
22
  VCR.use_cassette('ripe_geocode') do
16
- url = "http://stat.ripe.net/data/geoloc/data.json?resource=#{@ip}"
17
- res = Geokit::Geocoders::RipeGeocoder.geocode(@ip)
18
- assert_url url
19
- assert_equal res.city, 'Mountain View'
20
- assert_equal res.state, 'CA'
21
- assert_equal res.country_code, 'US'
23
+ url = "http://stat.ripe.net/data/geoloc/data.json?resource=#{@ip}"
24
+ res = Geokit::Geocoders::RipeGeocoder.geocode(@ip)
25
+ assert_url url
26
+ assert_equal res.city, 'Mountain View'
27
+ assert_equal res.state, 'CA'
28
+ assert_equal res.country_code, 'US'
22
29
  end
23
30
  end
24
31
 
25
32
  def test_ripe_geocode_au
26
33
  VCR.use_cassette('ripe_geocode_au') do
27
- url = "http://stat.ripe.net/data/geoloc/data.json?resource=#{@ip_au}"
28
- res = Geokit::Geocoders::RipeGeocoder.geocode(@ip_au)
29
- assert_url url
30
- assert_equal res.city, 'Adelaide'
31
- assert_equal res.state, nil
32
- assert_equal res.country_code, 'AU'
34
+ url = "http://stat.ripe.net/data/geoloc/data.json?resource=#{@ip_au}"
35
+ res = Geokit::Geocoders::RipeGeocoder.geocode(@ip_au)
36
+ assert_url url
37
+ assert_equal res.city, 'Adelaide'
38
+ assert_equal res.state, nil
39
+ assert_equal res.country_code, 'AU'
33
40
  end
34
41
  end
35
42
  end
@@ -19,7 +19,7 @@ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
19
19
  # the testing methods themselves
20
20
  def test_yahoo_full_address
21
21
  VCR.use_cassette('yahoo_full') do
22
- url = "http://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@full_address)}"
22
+ url = "https://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@full_address)}"
23
23
  do_full_address_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@full_address))
24
24
  assert_yahoo_url url
25
25
  end
@@ -27,7 +27,7 @@ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
27
27
 
28
28
  def test_yahoo_full_address_accuracy
29
29
  VCR.use_cassette('yahoo_full') do
30
- url = "http://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@full_address)}"
30
+ url = "https://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@full_address)}"
31
31
  res = Geokit::Geocoders::YahooGeocoder.geocode(@full_address)
32
32
  assert_yahoo_url url
33
33
  assert_equal 8, res.accuracy
@@ -36,7 +36,7 @@ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
36
36
 
37
37
  def test_yahoo_full_address_with_geo_loc
38
38
  VCR.use_cassette('yahoo_full') do
39
- url = "http://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@full_address)}"
39
+ url = "https://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@full_address)}"
40
40
  do_full_address_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@yahoo_full_loc))
41
41
  assert_yahoo_url url
42
42
  end
@@ -44,7 +44,7 @@ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
44
44
 
45
45
  def test_yahoo_city
46
46
  VCR.use_cassette('yahoo_city') do
47
- url = "http://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@address)}"
47
+ url = "https://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@address)}"
48
48
  do_city_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@address))
49
49
  assert_yahoo_url url
50
50
  end
@@ -52,7 +52,7 @@ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
52
52
 
53
53
  def test_yahoo_city_accuracy
54
54
  VCR.use_cassette('yahoo_city') do
55
- url = "http://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@address)}"
55
+ url = "https://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@address)}"
56
56
  res = Geokit::Geocoders::YahooGeocoder.geocode(@address)
57
57
  assert_yahoo_url url
58
58
  assert_equal 4, res.accuracy
@@ -61,7 +61,7 @@ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
61
61
 
62
62
  def test_yahoo_city_with_geo_loc
63
63
  VCR.use_cassette('yahoo_city') do
64
- url = "http://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@address)}"
64
+ url = "https://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(@address)}"
65
65
  do_city_assertions(Geokit::Geocoders::YahooGeocoder.geocode(@yahoo_city_loc))
66
66
  assert_yahoo_url url
67
67
  end
@@ -73,7 +73,7 @@ class YahooGeocoderTest < BaseGeocoderTest #:nodoc: all
73
73
  no_results_full_loc = Geokit::GeoLoc.new(no_results_full_hash)
74
74
 
75
75
  VCR.use_cassette('yahoo_no_results') do
76
- url = "http://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(no_results_address)}"
76
+ url = "https://yboss.yahooapis.com/geo/placefinder?flags=J&q=#{Geokit::Inflector.url_escape(no_results_address)}"
77
77
  result = Geokit::Geocoders::YahooGeocoder.geocode(no_results_address)
78
78
  assert_yahoo_url url
79
79
  assert_equal ",", result.ll
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geokit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.4
4
+ version: 1.8.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-01-12 00:00:00.000000000 Z
15
+ date: 2014-06-03 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: multi_json
@@ -190,12 +190,14 @@ files:
190
190
  - MIT-LICENSE
191
191
  - README.markdown
192
192
  - Rakefile
193
+ - fixtures/vcr_cassettes/bing_au.yml
193
194
  - fixtures/vcr_cassettes/bing_full.yml
194
195
  - fixtures/vcr_cassettes/bing_full_au.yml
195
196
  - fixtures/vcr_cassettes/bing_full_de.yml
196
197
  - fixtures/vcr_cassettes/fcc_reverse_geocode.yml
197
198
  - fixtures/vcr_cassettes/free_geo_ip_geocode.yml
198
199
  - fixtures/vcr_cassettes/geo_plugin_geocode.yml
200
+ - fixtures/vcr_cassettes/geocodio_geocode.yml
199
201
  - fixtures/vcr_cassettes/geonames_geocode.yml
200
202
  - fixtures/vcr_cassettes/google_city.yml
201
203
  - fixtures/vcr_cassettes/google_country_code_biased_result.yml
@@ -205,7 +207,10 @@ files:
205
207
  - fixtures/vcr_cassettes/google_multi.yml
206
208
  - fixtures/vcr_cassettes/google_reverse_madrid.yml
207
209
  - fixtures/vcr_cassettes/google_reverse_madrid_es.yml
210
+ - fixtures/vcr_cassettes/map_quest_full.yml
211
+ - fixtures/vcr_cassettes/map_quest_reverse_madrid.yml
208
212
  - fixtures/vcr_cassettes/ripe_geocode.yml
213
+ - fixtures/vcr_cassettes/ripe_geocode_45.yml
209
214
  - fixtures/vcr_cassettes/ripe_geocode_au.yml
210
215
  - fixtures/vcr_cassettes/yahoo_city.yml
211
216
  - fixtures/vcr_cassettes/yahoo_full.yml
@@ -222,6 +227,7 @@ files:
222
227
  - lib/geokit/geocoders/fcc.rb
223
228
  - lib/geokit/geocoders/free_geo_ip.rb
224
229
  - lib/geokit/geocoders/geo_plugin.rb
230
+ - lib/geokit/geocoders/geocodio.rb
225
231
  - lib/geokit/geocoders/geonames.rb
226
232
  - lib/geokit/geocoders/google.rb
227
233
  - lib/geokit/geocoders/ip.rb
@@ -248,12 +254,14 @@ files:
248
254
  - test/test_fcc_geocoder.rb
249
255
  - test/test_free_geo_ip_geocoder.rb
250
256
  - test/test_geo_plugin_geocoder.rb
257
+ - test/test_geocodio_geocoder.rb
251
258
  - test/test_geoloc.rb
252
259
  - test/test_geonames_geocoder.rb
253
260
  - test/test_google_geocoder.rb
254
261
  - test/test_inflector.rb
255
262
  - test/test_ipgeocoder.rb
256
263
  - test/test_latlng.rb
264
+ - test/test_map_quest.rb
257
265
  - test/test_mappable.rb
258
266
  - test/test_maxmind_geocoder.rb
259
267
  - test/test_multi_geocoder.rb
@@ -280,18 +288,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
280
288
  - - ! '>='
281
289
  - !ruby/object:Gem::Version
282
290
  version: '0'
283
- segments:
284
- - 0
285
- hash: -1117828600571501675
286
291
  required_rubygems_version: !ruby/object:Gem::Requirement
287
292
  none: false
288
293
  requirements:
289
294
  - - ! '>='
290
295
  - !ruby/object:Gem::Version
291
296
  version: '0'
292
- segments:
293
- - 0
294
- hash: -1117828600571501675
295
297
  requirements: []
296
298
  rubyforge_project:
297
299
  rubygems_version: 1.8.25
@@ -307,12 +309,14 @@ test_files:
307
309
  - test/test_fcc_geocoder.rb
308
310
  - test/test_free_geo_ip_geocoder.rb
309
311
  - test/test_geo_plugin_geocoder.rb
312
+ - test/test_geocodio_geocoder.rb
310
313
  - test/test_geoloc.rb
311
314
  - test/test_geonames_geocoder.rb
312
315
  - test/test_google_geocoder.rb
313
316
  - test/test_inflector.rb
314
317
  - test/test_ipgeocoder.rb
315
318
  - test/test_latlng.rb
319
+ - test/test_map_quest.rb
316
320
  - test/test_mappable.rb
317
321
  - test/test_maxmind_geocoder.rb
318
322
  - test/test_multi_geocoder.rb