class AlgoliaPlaces
Constants
- URL
- VERSION
Attributes
api_key[W]
app_id[W]
logger[W]
rest_exception[RW]
rest_exception?[RW]
Public Class Methods
root()
click to toggle source
# File lib/algolia_places.rb, line 19 def root File.expand_path '../..', __FILE__ end
Public Instance Methods
configuration(opts = {})
click to toggle source
Configure AlgoliaPlaces
@param [Hash] opts the options to configure AlgoliaPlaces
@option opts [String] :app_id Algolia App Id for PLACES @option opts [String] :api_key Algolia Api key @option opts [Boolean] :rest_exception (false) launch exception on REST errors @option opts [Logger] :logger by default STDOUT
# File lib/algolia_places.rb, line 37 def configuration(opts = {}) self.app_id = opts.fetch :app_id self.api_key = opts.fetch :api_key self.rest_exception = opts.fetch :rest_exception, false self.logger = opts[:logger] if opts[:logger] end
coordinates(query)
click to toggle source
# File lib/algolia_places.rb, line 44 def coordinates(query) begin resp = retrieve_query(query) coordinates_response(resp) rescue RestClient::ExceptionWithResponse => err if self.rest_exception? raise err else self.logger.fatal("#{err}\n#{err.backtrace.inspect}") default_coords end end end
hits(query)
click to toggle source
# File lib/algolia_places.rb, line 58 def hits(query) begin resp = retrieve_query(query) hits_response(resp) rescue RestClient::ExceptionWithResponse => err if self.rest_exception? raise err else self.logger.fatal("#{err}\n#{err.backtrace.inspect}") [] end end end
Protected Instance Methods
api_key()
click to toggle source
# File lib/algolia_places.rb, line 105 def api_key @api_key||= ENV['ALGOLIA_API_KEY'] end
app_id()
click to toggle source
# File lib/algolia_places.rb, line 101 def app_id @app_id ||= ENV['ALGOLIA_APP_ID'] end
coordinates_response(resp)
click to toggle source
# File lib/algolia_places.rb, line 78 def coordinates_response(resp) results = JsonPath.new('$.hits[0]._geoloc').on resp.body geo_loc = results.first if geo_loc.nil? default_coords else [geo_loc['lat'], geo_loc['lng']] end end
default_coords()
click to toggle source
# File lib/algolia_places.rb, line 88 def default_coords [0,0] end
hits_response(resp)
click to toggle source
# File lib/algolia_places.rb, line 74 def hits_response(resp) JsonPath.new('$.hits').on(resp.body).first end
logger()
click to toggle source
# File lib/algolia_places.rb, line 109 def logger @logger||= setup_logger end
retrieve_query(query)
click to toggle source
# File lib/algolia_places.rb, line 92 def retrieve_query(query) RestClient.post(URL, { query: query }.to_json, { 'X-Algolia-Application-Id' => self.app_id, 'X-Algolia-API-Key' => self.api_key, }) end
Private Instance Methods
setup_logger()
click to toggle source
# File lib/algolia_places.rb, line 115 def setup_logger log = Logger.new(STDOUT) log.level = Logger::INFO log end