Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

rusty_google_places

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rusty_google_places

  • 0.1.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

= Google Places

This gem provides a Ruby wrapper around the Google Places API, using HTTParty. At this moment the gem does not support OAuth authentication and will only work with an API key.

== Obtaining an API key

To be able to use this gem, you'll need a Google Places API key. To request an API key, point your browser to https://code.google.com/apis/console and follow the instructions there. You'll find your API key on the API Access tab under Simple API Access.

== Installing the gem

To use this gem, install it with gem install google_places or add it to your Gemfile:

gem 'google_places'

And install it with bundle install

== Usage

=== The spot

Each of the API methods below returns a GooglePlaces::Spot or a collection of those. Each of these objects has these attributes:

  • reference: a token to query the Google Places API for more details about the spot
  • vicinity: the street or neighborhood of the spot
  • lat: the latitude of the spot
  • lng: the longitude of the spot
  • name: the name of the spot
  • icon: a URL to the icon of this spot
  • types: array of feature types describing the spot, see list of supported types[http://code.google.com/apis/maps/documentation/places/supported_types.html]
  • formatted_phone_number: formatted phone number of the spot (eg (555)555-555)
  • formatted_address: the full address of the spot formatted with commas
  • address_components: the components (eg street address, city, state) of the spot's address in an array
  • rating: the rating of this spot on Google Places
  • url: the url of this spot on Google Places

=== Retrieving a list of spots

First register a new Client:

@client = GooglePlaces::Client.new(API_KEY)

Then retrieve a list of spots:

@client.spots(-33.8670522, 151.1957362)

Search by a specific type:

@client.spots(-33.8670522, 151.1957362, :types => 'restaurant')

Search by multiple types:

@client.spots(-33.8670522, 151.1957362, :types => ['restaurant','food'])

Search by multiple types but exclude one type:

@client.spots(-33.8670522, 151.1957362, :types => ['restaurant','food'], :exclude => 'cafe')

Search by multiple types but exclude multiple types:

@client.spots(-33.8670522, 151.1957362, :types => ['restaurant','food'], :exclude => ['cafe', 'establishment'])

Search by name:

@client.spots(-33.8670522, 151.1957362, :name => 'italian')

Search by name and type:

@client.spots(-33.8670522, 151.1957362, :name => 'italian', :types => 'restaurant')

Search in a radius (in meters):

@client.spots(-33.8670522, 151.1957362, :radius => 100)

Get results in specific language:

@client.spots(-33.8670522, 151.1957362, :language => 'en')

=== Retrieving spots based on query

@client.spots_by_query('Pizza near Miami Florida')

Search by multiple types and exclude multiple types

@client.spots_by_query('Pizza near Miami Florida', :types => ['restaurant', 'food'], :exclude => ['cafe', 'establishment'])

=== Retrieving a single spot

First register a new Client:

@client = GooglePlaces::Client.new(API_KEY)

Then retrieve the spot:

@client.spot('CmRYAAA...upoTH3g')

=== Retrieving a single photo's url

First register a new Client:

@client = GooglePlaces::Client.new(API_KEY)

Then retrieve the spot:

@spot = @client.spot('CmRYAAA...upoTH3g')

Then request one of the photos url with a max width:

url = @spot.photos[0].fetch_url(800)

=== Places Autocomplete

https://developers.google.com/places/documentation/autocomplete

Note: Autocomplete is often used and better suited on client side (browser/javascript). The Autocomplete API is rate limited, so make sure you check the usage limits before deciding on whether to call the API server/client side.

https://developers.google.com/maps/documentation/business/articles/usage_limits

==== Example usage

Register a new Client:

@client = GooglePlaces::Client.new(API_KEY)

Then request a prediction based on partial match:

@client.predictions_by_input( 'San F', lat: 0.0, lng: 0.0, radius: 20000000, types: 'geocode', language: I18n.locale, )

The response will be an array of predictions.

== Development

You're very welcome to add functionality to this gem. To do so, follow these steps:

  1. Fork the project on Github
  2. Clone your own fork on your development machine
  3. Install the dependencies with bundle install
  4. Copy spec/api_key.sample.rb to spec/api_key.rb
  5. Insert your own Google Places API key in spec/api_key.rb
  6. Run the specs with rspec spec
  7. Hackety hack
  8. ???
  9. PROFIT

Feel free to send me a pull request but please make sure your changes are sufficiently covered by RSpec.

== Important Note

Concerning the reference field, the Google Places API documentation states:

"You can store this token and use it at any time in future to refresh cached data about this Place, but the same token is not guaranteed to be returned for any given Place across different searches."

Please be aware that the reference field in spot details may differ from the reference used to retrieve that spot.

FAQs

Package last updated on 29 Nov 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc