geokit 1.7.1 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
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