geokit 1.7.1 → 1.8.0

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 (78) hide show
  1. checksums.yaml +6 -14
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +11 -0
  4. data/Gemfile +2 -1
  5. data/MIT-LICENSE +20 -0
  6. data/README.markdown +44 -39
  7. data/Rakefile +15 -0
  8. data/fixtures/vcr_cassettes/bing_full.yml +102 -0
  9. data/fixtures/vcr_cassettes/bing_full_au.yml +91 -0
  10. data/fixtures/vcr_cassettes/bing_full_de.yml +91 -0
  11. data/fixtures/vcr_cassettes/fcc_reverse_geocode.yml +37 -0
  12. data/fixtures/vcr_cassettes/free_geo_ip_geocode.yml +36 -0
  13. data/fixtures/vcr_cassettes/geo_plugin_geocode.yml +38 -0
  14. data/fixtures/vcr_cassettes/geonames_geocode.yml +304 -0
  15. data/fixtures/vcr_cassettes/{google3_city.yml → google_city.yml} +0 -0
  16. data/fixtures/vcr_cassettes/{google3_country_code_biased_result.yml → google_country_code_biased_result.yml} +0 -0
  17. data/fixtures/vcr_cassettes/{google3_full.yml → google_full.yml} +0 -0
  18. data/fixtures/vcr_cassettes/{google3_full_short.yml → google_full_short.yml} +0 -0
  19. data/fixtures/vcr_cassettes/{google3_language_response_fr.yml → google_language_response_fr.yml} +0 -0
  20. data/fixtures/vcr_cassettes/{google3_multi.yml → google_multi.yml} +0 -0
  21. data/fixtures/vcr_cassettes/{google3_reverse_madrid.yml → google_reverse_madrid.yml} +0 -0
  22. data/fixtures/vcr_cassettes/ripe_geocode.yml +66 -0
  23. data/fixtures/vcr_cassettes/ripe_geocode_au.yml +66 -0
  24. data/geokit.gemspec +1 -1
  25. data/lib/geokit.rb +5 -0
  26. data/lib/geokit/bounds.rb +96 -0
  27. data/lib/geokit/core_ext.rb +17 -0
  28. data/lib/geokit/geo_loc.rb +134 -0
  29. data/lib/geokit/geocoders.rb +48 -35
  30. data/lib/geokit/geocoders/base_ip.rb +43 -0
  31. data/lib/geokit/geocoders/bing.rb +101 -0
  32. data/lib/geokit/geocoders/ca_geocoder.rb +50 -0
  33. data/lib/geokit/{services → geocoders}/fcc.rb +17 -20
  34. data/lib/geokit/geocoders/free_geo_ip.rb +34 -0
  35. data/lib/geokit/geocoders/geo_plugin.rb +33 -0
  36. data/lib/geokit/geocoders/geonames.rb +53 -0
  37. data/lib/geokit/{services/google3.rb → geocoders/google.rb} +59 -57
  38. data/lib/geokit/geocoders/ip.rb +69 -0
  39. data/lib/geokit/geocoders/mapquest.rb +72 -0
  40. data/lib/geokit/geocoders/maxmind.rb +29 -0
  41. data/lib/geokit/geocoders/openstreetmap.rb +119 -0
  42. data/lib/geokit/geocoders/ripe.rb +41 -0
  43. data/lib/geokit/{services → geocoders}/us_geocoder.rb +15 -20
  44. data/lib/geokit/{services → geocoders}/yahoo.rb +52 -55
  45. data/lib/geokit/geocoders/yandex.rb +61 -0
  46. data/lib/geokit/inflectors.rb +1 -2
  47. data/lib/geokit/lat_lng.rb +129 -0
  48. data/lib/geokit/mappable.rb +41 -424
  49. data/lib/geokit/multi_geocoder.rb +6 -2
  50. data/lib/geokit/polygon.rb +46 -0
  51. data/lib/geokit/version.rb +1 -1
  52. data/test/helper.rb +2 -12
  53. data/test/test_base_geocoder.rb +0 -10
  54. data/test/test_bing_geocoder.rb +60 -0
  55. data/test/test_fcc_geocoder.rb +23 -0
  56. data/test/test_free_geo_ip_geocoder.rb +23 -0
  57. data/test/test_geo_plugin_geocoder.rb +23 -0
  58. data/test/test_geonames_geocoder.rb +23 -0
  59. data/test/test_google_geocoder.rb +208 -235
  60. data/test/test_maxmind_geocoder.rb +35 -4
  61. data/test/test_multi_geocoder.rb +3 -1
  62. data/test/test_ripe_geocoder.rb +35 -0
  63. data/test/test_yahoo_geocoder.rb +0 -12
  64. metadata +78 -52
  65. data/LICENSE +0 -25
  66. data/Manifest.txt +0 -21
  67. data/data/GeoLiteCity.dat +0 -0
  68. data/lib/geokit/services/ca_geocoder.rb +0 -55
  69. data/lib/geokit/services/geo_plugin.rb +0 -31
  70. data/lib/geokit/services/geonames.rb +0 -53
  71. data/lib/geokit/services/google.rb +0 -158
  72. data/lib/geokit/services/ip.rb +0 -103
  73. data/lib/geokit/services/maxmind.rb +0 -39
  74. data/lib/geokit/services/openstreetmap.rb +0 -119
  75. data/lib/geokit/services/ripe.rb +0 -32
  76. data/lib/geokit/services/yandex.rb +0 -51
  77. data/test/test_google_geocoder3.rb +0 -238
  78. data/test/test_google_reverse_geocoder.rb +0 -49
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MWVmODZiMjVhMTFlZjYwNGViY2EzYTBjNWQwMjMyNmE0MWRkMTMwZA==
5
- data.tar.gz: !binary |-
6
- YTc2ZmM1N2FkOGM0OTM3ODU1ZWE5ZjQ0NjAxMjdhMDRiM2NkZGY3NA==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- Njg0YTQwYzRmMTIxZDhiYWVjMDJhZDI0M2UxNjYyNGNjZDc0NzI0NzNhMjcx
10
- MTJkYjlhMmEyMzc3MDQwODIyZTIxOGE3NTkwOWVkOTgzMmU0YzgzYmU2ZDhi
11
- Y2UwNDhhODM0NjkyODhjOGFjMTcwMTEyOTgxZDg1YjM4ZGYzN2Y=
12
- data.tar.gz: !binary |-
13
- OWYwOGNjZTRmYjJhODg0NzMxMWQ2MDg2Y2UyMGUxMGNlYzU2YmU0YzJjNTk3
14
- YzdhM2JmMjYwMWIzZGU0ZWE3NDU0YWEyMWI3ZTQ2M2U4ZjRlNGE5NzEzY2M0
15
- N2Y1NDNiMzA2NjZlOGM3MTg0ZDk5YTM3ZWI0YTQwZjQ4NjFlY2E=
2
+ SHA1:
3
+ metadata.gz: 964d3db61abcfa9bbe2d95d74cfbd6dff9455184
4
+ data.tar.gz: ac8c3ac65b9f0348f92a482ccd216d4b9e6e3a5a
5
+ SHA512:
6
+ metadata.gz: a7ad5b2491c7bd77d6704fd9e50c35d8860c013ee0e11e41f4e6e5d039a417166f664784e4895dca3fc876e748b91f17a0402d3be5ea66227270f52891d0ddf3
7
+ data.tar.gz: b88419201129e2cfb85ddd5301414cdb76cc69079895206e78a225a149e51f6dadb71ddc0ca032e95bfb64f257856dcb5858659b2cbe671f31e5400c20622a5f
data/.travis.yml CHANGED
@@ -5,6 +5,7 @@ rvm:
5
5
  - 1.9.2
