google_places 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +9 -0
- data/Gemfile +4 -0
- data/README.rdoc +55 -0
- data/Rakefile +7 -0
- data/google_places.gemspec +23 -0
- data/lib/google_places.rb +7 -0
- data/lib/google_places/client.rb +17 -0
- data/lib/google_places/location.rb +12 -0
- data/lib/google_places/request.rb +30 -0
- data/lib/google_places/spot.rb +44 -0
- data/spec/api_key.sample.rb +1 -0
- data/spec/google_places/client_spec.rb +30 -0
- data/spec/google_places/location_spec.rb +9 -0
- data/spec/google_places/request_spec.rb +41 -0
- data/spec/google_places/spot_spec.rb +43 -0
- data/spec/spec_helper.rb +13 -0
- data/spec/vcr_cassettes/list_spots.yml +326 -0
- data/spec/vcr_cassettes/single_spot.yml +100 -0
- data/spec/vcr_setup.rb +8 -0
- metadata +149 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
= Google Places
|
2
|
+
|
3
|
+
This gem provides a Ruby wrapper around the Google Places API, using HTTParty. At this moment the gem does
|
4
|
+
not support OAuth authentication and will only work with an API key.
|
5
|
+
|
6
|
+
|
7
|
+
== Obtaining an API key
|
8
|
+
|
9
|
+
To be able to use this gem, you'll need a Google Places API key. To request an API key, point your browser to
|
10
|
+
https://code.google.com/apis/console and follow the instructions there. You'll find your API key on the
|
11
|
+
*API Access* tab under *Simple API Access*.
|
12
|
+
|
13
|
+
|
14
|
+
== Installing the gem
|
15
|
+
|
16
|
+
To use this gem, install it with <tt>gem install google_places</tt> or add it to your Gemfile:
|
17
|
+
|
18
|
+
gem 'google_places'
|
19
|
+
|
20
|
+
And install it with <tt>bundle install</tt>
|
21
|
+
|
22
|
+
|
23
|
+
== Usage
|
24
|
+
|
25
|
+
=== The spot
|
26
|
+
|
27
|
+
Each of the API methods below returns a <tt>GooglePlaces::Spot</tt> or a collection of those. Each of these
|
28
|
+
objects has these attributes:
|
29
|
+
|
30
|
+
* *reference*: a token to query the Google Places API for more details about the spot
|
31
|
+
* *vicinity*: the street or neighborhood of the spot
|
32
|
+
* *lat*: the latitude of the spot
|
33
|
+
* *lng*: the longitude of the spot
|
34
|
+
* *name*: the name of the spot
|
35
|
+
* *icon*: a URL to the icon of this spot
|
36
|
+
|
37
|
+
=== Retrieving a list of spots
|
38
|
+
|
39
|
+
First register a new Client:
|
40
|
+
|
41
|
+
@client = GooglePlaces::Client.new(API_KEY)
|
42
|
+
|
43
|
+
Then retrieve a list of spots:
|
44
|
+
|
45
|
+
@client.spots(-33.8670522, 151.1957362)
|
46
|
+
|
47
|
+
=== Retrieving a single spot
|
48
|
+
|
49
|
+
First register a new Client:
|
50
|
+
|
51
|
+
@client = GooglePlaces::Client.new(API_KEY)
|
52
|
+
|
53
|
+
Then retrieve the spot:
|
54
|
+
|
55
|
+
@client.spot('CmRYAAA...upoTH3g')
|
data/Rakefile
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "google_places"
|
6
|
+
s.version = '0.0.1'
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Marcel de Graaf"]
|
9
|
+
s.email = ["mail@marceldegraaf.net"]
|
10
|
+
s.homepage = "http://marceldegraaf.net"
|
11
|
+
s.summary = %q{A Ruby wrapper around the Google Places API.}
|
12
|
+
s.description = %q{This gem provides a Ruby wrapper around the Google Places API for use in your own project. Please note that this gem does not provide OAuth authentication.}
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
|
19
|
+
s.add_dependency 'httparty'
|
20
|
+
s.add_development_dependency 'rspec'
|
21
|
+
s.add_development_dependency 'fakeweb'
|
22
|
+
s.add_development_dependency 'vcr'
|
23
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module GooglePlaces
|
2
|
+
class Client
|
3
|
+
attr_reader :api_key
|
4
|
+
|
5
|
+
def initialize(api_key)
|
6
|
+
@api_key = api_key
|
7
|
+
end
|
8
|
+
|
9
|
+
def spots(lat, lng, options = {})
|
10
|
+
Spot.list(lat, lng, @api_key, options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def spot(reference, options = {})
|
14
|
+
Spot.find(reference, @api_key, options)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module GooglePlaces
|
2
|
+
class Request
|
3
|
+
attr_accessor :response
|
4
|
+
|
5
|
+
include ::HTTParty
|
6
|
+
format :json
|
7
|
+
|
8
|
+
SPOTS_LIST_URL = 'https://maps.googleapis.com/maps/api/place/search/json'
|
9
|
+
SPOT_URL = 'https://maps.googleapis.com/maps/api/place/details/json'
|
10
|
+
|
11
|
+
def self.spots(options = {})
|
12
|
+
request = new(SPOTS_LIST_URL, options)
|
13
|
+
request.parsed_response
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.spot(options = {})
|
17
|
+
request = new(SPOT_URL, options)
|
18
|
+
request.parsed_response
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(url, options)
|
22
|
+
@response = self.class.get(url, :query => options)
|
23
|
+
end
|
24
|
+
|
25
|
+
def parsed_response
|
26
|
+
@response.parsed_response
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module GooglePlaces
|
2
|
+
class Spot
|
3
|
+
attr_accessor :lat, :lng, :name, :icon, :reference, :vicinity
|
4
|
+
|
5
|
+
def self.list(lat, lng, api_key, options = {})
|
6
|
+
radius = options.delete(:radius) || 200
|
7
|
+
sensor = options.delete(:sensor) || false
|
8
|
+
location = Location.new(lat, lng)
|
9
|
+
|
10
|
+
response = Request.spots(
|
11
|
+
:location => location.format,
|
12
|
+
:radius => radius,
|
13
|
+
:sensor => sensor,
|
14
|
+
:key => api_key
|
15
|
+
)
|
16
|
+
|
17
|
+
response['results'].map do |result|
|
18
|
+
self.new(result)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.find(reference, api_key, options = {})
|
23
|
+
sensor = options.delete(:sensor) || false
|
24
|
+
|
25
|
+
response = Request.spot(
|
26
|
+
:reference => reference,
|
27
|
+
:sensor => sensor,
|
28
|
+
:key => api_key
|
29
|
+
)
|
30
|
+
|
31
|
+
self.new(response['result'])
|
32
|
+
end
|
33
|
+
|
34
|
+
def initialize(json_result_object)
|
35
|
+
@reference = json_result_object['reference'],
|
36
|
+
@vicinity = json_result_object['vicinity'],
|
37
|
+
@lat = json_result_object['geometry']['location']['lat'],
|
38
|
+
@lng = json_result_object['geometry']['location']['lng'],
|
39
|
+
@name = json_result_object['name'],
|
40
|
+
@icon = json_result_object['icon']
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
RSPEC_API_KEY = 'abc123'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GooglePlaces::Client do
|
4
|
+
|
5
|
+
it 'should not initialize without an api_key' do
|
6
|
+
lambda { GooglePlaces::Client.new }.should raise_error
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should initialize with an api_key' do
|
10
|
+
@client = GooglePlaces::Client.new(api_key)
|
11
|
+
@client.api_key.should == api_key
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should request spots' do
|
15
|
+
lat, lng = '-33.8670522', '151.1957362'
|
16
|
+
@client = GooglePlaces::Client.new(api_key)
|
17
|
+
GooglePlaces::Spot.should_receive(:list).with(lat, lng, api_key, {})
|
18
|
+
|
19
|
+
@client.spots(lat, lng)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should request a single spot' do
|
23
|
+
reference = "CoQBeAAAAO-prCRp9Atcj_rvavsLyv-DnxbGkw8QyRZb6Srm6QHOcww6lqFhIs2c7Ie6fMg3PZ4PhicfJL7ZWlaHaLDTqmRisoTQQUn61WTcSXAAiCOzcm0JDBnafqrskSpFtNUgzGAOx29WGnWSP44jmjtioIsJN9ik8yjK7UxP4buAmMPVEhBXPiCfHXk1CQ6XRuQhpztsGhQU4U6-tWjTHcLSVzjbNxoiuihbaA"
|
24
|
+
@client = GooglePlaces::Client.new(api_key)
|
25
|
+
GooglePlaces::Spot.should_receive(:find).with(reference, api_key, {})
|
26
|
+
|
27
|
+
@client.spot(reference)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GooglePlaces::Request do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@location = GooglePlaces::Location.new('-33.8670522', '151.1957362').format
|
7
|
+
@radius = 200
|
8
|
+
@sensor = false
|
9
|
+
@reference = "CoQBeAAAAO-prCRp9Atcj_rvavsLyv-DnxbGkw8QyRZb6Srm6QHOcww6lqFhIs2c7Ie6fMg3PZ4PhicfJL7ZWlaHaLDTqmRisoTQQUn61WTcSXAAiCOzcm0JDBnafqrskSpFtNUgzGAOx29WGnWSP44jmjtioIsJN9ik8yjK7UxP4buAmMPVEhBXPiCfHXk1CQ6XRuQhpztsGhQU4U6-tWjTHcLSVzjbNxoiuihbaA"
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'Listing spots' do
|
13
|
+
use_vcr_cassette 'list_spots'
|
14
|
+
|
15
|
+
it 'should retrieve a list of spots' do
|
16
|
+
response = GooglePlaces::Request.spots(
|
17
|
+
:location => @location,
|
18
|
+
:radius => @radius,
|
19
|
+
:sensor => @sensor,
|
20
|
+
:key => api_key
|
21
|
+
)
|
22
|
+
|
23
|
+
response['results'].should_not be_empty
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'Spot details' do
|
28
|
+
use_vcr_cassette 'single_spot'
|
29
|
+
|
30
|
+
it 'should retrieve a single spot' do
|
31
|
+
response = GooglePlaces::Request.spots(
|
32
|
+
:reference => @reference,
|
33
|
+
:sensor => @sensor,
|
34
|
+
:key => api_key
|
35
|
+
)
|
36
|
+
|
37
|
+
response['result'].should_not be_empty
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GooglePlaces::Spot do
|
4
|
+
|
5
|
+
before :each do
|
6
|
+
@lat = '-33.8670522'
|
7
|
+
@lng = '151.1957362'
|
8
|
+
@radius = 200
|
9
|
+
@sensor = false
|
10
|
+
@reference = "CoQBeAAAAO-prCRp9Atcj_rvavsLyv-DnxbGkw8QyRZb6Srm6QHOcww6lqFhIs2c7Ie6fMg3PZ4PhicfJL7ZWlaHaLDTqmRisoTQQUn61WTcSXAAiCOzcm0JDBnafqrskSpFtNUgzGAOx29WGnWSP44jmjtioIsJN9ik8yjK7UxP4buAmMPVEhBXPiCfHXk1CQ6XRuQhpztsGhQU4U6-tWjTHcLSVzjbNxoiuihbaA"
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'List spots' do
|
14
|
+
use_vcr_cassette 'list_spots'
|
15
|
+
|
16
|
+
before :each do
|
17
|
+
@collection = GooglePlaces::Spot.list(@lat, @lng, api_key, :radius => @radius, :sensor => @sensor)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should be a collection of Spots' do
|
21
|
+
@collection.map(&:class).uniq.should == [GooglePlaces::Spot]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'Find a single spot' do
|
26
|
+
use_vcr_cassette 'single_spot'
|
27
|
+
|
28
|
+
before :each do
|
29
|
+
@spot = GooglePlaces::Spot.find(@reference, api_key, :sensor => @sensor)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should be a Spot' do
|
33
|
+
@spot.class.should == GooglePlaces::Spot
|
34
|
+
end
|
35
|
+
|
36
|
+
%w(reference vicinity lat lng name icon).each do |attribute|
|
37
|
+
it "should have the attribute: #{attribute}" do
|
38
|
+
@spot.send(attribute).to_s.should_not be_empty
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,326 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: https://maps.googleapis.com:443/maps/api/place/search/json?radius=200&sensor=false&key=AIzaSyATGBjcfrRXQtNEMMyt8Fw7tSGEY8PQwv0&location=-33.8670522%2C151.1957362
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
response: !ruby/struct:VCR::Response
|
9
|
+
status: !ruby/struct:VCR::ResponseStatus
|
10
|
+
code: 200
|
11
|
+
message: OK
|
12
|
+
headers:
|
13
|
+
content-type:
|
14
|
+
- application/json; charset=UTF-8
|
15
|
+
x-xss-protection:
|
16
|
+
- 1; mode=block
|
17
|
+
server:
|
18
|
+
- mafe
|
19
|
+
date:
|
20
|
+
- Mon, 16 May 2011 20:56:23 GMT
|
21
|
+
cache-control:
|
22
|
+
- private
|
23
|
+
vary:
|
24
|
+
- Accept-Language
|
25
|
+
body: |
|
26
|
+
{
|
27
|
+
"status": "OK",
|
28
|
+
"results": [ {
|
29
|
+
"name": "Pyrmont",
|
30
|
+
"types": [ "locality", "political" ],
|
31
|
+
"geometry": {
|
32
|
+
"location": {
|
33
|
+
"lat": -33.8695456,
|
34
|
+
"lng": 151.1945404
|
35
|
+
},
|
36
|
+
"viewport": {
|
37
|
+
"southwest": {
|
38
|
+
"lat": -33.8788097,
|
39
|
+
"lng": 151.1785330
|
40
|
+
},
|
41
|
+
"northeast": {
|
42
|
+
"lat": -33.8602805,
|
43
|
+
"lng": 151.2105478
|
44
|
+
}
|
45
|
+
}
|
46
|
+
},
|
47
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
|
48
|
+
"reference": "CnRoAAAAZjKdehGj2kVxm9J7E0UoOGJo_bGXDThTlRlifDJlDlPGeEJ5yQ-2fUSofYhS3twtTZED0hhebpOYLA8b8VvR_9TkrrxfZXIg9S_UsHMYh_F5eABunplqLwAggfyWfch5YK5SqxazWa2WoQoz05H7IxIQyvxeUL8FrzZFAmdqRKrR6BoUknI6yaGcbMY6CyLuIyMRYmpdt4Y",
|
49
|
+
"id": "40840d476baa531e0227a353b1bef70262f66e7e"
|
50
|
+
}, {
|
51
|
+
"name": "Star City",
|
52
|
+
"vicinity": "Pyrmont Street, Pyrmont",
|
53
|
+
"types": [ "lodging", "establishment" ],
|
54
|
+
"geometry": {
|
55
|
+
"location": {
|
56
|
+
"lat": -33.8682000,
|
57
|
+
"lng": 151.1945860
|
58
|
+
}
|
59
|
+
},
|
60
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/lodging-71.png",
|
61
|
+
"reference": "CnRhAAAAKjwqd8kGDNgdvMj2_VJjLqoizf80ohJLumWHxK6cY4E3MHZM92Y8lywFuFCPCo73dowC4U0vxqVTLP607XOw7ndmkexMRF22spdKNCgtfQcLVaC4tXKqUKjsjG9lALCHyIrTay4jbGNMZwcr4e2qRRIQtbUuBsA5rx65luq526M-VRoUGJUT7lIgHoSWDAk6tTG5Pv6zGTw",
|
62
|
+
"id": "be880205d64059c306bbf198f908b81cabb9f066"
|
63
|
+
}, {
|
64
|
+
"name": "Ripples at Sydney Wharf",
|
65
|
+
"vicinity": "Pirrama Road, Pyrmont",
|
66
|
+
"types": [ "establishment" ],
|
67
|
+
"geometry": {
|
68
|
+
"location": {
|
69
|
+
"lat": -33.8667010,
|
70
|
+
"lng": 151.1973990
|
71
|
+
}
|
72
|
+
},
|
73
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
74
|
+
"reference": "CnRuAAAAboUpEekYUmyLEpeyN5g6dPpHB9HjZpNUJ8wQ4DVmfV0-4vyPJpBjMLXtqlH35vrVB_8Mp8Lxnw0m3mSCpbpGWg5yawiR5CKpkKhV4FGWOkFaU10U9yuN35MBPcQPZht73_TF8l_RWA4fKY293fR90BIQO_6doKC1JbNu_FoeFlSRSRoU3vuANKslG6fG_owbbMxYQll58iQ",
|
75
|
+
"id": "dd030d236b8ccdc525f7a40893eb492f8fc5d55d"
|
76
|
+
}, {
|
77
|
+
"name": "Google Sydney",
|
78
|
+
"vicinity": "Pirrama Road, Pyrmont",
|
79
|
+
"types": [ "establishment" ],
|
80
|
+
"geometry": {
|
81
|
+
"location": {
|
82
|
+
"lat": -33.8669710,
|
83
|
+
"lng": 151.1958750
|
84
|
+
}
|
85
|
+
},
|
86
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
87
|
+
"reference": "CnRlAAAAvclMmIcKJtY2kLeOz_rqW3ikacM7LuFwnX1qD5PiDRrQCRO0v9cm6Mo7WYKGCIO_ngg5zoyfueoQVQxbdRPQoOHYouwI0kxI3EkzhfpI5t8lCRCu_wcx4RmG9-mQNesbfwRL7xdX9CTQKmlyzNJ3LBIQpoWWkt1UACMUMyf_u5J-wBoUF5QZuOBgOo2p_W67o10WnABV72k",
|
88
|
+
"id": "4f89212bf76dde31f092cfc14d7506555d85b5c7"
|
89
|
+
}, {
|
90
|
+
"name": "Signorelli Gastronomia",
|
91
|
+
"vicinity": "Trouton Place, Pyrmont",
|
92
|
+
"types": [ "restaurant", "food", "establishment" ],
|
93
|
+
"geometry": {
|
94
|
+
"location": {
|
95
|
+
"lat": -33.8665470,
|
96
|
+
"lng": 151.1959410
|
97
|
+
}
|
98
|
+
},
|
99
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
|
100
|
+
"reference": "CnRuAAAA-wkpRsz-a-oCbui2nF7oE1laTV_2CGAqj4OjkpT2oi49JDG2egl89MjT7qGr59H8epStVq-Y91ZNMVZJoQXOGDrwgzdr3cFv-Q6ZSu8VQedz2sUOcehgL6-bvwbzdymfplRMgGm1wd6FMkSnEorvNxIQJJSCO5xFerHFlrHgAinPAhoU1h3gw1_Wq_WA678SKzN9u9_7hK4",
|
101
|
+
"id": "4d716a646c32978aa12d1057dcf9f503a20195c0"
|
102
|
+
}, {
|
103
|
+
"name": "Garden Buffet",
|
104
|
+
"vicinity": "Pyrmont Street, Pyrmont",
|
105
|
+
"types": [ "restaurant", "food", "establishment" ],
|
106
|
+
"geometry": {
|
107
|
+
"location": {
|
108
|
+
"lat": -33.8681980,
|
109
|
+
"lng": 151.1945840
|
110
|
+
}
|
111
|
+
},
|
112
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
|
113
|
+
"reference": "CnRlAAAAUrboV7a3e4QO_4PUrx1SgoWrF5EBlsSYHWXea8yEY4Zj4kpHY4QrcPOYjiR6s900N-sfZk4_HjUPW9fq0TtVANyHVqnHoOZITHIYGJY9Lji640IGgRtiKod1C9hiKPxcjfdz4ENXC0dqGjiBU5lqCxIQB5r-0dXxGtLSYHga7z7sFBoUJF9uHMWgU_xDKYuLIoVqv3fh6fc",
|
114
|
+
"id": "eaf5d4b14ebeae84df661e1f6d593259abac83d4"
|
115
|
+
}, {
|
116
|
+
"name": "Astral",
|
117
|
+
"vicinity": "Pyrmont Street, Sydney",
|
118
|
+
"types": [ "restaurant", "food", "establishment" ],
|
119
|
+
"geometry": {
|
120
|
+
"location": {
|
121
|
+
"lat": -33.8681980,
|
122
|
+
"lng": 151.1945840
|
123
|
+
}
|
124
|
+
},
|
125
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
|
126
|
+
"reference": "CmReAAAAehMqsOqjki53jOYHTSzNb3JPzx6K-hPgg2ngZajWjGCAiE4VxRRTsDX9kqx7EaRJbYNNeJSNO8L4WW81brQdxQj_cRoQyA2rG1xufcgn4UNa6d8RE2M4d_JoWhFR-qahEhD0zHl0SlHzGKtXbaU-ORSyGhRZKXSaWjD3gfzsuVp8YZLcrdD2CQ",
|
127
|
+
"id": "bceeb9b6d5ac2f9f2573bbed9e1b3240f1fd0e12"
|
128
|
+
}, {
|
129
|
+
"name": "Accenture",
|
130
|
+
"vicinity": "Pirrama Road, Pyrmont",
|
131
|
+
"types": [ "establishment" ],
|
132
|
+
"geometry": {
|
133
|
+
"location": {
|
134
|
+
"lat": -33.8670840,
|
135
|
+
"lng": 151.1959500
|
136
|
+
}
|
137
|
+
},
|
138
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
139
|
+
"reference": "CoQBfgAAALEv8hs9sdLazHlXXwsxxZ2UOxL7cI5thGrPiEPzIWGzUO3kJ7AtOuFlZj1rrcohZ-IKd00HL75TI-zL-eeCjLLlQcwLJKDDEyhnxdfXpPXWKMSpctmNlFZzuc-q-5QT7zCiP_SkXD0_E8JhHiD4koirfgUaKrghycMPWF9Z4fNWEhCLxE4D2_vKwhxLy4v1qqElGhRtvU3-A-zgoHSs6um69bXj0ePdJg",
|
140
|
+
"id": "27e84d1acda19c14b9c7f5271242796891bc9c9e"
|
141
|
+
}, {
|
142
|
+
"name": "Fairfax Media",
|
143
|
+
"vicinity": "Darling Island Road, Pyrmont",
|
144
|
+
"types": [ "establishment" ],
|
145
|
+
"geometry": {
|
146
|
+
"location": {
|
147
|
+
"lat": -33.8654620,
|
148
|
+
"lng": 151.1959830
|
149
|
+
}
|
150
|
+
},
|
151
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
152
|
+
"reference": "CnRlAAAA3s8dTF4shgM5feBxw8cyuuzghSaW2FcdNlAeWLh6s5JMUxF7W-oCnDczD3Q_zAxXki049KMI8nNboUNcq0FiqkfkOesd_DTt5M3XqfGJy-SA8ooF9Jg1YGp4YxnEH8OiXOba39RgNMB3fply8-CIDBIQrMlWAE9hX0WQw8F_T7EnlRoU94zo4ZY_wapa8_S3CxVv-FUYkT4",
|
153
|
+
"id": "3e2826e1b4b4e5cbee354260f687d14938e6068f"
|
154
|
+
}, {
|
155
|
+
"name": "Fairfax Media",
|
156
|
+
"vicinity": "Darling Island Road, Pyrmont",
|
157
|
+
"types": [ "establishment" ],
|
158
|
+
"geometry": {
|
159
|
+
"location": {
|
160
|
+
"lat": -33.8652490,
|
161
|
+
"lng": 151.1961010
|
162
|
+
}
|
163
|
+
},
|
164
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
165
|
+
"reference": "CnRkAAAAkdvnxcBAPpeOMt3t-MmIJ0YMDqHgOrAq4RO8YcgNqcRtadnX_1Iej61nsIsgtMBeigVWBE4-Hrj7vR993RzpmmYkRqgIIXYxBqF911JkgZwMPVaQBJp6xb3MsWvBjYRKZa0LbSul89Rx14PVxdK_FhIQCWmL3fkjhn94Oz786uPF3xoUSwuum2vDZEa1EHT_cD8dNSAeHnA",
|
166
|
+
"id": "1f2ddcefca08ffc687247c1ecf209054336aebb8"
|
167
|
+
}, {
|
168
|
+
"name": "John Holland",
|
169
|
+
"vicinity": "Pirrama Rd, Pyrmont",
|
170
|
+
"types": [ "establishment" ],
|
171
|
+
"geometry": {
|
172
|
+
"location": {
|
173
|
+
"lat": -33.8687940,
|
174
|
+
"lng": 151.1968300
|
175
|
+
}
|
176
|
+
},
|
177
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
178
|
+
"reference": "CnRjAAAAtKWuPt-xPqEuys5kHwscxex99t4OWVpG8s-3IDLwDCJtT72Fq9JDSMqBTtNx0Tj-jdZ_QGy80KnYbBB0wWMs3pwXXFXoGub0pivpPpBi5JpJ_lnljyscthh6vIKECl9JQtF_798os9rL8D7iWKZx7BIQ4Bex-MXFyB1ytBcB9w5H_xoUqeAM8bsU5C3t_T6xe46j_tuPdis",
|
179
|
+
"id": "61178ac5b42a4045c415fffdf6d474ba9b08d068"
|
180
|
+
}, {
|
181
|
+
"name": "Seans Kitchen",
|
182
|
+
"vicinity": "Pyrmont Street, Pyrmont",
|
183
|
+
"types": [ "restaurant", "food", "establishment" ],
|
184
|
+
"geometry": {
|
185
|
+
"location": {
|
186
|
+
"lat": -33.8681980,
|
187
|
+
"lng": 151.1945840
|
188
|
+
}
|
189
|
+
},
|
190
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
|
191
|
+
"reference": "CnRkAAAAYCQHi4uqW9_FO82_aWfKGlJYshMRIgjhThKvGxNi0HRRn5WDMEweiz7SYjz6Bl0BlEloBDw6PJnxg88KtkoS1ItfiMOHVuJf049XPqfdoLk58CayJL8fzfzhg_F7bnD5aQLBXwJjpBrlRk63w_8W6BIQTB98PvbgYXRIP0qNBEW9VhoUbg4LBDKRUlSQncPJJaUN4V4d6RI",
|
192
|
+
"id": "88751426b87d7072ea1acf98f35695d02985addb"
|
193
|
+
}, {
|
194
|
+
"name": "Channel Seven",
|
195
|
+
"vicinity": "Pirrama Road, Pyrmont",
|
196
|
+
"types": [ "establishment" ],
|
197
|
+
"geometry": {
|
198
|
+
"location": {
|
199
|
+
"lat": -33.8660710,
|
200
|
+
"lng": 151.1944390
|
201
|
+
}
|
202
|
+
},
|
203
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
204
|
+
"reference": "CnRlAAAALz1LkbIHsaliP6WoAaNxU01M6zC3kZNewLqu2R6u2zOxkpTFv5R9B0tRbDD9mly1R7NgHZzZSI2BTLXfJj8YKTBNvPTNSF-JM8BmY1YTFrXryxWThrMg172gU40ypom4o2qhNidm_fkbgUHKv-bDhxIQuAzFJvp28JqqePT8CRFWHxoUQQffs7Qp7giQZaipftWiEBglHzs",
|
205
|
+
"id": "19cdf89322aa1fc3523c583a74a27645b11430e8"
|
206
|
+
}, {
|
207
|
+
"name": "Avis",
|
208
|
+
"vicinity": "Pyrmont Street, Pyrmont",
|
209
|
+
"types": [ "car_rental", "establishment" ],
|
210
|
+
"geometry": {
|
211
|
+
"location": {
|
212
|
+
"lat": -33.8681980,
|
213
|
+
"lng": 151.1945840
|
214
|
+
}
|
215
|
+
},
|
216
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
217
|
+
"reference": "CmRbAAAA1IUBZVA5jwmicTiW8zNbvLulmf2GJ-uEiDfLevJnoVy8VcczuKi3IXFEXtRtXoZuGYqq2nLa0XKQrH3dNSaV4xgwPxSVhSBRU4yevB_Z2hRifoFbVNgMTbtgPo1_A1X0EhABhJpeDfk5MbbWqC_bw9y5GhSHrreEdpex54mreNHTaIlZZc9Cgg",
|
218
|
+
"id": "d559b2e8e491212130cf17c4d0ac595c72b3931f"
|
219
|
+
}, {
|
220
|
+
"name": "Lotus Pond",
|
221
|
+
"vicinity": "Pyrmont Street, Pyrmont",
|
222
|
+
"types": [ "restaurant", "food", "establishment" ],
|
223
|
+
"geometry": {
|
224
|
+
"location": {
|
225
|
+
"lat": -33.8681980,
|
226
|
+
"lng": 151.1945840
|
227
|
+
}
|
228
|
+
},
|
229
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
|
230
|
+
"reference": "CnRiAAAAZ4ToVtI44jrLdD_HwTqrDis69gKZR3KpPz1U7t24gj0jF-hXgeLDij8CywRTX02Ed4ttYguSqCofCakRf1K0G6l15D7ODUma7_VLBs-77i3OPBpQBNe30IhUWpAsQRSAK3B_OZF7iWY95IyhSpnZ-hIQGjvxTeK7zKnY3h23cbMR0hoUPlwdkmCZ_GQ9l897p7jdZpqx22U",
|
231
|
+
"id": "ca11a8721d7fa06d9ed6ce80c7e49af70f440fd8"
|
232
|
+
}, {
|
233
|
+
"name": "Bite Me Burger",
|
234
|
+
"vicinity": "Pyrmont Street, Pyrmont",
|
235
|
+
"types": [ "restaurant", "food", "establishment" ],
|
236
|
+
"geometry": {
|
237
|
+
"location": {
|
238
|
+
"lat": -33.8681980,
|
239
|
+
"lng": 151.1945840
|
240
|
+
}
|
241
|
+
},
|
242
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
|
243
|
+
"reference": "CnRlAAAALDu5NYsmU6qyxiaqJt-jDB2TfH4LuKr65ETEl1MFu8BR3BzmHpOU1IhS6bLlk0IKNQCOhVxxuOlGj-NH3TLgvjxm7HMkcG3rtOKrs73VhBwOFxtcnrwKkGOaOXzfUdle0yRF8qkK_-BR1I95tfYj2BIQdyXkbNEJmJiH6uzlZtGbFhoUlde33-u74nwjYIhNNG2-fXy9N9I",
|
244
|
+
"id": "c59ee010f131efcf1cd728c05ef73215319e52f0"
|
245
|
+
}, {
|
246
|
+
"name": "Fairfax Digital",
|
247
|
+
"vicinity": "Pirrama Road, Pyrmont",
|
248
|
+
"types": [ "establishment" ],
|
249
|
+
"geometry": {
|
250
|
+
"location": {
|
251
|
+
"lat": -33.8660710,
|
252
|
+
"lng": 151.1944390
|
253
|
+
}
|
254
|
+
},
|
255
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
256
|
+
"reference": "CnRnAAAA2BjS9rAagMs7a4VIWYpIyiIwYFH7zXDILVNmldtwofuuPT7fEjXUP-Vq9_SqWvGsO3bTu7_ySbjyM71g5bW3kDu53O_5n_HjWm8JuEhuA5PAn5_NxGekLMhNPGKLKtZJmdQBlYisETGUqGQ7lbPDqxIQ05yEZ568oiOIi4FYzK9d_xoUXxS7lhyjgNg1nIqoJ0hKhu0S3Q0",
|
257
|
+
"id": "6b3cb6af5b5bed3297d96b48aac81a96f95ead4c"
|
258
|
+
}, {
|
259
|
+
"name": "Doltone House - Darling Island Wharf",
|
260
|
+
"vicinity": "Pirrama Road, Pyrmont",
|
261
|
+
"types": [ "establishment" ],
|
262
|
+
"geometry": {
|
263
|
+
"location": {
|
264
|
+
"lat": -33.8670520,
|
265
|
+
"lng": 151.1957360
|
266
|
+
}
|
267
|
+
},
|
268
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
269
|
+
"reference": "CoQBfAAAAIOvkBRskkkLdw2PoZpvoXJhDs9hNqdt5Emap9eDf1mNu86F92Abh8TGQrzHVGJIzQ8ZX5VAdFe6M8Gwon_Q69-19VRkkHQ0KK7WZhYYt3fH74ZYIapFr3JlYkgyxhj5yeQa4solpc2C3YA1fbYH4fJeof66_sj99S8oP-zYkBDgEhBRNNWZT8cri0UTvZPZa2K2GhRTKKbIbD4bs8S5cYhXkz7fVCYSKw",
|
270
|
+
"id": "3ef986cd56bb3408bc1cf394f3dad9657c1d30f6"
|
271
|
+
}, {
|
272
|
+
"name": "Domain.Com.Au",
|
273
|
+
"vicinity": "Pirrama Road, Pyrmont",
|
274
|
+
"types": [ "real_estate_agency", "establishment" ],
|
275
|
+
"geometry": {
|
276
|
+
"location": {
|
277
|
+
"lat": -33.8660710,
|
278
|
+
"lng": 151.1944390
|
279
|
+
}
|
280
|
+
},
|
281
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
|
282
|
+
"reference": "CnRkAAAA_C4kyy2pAof94NA2Z-qmYafl6n4QSk3l69DN37B049DUTEGAUkGj48Z_N2w7n1z2kuTzP-8CWaFga3RX7MUgt1oMmnqjrIKbqdKGwyJsMtI-XZdBw9ZRCwJuM5Jmk1MdjTHUxLljUG6Kh4dl4Jls5BIQUwrmN7ZD-tfPC7f-ZyfhoxoUYxYye9Llb3foY5Wpj5Eo-JnO9xQ",
|
283
|
+
"id": "22069082ad380a2f09db4675e7474c87e8557f3d"
|
284
|
+
}, {
|
285
|
+
"name": "Fat Noodle",
|
286
|
+
"vicinity": "Pyrmont Street, Pyrmont",
|
287
|
+
"types": [ "restaurant", "food", "establishment" ],
|
288
|
+
"geometry": {
|
289
|
+
"location": {
|
290
|
+
"lat": -33.8681980,
|
291
|
+
"lng": 151.1945840
|
292
|
+
}
|
293
|
+
},
|
294
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
|
295
|
+
"reference": "CnRhAAAA_QIS77PlT4aALc3BSQdII-L8WjsbqTdZXWkgQ_sbDB1eqEBqUy1MvTN3q52Yx7TJSZYpQHWahZ_31qUFt13fK0E00cwF6X6zvZpJXLGcmskfaN795mS1RZVpRzxQLihSpy066luwHDnZ5DtNeo0DJhIQO7RgNUxdMeJbA9V6LG4RQhoUX6dwl7glDhc3-VhN0LdXWM2gAto",
|
296
|
+
"id": "ba9494fbebdb7e40f9a646aab93379212763195c"
|
297
|
+
}, {
|
298
|
+
"name": "Blue Eye Dragon",
|
299
|
+
"vicinity": "Pyrmont Street, Pyrmont",
|
300
|
+
"types": [ "restaurant", "food", "establishment" ],
|
301
|
+
"geometry": {
|
302
|
+
"location": {
|
303
|
+
"lat": -33.8676090,
|
304
|
+
"lng": 151.1936860
|
305
|
+
}
|
306
|
+
},
|
307
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
|
308
|
+
"reference": "CnRmAAAAXkho1LLdtwMiNA1qppitMrj6zyw7KaTpvUuls_UHx_xunllNxp4mfiMwzm3uv_xDrVvKm4oc1baW1qzo0ZEEsOwc73dV4kPrjaLVek8nVD1tAFLRqpCi2wOI8TKs3Y4XxdJ2SUJ-RYZ__ZgY57YAGBIQU2FOTpI5dGTP2XmstdKseRoUl4KQPjQwbd78jnUQOKdI4mNhZ1k",
|
309
|
+
"id": "00060cf64f16375913ec49d25cbb7829d3e08a88"
|
310
|
+
}, {
|
311
|
+
"name": "Port Jackson",
|
312
|
+
"types": [ "locality", "political" ],
|
313
|
+
"geometry": {
|
314
|
+
"location": {
|
315
|
+
"lat": -33.8517149,
|
316
|
+
"lng": 151.1966444
|
317
|
+
}
|
318
|
+
},
|
319
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
|
320
|
+
"reference": "CnRtAAAAqPzE3Of-4UH_8Jgo3_J7zCnDf5LfoQaTEezOcV1XH3P8WtlERBzwX5LMiEnc_gUz6FnOaBWSTNgcwdb1cfXJ0Ws6kJtqjS4Y9QtcpTmTuqUq4cwtzkwpSl0Cq6Staelh_4KncPMa6uma7R0oiDWhExIQVz3GTt8Uv9kaw8z6nQ-KXRoUIPaol1HIGplToOFrTiw7L5XxSP4",
|
321
|
+
"id": "8dbf2c11a8cca5b1457b442e05d006a21969ce22"
|
322
|
+
} ],
|
323
|
+
"html_attributions": [ "Listings by \u003ca href=\"http://www.yellowpages.com.au/\"\u003eYellow Pages\u003c/a\u003e" ]
|
324
|
+
}
|
325
|
+
|
326
|
+
http_version: "1.1"
|
@@ -0,0 +1,100 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: https://maps.googleapis.com:443/maps/api/place/search/json?reference=CoQBeAAAAO-prCRp9Atcj_rvavsLyv-DnxbGkw8QyRZb6Srm6QHOcww6lqFhIs2c7Ie6fMg3PZ4PhicfJL7ZWlaHaLDTqmRisoTQQUn61WTcSXAAiCOzcm0JDBnafqrskSpFtNUgzGAOx29WGnWSP44jmjtioIsJN9ik8yjK7UxP4buAmMPVEhBXPiCfHXk1CQ6XRuQhpztsGhQU4U6-tWjTHcLSVzjbNxoiuihbaA&sensor=false&key=AIzaSyATGBjcfrRXQtNEMMyt8Fw7tSGEY8PQwv0
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
response: !ruby/struct:VCR::Response
|
9
|
+
status: !ruby/struct:VCR::ResponseStatus
|
10
|
+
code: 200
|
11
|
+
message: OK
|
12
|
+
headers:
|
13
|
+
content-type:
|
14
|
+
- application/json; charset=UTF-8
|
15
|
+
date:
|
16
|
+
- Mon, 16 May 2011 20:56:23 GMT
|
17
|
+
server:
|
18
|
+
- mafe
|
19
|
+
x-xss-protection:
|
20
|
+
- 1; mode=block
|
21
|
+
vary:
|
22
|
+
- Accept-Language
|
23
|
+
cache-control:
|
24
|
+
- private
|
25
|
+
body: |
|
26
|
+
{
|
27
|
+
"status": "INVALID_REQUEST",
|
28
|
+
"results": [ ],
|
29
|
+
"html_attributions": [ ]
|
30
|
+
}
|
31
|
+
|
32
|
+
http_version: "1.1"
|
33
|
+
- !ruby/struct:VCR::HTTPInteraction
|
34
|
+
request: !ruby/struct:VCR::Request
|
35
|
+
method: :get
|
36
|
+
uri: https://maps.googleapis.com:443/maps/api/place/details/json?reference=CoQBeAAAAO-prCRp9Atcj_rvavsLyv-DnxbGkw8QyRZb6Srm6QHOcww6lqFhIs2c7Ie6fMg3PZ4PhicfJL7ZWlaHaLDTqmRisoTQQUn61WTcSXAAiCOzcm0JDBnafqrskSpFtNUgzGAOx29WGnWSP44jmjtioIsJN9ik8yjK7UxP4buAmMPVEhBXPiCfHXk1CQ6XRuQhpztsGhQU4U6-tWjTHcLSVzjbNxoiuihbaA&sensor=false&key=AIzaSyATGBjcfrRXQtNEMMyt8Fw7tSGEY8PQwv0
|
37
|
+
body:
|
38
|
+
headers:
|
39
|
+
response: !ruby/struct:VCR::Response
|
40
|
+
status: !ruby/struct:VCR::ResponseStatus
|
41
|
+
code: 200
|
42
|
+
message: OK
|
43
|
+
headers:
|
44
|
+
content-type:
|
45
|
+
- application/json; charset=UTF-8
|
46
|
+
x-xss-protection:
|
47
|
+
- 1; mode=block
|
48
|
+
server:
|
49
|
+
- mafe
|
50
|
+
date:
|
51
|
+
- Mon, 16 May 2011 20:56:23 GMT
|
52
|
+
cache-control:
|
53
|
+
- private
|
54
|
+
vary:
|
55
|
+
- Accept-Language
|
56
|
+
body: |
|
57
|
+
{
|
58
|
+
"status": "OK",
|
59
|
+
"result": {
|
60
|
+
"name": "Strike Bowling Bar Darling Harbour",
|
61
|
+
"vicinity": "The Promenade, Sydney",
|
62
|
+
"types": [ "bar", "establishment" ],
|
63
|
+
"formatted_phone_number": "(02) 9276 7100",
|
64
|
+
"formatted_address": "22 The Promenade, Sydney NSW, Australia",
|
65
|
+
"address_components": [ {
|
66
|
+
"long_name": "22",
|
67
|
+
"short_name": "22",
|
68
|
+
"types": [ "street_number" ]
|
69
|
+
}, {
|
70
|
+
"long_name": "The Promenade",
|
71
|
+
"short_name": "The Promenade",
|
72
|
+
"types": [ "route" ]
|
73
|
+
}, {
|
74
|
+
"long_name": "Sydney",
|
75
|
+
"short_name": "Sydney",
|
76
|
+
"types": [ "locality", "political" ]
|
77
|
+
}, {
|
78
|
+
"long_name": "NSW",
|
79
|
+
"short_name": "NSW",
|
80
|
+
"types": [ "administrative_area_level_1", "political" ]
|
81
|
+
}, {
|
82
|
+
"long_name": "2000",
|
83
|
+
"short_name": "2000",
|
84
|
+
"types": [ "postal_code" ]
|
85
|
+
} ],
|
86
|
+
"geometry": {
|
87
|
+
"location": {
|
88
|
+
"lat": -33.8662990,
|
89
|
+
"lng": 151.2016580
|
90
|
+
}
|
91
|
+
},
|
92
|
+
"url": "http://maps.google.com/maps/place?cid=8959672613212618319",
|
93
|
+
"icon": "http://maps.gstatic.com/mapfiles/place_api/icons/bar-71.png",
|
94
|
+
"reference": "CoQBeAAAAAUMe04SUnm6RIGcuqMjKTx-Ic-IUjZvVWd7iAUix9aXSq5zc6HD1qz0eV7WpKw6OYRn8ROXtP30MbsuXA6hwDnqMZP4CCEbuM0wzYxRhQYA8w1u5PhPc68qPYpnJewYgdAn8ABQS4HsAlngvJCzoUvQ3FgvTRtE-AvWiPNfb3QiEhBQr_GLVUynpIk18yxa89eGGhSs16baRJ75DexGyna6FTtzOTS97Q",
|
95
|
+
"id": "0a4e24c365f4bd70080f99bb80153c5ba3faced8"
|
96
|
+
},
|
97
|
+
"html_attributions": [ ]
|
98
|
+
}
|
99
|
+
|
100
|
+
http_version: "1.1"
|
data/spec/vcr_setup.rb
ADDED
metadata
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: google_places
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Marcel de Graaf
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-05-16 00:00:00 +02:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: httparty
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rspec
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: fakeweb
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :development
|
62
|
+
version_requirements: *id003
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: vcr
|
65
|
+
prerelease: false
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
type: :development
|
76
|
+
version_requirements: *id004
|
77
|
+
description: This gem provides a Ruby wrapper around the Google Places API for use in your own project. Please note that this gem does not provide OAuth authentication.
|
78
|
+
email:
|
79
|
+
- mail@marceldegraaf.net
|
80
|
+
executables: []
|
81
|
+
|
82
|
+
extensions: []
|
83
|
+
|
84
|
+
extra_rdoc_files: []
|
85
|
+
|
86
|
+
files:
|
87
|
+
- .gitignore
|
88
|
+
- Gemfile
|
89
|
+
- README.rdoc
|
90
|
+
- Rakefile
|
91
|
+
- google_places.gemspec
|
92
|
+
- lib/google_places.rb
|
93
|
+
- lib/google_places/client.rb
|
94
|
+
- lib/google_places/location.rb
|
95
|
+
- lib/google_places/request.rb
|
96
|
+
- lib/google_places/spot.rb
|
97
|
+
- spec/api_key.sample.rb
|
98
|
+
- spec/google_places/client_spec.rb
|
99
|
+
- spec/google_places/location_spec.rb
|
100
|
+
- spec/google_places/request_spec.rb
|
101
|
+
- spec/google_places/spot_spec.rb
|
102
|
+
- spec/spec_helper.rb
|
103
|
+
- spec/vcr_cassettes/list_spots.yml
|
104
|
+
- spec/vcr_cassettes/single_spot.yml
|
105
|
+
- spec/vcr_setup.rb
|
106
|
+
has_rdoc: true
|
107
|
+
homepage: http://marceldegraaf.net
|
108
|
+
licenses: []
|
109
|
+
|
110
|
+
post_install_message:
|
111
|
+
rdoc_options: []
|
112
|
+
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
hash: 3
|
121
|
+
segments:
|
122
|
+
- 0
|
123
|
+
version: "0"
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
hash: 3
|
130
|
+
segments:
|
131
|
+
- 0
|
132
|
+
version: "0"
|
133
|
+
requirements: []
|
134
|
+
|
135
|
+
rubyforge_project:
|
136
|
+
rubygems_version: 1.5.0
|
137
|
+
signing_key:
|
138
|
+
specification_version: 3
|
139
|
+
summary: A Ruby wrapper around the Google Places API.
|
140
|
+
test_files:
|
141
|
+
- spec/api_key.sample.rb
|
142
|
+
- spec/google_places/client_spec.rb
|
143
|
+
- spec/google_places/location_spec.rb
|
144
|
+
- spec/google_places/request_spec.rb
|
145
|
+
- spec/google_places/spot_spec.rb
|
146
|
+
- spec/spec_helper.rb
|
147
|
+
- spec/vcr_cassettes/list_spots.yml
|
148
|
+
- spec/vcr_cassettes/single_spot.yml
|
149
|
+
- spec/vcr_setup.rb
|