6
6
  - 1.9.3
7
7
  - 2.0.0
8
+ - 2.1.0
8
9
  script: "bundle exec rake coverage"
9
10
  before_install:
10
11
  - gem install bundler
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## 1.8.0
2
+
3
+ * Added Bing Geocoder
4
+ * Added freegeoip.net Geocoder
5
+ * Added MapQuest Geocoder
6
+ * Remove Google (v2) Geocoder and rename Google3 (v3) to Google
7
+ * Added tests for various gateways
8
+ * Greatly standarize, simplify and improve code
9
+ * Reorganise files
10
+ * MaxMind bug fixes
11
+
1
12
  ## 1.7.1
2
13
 
3
14
  * Remove geoip require from MaxMind to avoid new dependency issues
data/Gemfile CHANGED
@@ -1,7 +1,8 @@
1
- source "http://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in geokit.gemspec
4
4
  gemspec
5
5
 
6
+ gem 'pry', :platforms => :ruby_19
6
7
  gem 'mime-types', '< 2.0', :platforms => :ruby_18
7
8
  gem 'geoip' # for testing - only required for max_mind
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Michael Noack, James Cox, Bill Eisenhauer & Andre Lewis
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.markdown CHANGED
@@ -3,7 +3,7 @@ Geokit
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/geokit.png)](http://badge.fury.io/rb/geokit)
5
5
  [![Build Status](https://travis-ci.org/geokit/geokit.png?branch=master)](https://travis-ci.org/geokit/geokit)
6
- [![Coverage Status](https://coveralls.io/repos/geokit/geokit-rails3/badge.png)](https://coveralls.io/r/geokit/geokit)
6
+ [![Coverage Status](https://coveralls.io/repos/geokit/geokit/badge.png)](https://coveralls.io/r/geokit/geokit)
7
7
  [![Dependency Status](https://gemnasium.com/geokit/geokit.png)](https://gemnasium.com/geokit/geokit)
8
8
  [![Code Climate](https://codeclimate.com/github/geokit/geokit.png)](https://codeclimate.com/github/geokit/geokit)
9
9
 
@@ -17,25 +17,55 @@ The Geokit gem provides:
17
17
  * Rectangular bounds calculations: is a point within a given rectangular bounds?
18
18
  * Heading and midpoint calculations
19
19
 
20
- Combine this gem with the [geokit-rails plugin](http://github.com/geokit/geokit-rails) to get location-based finders for your Rails app.
20
+ Combine this gem with the [geokit-rails](http://github.com/geokit/geokit-rails) to get location-based finders for your Rails app.
21
21
 
22
22
  * Repository at Github: [http://github.com/geokit/geokit](http://github.com/geokit/geokit).
23
23
  * RDoc pages: [http://rdoc.info/github/geokit/geokit/master/frames](http://rdoc.info/github/geokit/geokit/master/frames)
24
- * Follow the Google Group for updates and discussion on Geokit: [http://groups.google.com/group/geokit](http://groups.google.com/group/geokit)
24
+
25
+ ## COMMUNICATION
26
+
27
+ * If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/geokit). (Tag 'geokit' and we'll be alerted)
28
+ * If you **found a bug**, use GitHub issues.
29
+ * If you **have an idea**, use GitHub issues.
30
+ * If you'd like to **ask a general question**, use GitHub issues.
31
+ * If you **want to contribute**, submit a pull request.
25
32
 
26
33
  ## INSTALL
27
34
 
28
35
  gem install geokit
29
36
 
37
+ ## SUPPORTED GEOCODERS
38
+
39
+ ### "regular" address geocoders
40
+ * Yahoo BOSS - requires an API key.
41
+ * Geocoder.us - may require authentication if performing more than the free request limit.
42
+ * Geocoder.ca - for Canada; may require authentication as well.
43
+ * Geonames - a free geocoder
44
+ * Bing
45
+ * Yandex
46
+ * MapQuest
47
+
48
+ ### address geocoders that also provide reverse geocoding
49
+ * Google - requires an API key. Also supports multiple results and bounding box/country code biasing.
50
+ * FCC
51
+ * Open Street Map
52
+
53
+ ### IP address geocoders
54
+ * IP - geocodes an IP address using hostip.info's web service.
55
+ * Geoplugin.net -- another IP address geocoder
56
+ * RIPE
57
+ * MaxMind
58
+ * freegeoip.net
59
+
30
60
  ## QUICK START
31
61
 
32
62
  ```ruby
33
63
  irb> require 'rubygems'
34
64
  irb> require 'geokit'
35
- irb> a=Geokit::Geocoders::YahooGeocoder.geocode '140 Market St, San Francisco, CA'
65
+ irb> a=Geokit::Geocoders::GoogleGeocoder.geocode '140 Market St, San Francisco, CA'
36
66
  irb> a.ll
37
67
  => 37.79363,-122.396116
38
- irb> b=Geokit::Geocoders::YahooGeocoder.geocode '789 Geary St, San Francisco, CA'
68
+ irb> b=Geokit::Geocoders::GoogleGeocoder.geocode '789 Geary St, San Francisco, CA'
39
69
  irb> b.ll
40
70
  => 37.786217,-122.41619
41
71
  irb> a.distance_to(b)
@@ -68,24 +98,23 @@ If you're using this gem by itself, here are the configuration options:
68
98
  # is in seconds.
69
99
  Geokit::Geocoders::request_timeout = 3
70
100
 
71
- # These settings are used if web service calls must be routed through a proxy.
72
- # These setting can be nil if not needed, otherwise, addr and port must be
101
+ # This setting can be used if web service calls must be routed through a proxy.
102
+ # These setting can be nil if not needed, otherwise, a valid URI must be
73
103
  # filled in at a minimum. If the proxy requires authentication, the username
74
104
  # and password can be provided as well.
75
- Geokit::Geocoders::proxy_addr = nil
76
- Geokit::Geocoders::proxy_port = nil
77
- Geokit::Geocoders::proxy_user = nil
78
- Geokit::Geocoders::proxy_pass = nil
105
+ Geokit::Geocoders::proxy = 'https://user:password@host:port'
79
106
 
80
107
  # This is your yahoo application key for the Yahoo Geocoder.
81
108
  # See http://developer.yahoo.com/faq/index.html#appid
82
109
  # and http://developer.yahoo.com/maps/rest/V1/geocode.html
83
110
  Geokit::Geocoders::yahoo = 'REPLACE_WITH_YOUR_YAHOO_KEY'
84
111
 
85
- # This is your Google Maps geocoder key.
112
+ # This is your Google Maps geocoder keys (all optional).
86
113
  # See http://www.google.com/apis/maps/signup.html
87
114
  # and http://www.google.com/apis/maps/documentation/#Geocoding_Examples
88
- Geokit::Geocoders::google = 'REPLACE_WITH_YOUR_GOOGLE_KEY'
115
+ Geokit::Geocoders::google_client_id = ''
116
+ Geokit::Geocoders::google_cryptographic_key = ''
117
+ Geokit::Geocoders::google_channel = ''
89
118
 
90
119
  # You can also set multiple API KEYS for different domains that may be directed to this same application.
91
120
  # The domain from which the current user is being directed will automatically be updated for Geokit via
@@ -125,24 +154,6 @@ If you're using this gem by itself, here are the configuration options:
125
154
  # Geokit::Geocoders::ip_provider_order = [:external,:geo_plugin,:ip]
126
155
  ```
127
156
 
128
- If you're using this gem with the [geokit-rails plugin](http://github.com/geokit/geokit-rails), the plugin
129
- creates a template with these settings and places it in `config/initializers/geokit_config.rb`.
130
-
131
- ## SUPPORTED GEOCODERS
132
-
133
- ### "regular" address geocoders
134
- * Yahoo Geocoder - requires an API key.
135
- * Geocoder.us - may require authentication if performing more than the free request limit.
136
- * Geocoder.ca - for Canada; may require authentication as well.
137
- * Geonames - a free geocoder
138
-
139
- ### address geocoders that also provide reverse geocoding
140
- * Google Geocoder - requires an API key. Also supports multiple results and bounding box/country code biasing.
141
-
142
- ### IP address geocoders
143
- * IP Geocoder - geocodes an IP address using hostip.info's web service.
144
- * Geoplugin.net -- another IP address geocoder
145
-
146
157
  ### Google Geocoder Tricks
147
158
 
148
159
  The Google Geocoder sports a number of useful tricks that elevate it a little bit above the rest of the currently supported geocoders. For starters, it returns a `suggested_bounds` property for all your geocoded results, so you can more easily decide where and how to center a map on the places you geocode. Here's a quick example:
@@ -223,16 +234,15 @@ mappable.rb contains the Mappable module, which provides basic
223
234
  distance calculation methods, i.e., calculating the distance
224
235
  between two points.
225
236
 
226
- mappable.rb also contains LatLng, GeoLoc, and Bounds.
227
237
  LatLng is a simple container for latitude and longitude, but
228
238
  it's made more powerful by mixing in the above-mentioned Mappable
229
239
  module -- therefore, you can calculate easily the distance between two
230
240
  LatLng ojbects with `distance = first.distance_to(other)`
231
241
 
232
- GeoLoc (also in mappable.rb) represents an address or location which
242
+ GeoLoc represents an address or location which
233
243
  has been geocoded. You can get the city, zipcode, street address, etc.
234
244
  from a GeoLoc object. GeoLoc extends LatLng, so you also get lat/lng
235
- AND the Mappable modeule goodness for free.
245
+ AND the Mappable module goodness for free.
236
246
 
237
247
  geocoders.rb contains all the geocoder implemenations. All the gercoders
238
248
  inherit from a common base (class Geocoder) and implement the private method
@@ -269,8 +279,3 @@ You must then also require such extenal file back in your main geokit configurat
269
279
  end
270
280
  end
271
281
  ```
272
-
273
- ## GOOGLE GROUP
274
-
275
- Follow the Google Group for updates and discussion on Geokit: http://groups.google.com/group/geokit
276
-
data/Rakefile CHANGED
@@ -15,3 +15,18 @@ task :coverage do
15
15
  ENV['COVERAGE'] = 'true'
16
16
  Rake::Task['test'].invoke
17
17
  end
18
+
19
+ desc "Downloads GeoLiteCity.dat from maxmind.com"
20
+ task :download_geolitecity do
21
+ total_size = nil
22
+ url = 'http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz'
23
+ progress_cb = lambda {|size| print("Downloaded #{size} of #{total_size} bytes\r") if total_size }
24
+ length_cb = lambda {|content_length| total_size = content_length }
25
+ require 'open-uri'
26
+ File.open("/tmp/GeoLiteCity.dat.gz", "wb") do |f|
27
+ open(url, 'rb', :progress_proc => progress_cb, :content_length_proc => length_cb ) do |downloaded_file|
28
+ f.write(downloaded_file.read)
29
+ end
30
+ end
31
+ puts "\nDone."
32
+ end
@@ -0,0 +1,102 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://dev.virtualearth.net/REST/v1/Locations/100%20Spear%20St,%20San%20Francisco,%20CA,%2094105-1522,%20US?key=AuWcmtBIoPeOubm9BtcN44hTmWw_wNoJ5NEO2L0RaKrGAUE_nlwciKAqwapdq7k7&o=xml
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: !binary |-
18
+ T0s=
19
+ headers:
20
+ !binary "Q2FjaGUtQ29udHJvbA==":
21
+ - !binary |-
22
+ bm8tY2FjaGU=
23
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
24
+ - !binary |-
25
+ Y2h1bmtlZA==
26
+ !binary "Q29udGVudC1UeXBl":
27
+ - !binary |-
28
+ YXBwbGljYXRpb24veG1sOyBjaGFyc2V0PXV0Zi04
29
+ !binary "U2VydmVy":
30
+ - !binary |-
31
+ TWljcm9zb2Z0LUlJUy84LjA=
32
+ !binary "WC1CbS1UcmFjZWlk":
33
+ - !binary |-
34
+ NTU5ZWI3NGYxMWY4NDQyZjllN2VhNzJjMmI2OWU1YTM=
35
+ !binary "WC1CbS1TcnY=":
36
+ - !binary |-
37
+ U0lOTTAwMDAwOSwgU0lOTVNOVk0wMDAxNDUsIFNJTklQRVZNMDAwMDEw
38
+ !binary "WC1Ncy1CbS1Xcy1JbmZv":
39
+ - !binary |-
40
+ MA==
41
+ !binary "WC1Bc3BuZXQtVmVyc2lvbg==":
42
+ - !binary |-
43
+ NC4wLjMwMzE5
44
+ !binary "WC1Qb3dlcmVkLUJ5":
45
+ - !binary |-
46
+ QVNQLk5FVA==
47
+ !binary "RGF0ZQ==":
48
+ - !binary |-
49
+ U2F0LCAxNCBEZWMgMjAxMyAwNTo0MDo1MyBHTVQ=
50
+ body:
51
+ encoding: ASCII-8BIT
52
+ string: !binary |-
53
+ 77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48UmVz
54
+ cG9uc2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNj
55
+ aGVtYS1pbnN0YW5jZSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8y
56
+ MDAxL1hNTFNjaGVtYSIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29m
57
+ dC5jb20vc2VhcmNoL2xvY2FsL3dzL3Jlc3QvdjEiPjxDb3B5cmlnaHQ+Q29w
58
+ eXJpZ2h0IMKpIDIwMTMgTWljcm9zb2Z0IGFuZCBpdHMgc3VwcGxpZXJzLiBB
59
+ bGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIEFQSSBjYW5ub3QgYmUgYWNjZXNz
60
+ ZWQgYW5kIHRoZSBjb250ZW50IGFuZCBhbnkgcmVzdWx0cyBtYXkgbm90IGJl
61
+ IHVzZWQsIHJlcHJvZHVjZWQgb3IgdHJhbnNtaXR0ZWQgaW4gYW55IG1hbm5l
62
+ ciB3aXRob3V0IGV4cHJlc3Mgd3JpdHRlbiBwZXJtaXNzaW9uIGZyb20gTWlj
63
+ cm9zb2Z0IENvcnBvcmF0aW9uLjwvQ29weXJpZ2h0PjxCcmFuZExvZ29Vcmk+
64
+ aHR0cDovL2Rldi52aXJ0dWFsZWFydGgubmV0L0JyYW5kaW5nL2xvZ29fcG93
65
+ ZXJlZF9ieS5wbmc8L0JyYW5kTG9nb1VyaT48U3RhdHVzQ29kZT4yMDA8L1N0
66
+ YXR1c0NvZGU+PFN0YXR1c0Rlc2NyaXB0aW9uPk9LPC9TdGF0dXNEZXNjcmlw
67
+ dGlvbj48QXV0aGVudGljYXRpb25SZXN1bHRDb2RlPlZhbGlkQ3JlZGVudGlh
68
+ bHM8L0F1dGhlbnRpY2F0aW9uUmVzdWx0Q29kZT48VHJhY2VJZD41NTllYjc0
69
+ ZjExZjg0NDJmOWU3ZWE3MmMyYjY5ZTVhM3xTSU5NMDAwMDA5fDAyLjAwLjE4
70
+ My4yMzAwfFNJTk1TTlZNMDAwMTQ1LCBTSU5JUEVWTTAwMDAxMDwvVHJhY2VJ
71
+ ZD48UmVzb3VyY2VTZXRzPjxSZXNvdXJjZVNldD48RXN0aW1hdGVkVG90YWw+
72
+ MTwvRXN0aW1hdGVkVG90YWw+PFJlc291cmNlcz48TG9jYXRpb24+PE5hbWU+
73
+ MTAwIFNwZWFyIFN0LCBTYW4gRnJhbmNpc2NvLCBDQSA5NDEwNTwvTmFtZT48
74
+ UG9pbnQ+PExhdGl0dWRlPjM3Ljc5MjE1MjQwNDc4NTI8L0xhdGl0dWRlPjxM
75
+ b25naXR1ZGU+LTEyMi4zOTM5OTcxOTIzODM8L0xvbmdpdHVkZT48L1BvaW50
76
+ PjxCb3VuZGluZ0JveD48U291dGhMYXRpdHVkZT4zNy43ODgyODk2ODcyMTQ1
77
+ MjI8L1NvdXRoTGF0aXR1ZGU+PFdlc3RMb25naXR1ZGU+LTEyMi40MDA1MTQy
78
+ MzQ5MjYzMjwvV2VzdExvbmdpdHVkZT48Tm9ydGhMYXRpdHVkZT4zNy43OTYw
79
+ MTUxMjIzNTU4NzU8L05vcnRoTGF0aXR1ZGU+PEVhc3RMb25naXR1ZGU+LTEy
80
+ Mi4zODc0ODAxNDk4Mzk2ODwvRWFzdExvbmdpdHVkZT48L0JvdW5kaW5nQm94
81
+ PjxFbnRpdHlUeXBlPkFkZHJlc3M8L0VudGl0eVR5cGU+PEFkZHJlc3M+PEFk
82
+ ZHJlc3NMaW5lPjEwMCBTcGVhciBTdDwvQWRkcmVzc0xpbmU+PEFkbWluRGlz
83
+ dHJpY3Q+Q0E8L0FkbWluRGlzdHJpY3Q+PEFkbWluRGlzdHJpY3QyPlNhbiBG
84
+ cmFuY2lzY28gQ28uPC9BZG1pbkRpc3RyaWN0Mj48Q291bnRyeVJlZ2lvbj5V
85
+ bml0ZWQgU3RhdGVzPC9Db3VudHJ5UmVnaW9uPjxGb3JtYXR0ZWRBZGRyZXNz
86
+ PjEwMCBTcGVhciBTdCwgU2FuIEZyYW5jaXNjbywgQ0EgOTQxMDU8L0Zvcm1h
87
+ dHRlZEFkZHJlc3M+PExvY2FsaXR5PlNhbiBGcmFuY2lzY288L0xvY2FsaXR5
88
+ PjxQb3N0YWxDb2RlPjk0MTA1PC9Qb3N0YWxDb2RlPjwvQWRkcmVzcz48Q29u
89
+ ZmlkZW5jZT5IaWdoPC9Db25maWRlbmNlPjxNYXRjaENvZGU+R29vZDwvTWF0
90
+ Y2hDb2RlPjxHZW9jb2RlUG9pbnQ+PExhdGl0dWRlPjM3Ljc5MjE1MjQwNDc4
91
+ NTI8L0xhdGl0dWRlPjxMb25naXR1ZGU+LTEyMi4zOTM5OTcxOTIzODM8L0xv
92
+ bmdpdHVkZT48Q2FsY3VsYXRpb25NZXRob2Q+UGFyY2VsPC9DYWxjdWxhdGlv
93
+ bk1ldGhvZD48VXNhZ2VUeXBlPkRpc3BsYXk8L1VzYWdlVHlwZT48L0dlb2Nv
94
+ ZGVQb2ludD48R2VvY29kZVBvaW50PjxMYXRpdHVkZT4zNy43OTIzNjIyMTMx
95
+ MzQ4PC9MYXRpdHVkZT48TG9uZ2l0dWRlPi0xMjIuMzkzODI5MzQ1NzAzPC9M
96
+ b25naXR1ZGU+PENhbGN1bGF0aW9uTWV0aG9kPkludGVycG9sYXRpb248L0Nh
97
+ bGN1bGF0aW9uTWV0aG9kPjxVc2FnZVR5cGU+Um91dGU8L1VzYWdlVHlwZT48
98
+ L0dlb2NvZGVQb2ludD48L0xvY2F0aW9uPjwvUmVzb3VyY2VzPjwvUmVzb3Vy
99
+ Y2VTZXQ+PC9SZXNvdXJjZVNldHM+PC9SZXNwb25zZT4=
100
+ http_version:
101
+ recorded_at: Sat, 14 Dec 2013 05:40:44 GMT
102
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,91 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://dev.virtualearth.net/REST/v1/Locations/440%20King%20William%20Street,%20Adelaide,%20Australia?key=AuWcmtBIoPeOubm9BtcN44hTmWw_wNoJ5NEO2L0RaKrGAUE_nlwciKAqwapdq7k7&o=xml
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Cache-Control:
20
+ - no-cache
21
+ Transfer-Encoding:
22
+ - chunked
23
+ Content-Type:
24
+ - application/xml; charset=utf-8
25
+ Server:
26
+ - Microsoft-IIS/8.0
27
+ X-Bm-Traceid:
28
+ - 2f00297848b04bf78f73efdb6c7b8c2b
29
+ X-Bm-Srv:
30
+ - SINM001003, SINMSNVM000034, SINMSNVM000039
31
+ X-Ms-Bm-Ws-Info:
32
+ - '0'
33
+ X-Aspnet-Version:
34
+ - 4.0.30319
35
+ X-Powered-By:
36
+ - ASP.NET
37
+ Date:
38
+ - Thu, 26 Dec 2013 09:48:30 GMT
39
+ body:
40
+ encoding: ASCII-8BIT
41
+ string: !binary |-
42
+ 77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48UmVz
43
+ cG9uc2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNj
44
+ aGVtYS1pbnN0YW5jZSIgeG1sbnM6eHNkPSJodHRwOi8vd3d3LnczLm9yZy8y
45
+ MDAxL1hNTFNjaGVtYSIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29m
46
+ dC5jb20vc2VhcmNoL2xvY2FsL3dzL3Jlc3QvdjEiPjxDb3B5cmlnaHQ+Q29w
47
+ eXJpZ2h0IMKpIDIwMTMgTWljcm9zb2Z0IGFuZCBpdHMgc3VwcGxpZXJzLiBB
48
+ bGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIEFQSSBjYW5ub3QgYmUgYWNjZXNz
49
+ ZWQgYW5kIHRoZSBjb250ZW50IGFuZCBhbnkgcmVzdWx0cyBtYXkgbm90IGJl
50
+ IHVzZWQsIHJlcHJvZHVjZWQgb3IgdHJhbnNtaXR0ZWQgaW4gYW55IG1hbm5l
51
+ ciB3aXRob3V0IGV4cHJlc3Mgd3JpdHRlbiBwZXJtaXNzaW9uIGZyb20gTWlj
52
+ cm9zb2Z0IENvcnBvcmF0aW9uLjwvQ29weXJpZ2h0PjxCcmFuZExvZ29Vcmk+
53
+ aHR0cDovL2Rldi52aXJ0dWFsZWFydGgubmV0L0JyYW5kaW5nL2xvZ29fcG93
54
+ ZXJlZF9ieS5wbmc8L0JyYW5kTG9nb1VyaT48U3RhdHVzQ29kZT4yMDA8L1N0
55
+ YXR1c0NvZGU+PFN0YXR1c0Rlc2NyaXB0aW9uPk9LPC9TdGF0dXNEZXNjcmlw
56
+ dGlvbj48QXV0aGVudGljYXRpb25SZXN1bHRDb2RlPlZhbGlkQ3JlZGVudGlh
57
+ bHM8L0F1dGhlbnRpY2F0aW9uUmVzdWx0Q29kZT48VHJhY2VJZD4yZjAwMjk3
58
+ ODQ4YjA0YmY3OGY3M2VmZGI2YzdiOGMyYnxTSU5NMDAxMDAzfDAyLjAwLjE4
59
+ My4yMzAwfFNJTk1TTlZNMDAwMDM0LCBTSU5NU05WTTAwMDAzOTwvVHJhY2VJ
60
+ ZD48UmVzb3VyY2VTZXRzPjxSZXNvdXJjZVNldD48RXN0aW1hdGVkVG90YWw+
61
+ MTwvRXN0aW1hdGVkVG90YWw+PFJlc291cmNlcz48TG9jYXRpb24+PE5hbWU+
62
+ NDAyLTQ0MCBLaW5nIFdpbGxpYW0gU3QsIEFkZWxhaWRlLCBTQSA1MDAwPC9O
63
+ YW1lPjxQb2ludD48TGF0aXR1ZGU+LTM0LjkzNDU4MjwvTGF0aXR1ZGU+PExv
64
+ bmdpdHVkZT4xMzguNjAwNzg0PC9Mb25naXR1ZGU+PC9Qb2ludD48Qm91bmRp
65
+ bmdCb3g+PFNvdXRoTGF0aXR1ZGU+LTM0LjkzODQ0NDcxNzU3MDY3NTwvU291
66
+ dGhMYXRpdHVkZT48V2VzdExvbmdpdHVkZT4xMzguNTk0NTAxOTcwOTYwOTU8
67
+ L1dlc3RMb25naXR1ZGU+PE5vcnRoTGF0aXR1ZGU+LTM0LjkzMDcxOTI4MjQy
68
+ OTMyMjwvTm9ydGhMYXRpdHVkZT48RWFzdExvbmdpdHVkZT4xMzguNjA3MDY2
69
+ MDI5MDM5MDY8L0Vhc3RMb25naXR1ZGU+PC9Cb3VuZGluZ0JveD48RW50aXR5
70
+ VHlwZT5BZGRyZXNzPC9FbnRpdHlUeXBlPjxBZGRyZXNzPjxBZGRyZXNzTGlu
71
+ ZT40MDItNDQwIEtpbmcgV2lsbGlhbSBTdDwvQWRkcmVzc0xpbmU+PEFkbWlu
72
+ RGlzdHJpY3Q+U0E8L0FkbWluRGlzdHJpY3Q+PENvdW50cnlSZWdpb24+QXVz
73
+ dHJhbGlhPC9Db3VudHJ5UmVnaW9uPjxGb3JtYXR0ZWRBZGRyZXNzPjQwMi00
74
+ NDAgS2luZyBXaWxsaWFtIFN0LCBBZGVsYWlkZSwgU0EgNTAwMDwvRm9ybWF0
75
+ dGVkQWRkcmVzcz48TG9jYWxpdHk+QWRlbGFpZGU8L0xvY2FsaXR5PjxQb3N0
76
+ YWxDb2RlPjUwMDA8L1Bvc3RhbENvZGU+PC9BZGRyZXNzPjxDb25maWRlbmNl
77
+ PkhpZ2g8L0NvbmZpZGVuY2U+PE1hdGNoQ29kZT5Hb29kPC9NYXRjaENvZGU+
78
+ PEdlb2NvZGVQb2ludD48TGF0aXR1ZGU+LTM0LjkzNDU4MjwvTGF0aXR1ZGU+
79
+ PExvbmdpdHVkZT4xMzguNjAwNzg0PC9Mb25naXR1ZGU+PENhbGN1bGF0aW9u
80
+ TWV0aG9kPlJvb2Z0b3A8L0NhbGN1bGF0aW9uTWV0aG9kPjxVc2FnZVR5cGU+
81
+ RGlzcGxheTwvVXNhZ2VUeXBlPjwvR2VvY29kZVBvaW50PjxHZW9jb2RlUG9p
82
+ bnQ+PExhdGl0dWRlPi0zNC45MzQ1ODkzODU5ODYzMjg8L0xhdGl0dWRlPjxM
83
+ b25naXR1ZGU+MTM4LjYwMDUwOTY0MzU1NDY5PC9Mb25naXR1ZGU+PENhbGN1
84
+ bGF0aW9uTWV0aG9kPkludGVycG9sYXRpb248L0NhbGN1bGF0aW9uTWV0aG9k
85
+ PjxVc2FnZVR5cGU+RGlzcGxheTwvVXNhZ2VUeXBlPjxVc2FnZVR5cGU+Um91
86
+ dGU8L1VzYWdlVHlwZT48L0dlb2NvZGVQb2ludD48L0xvY2F0aW9uPjwvUmVz
87
+ b3VyY2VzPjwvUmVzb3VyY2VTZXQ+PC9SZXNvdXJjZVNldHM+PC9SZXNwb25z
88
+ ZT4=
89
+ http_version:
90
+ recorded_at: Thu, 26 Dec 2013 09:48:29 GMT
91
+ recorded_with: VCR 2.8.0