Class: AlgoliaPlaces
- Inherits:
-
Object
- Object
- AlgoliaPlaces
- Extended by:
- Forwardable
- Includes:
- Singleton
- Defined in:
- lib/algolia_places.rb,
lib/algolia_places/version.rb
Constant Summary collapse
- URL =
'https://places-dsn.algolia.net/1/places/query'
- VERSION =
"0.1.0"
Instance Attribute Summary collapse
- #api_key ⇒ Object
- #app_id ⇒ Object
- #logger ⇒ Object
-
#rest_exception ⇒ Object
(also: #rest_exception?)
Returns the value of attribute rest_exception.
Class Method Summary collapse
Instance Method Summary collapse
-
#configuration(opts = {}) ⇒ Object
Configure AlgoliaPlaces.
- #coordinates(query) ⇒ Object
- #default_coords ⇒ Object
- #retrieve_query(query) ⇒ Object
- #validate_response(resp) ⇒ Object
Instance Attribute Details
#api_key ⇒ Object
83 84 85 |
# File 'lib/algolia_places.rb', line 83 def api_key @api_key||= ENV['ALGOLIA_API_KEY'] end |
#app_id ⇒ Object
79 80 81 |
# File 'lib/algolia_places.rb', line 79 def app_id @app_id ||= ENV['ALGOLIA_APP_ID'] end |
#logger ⇒ Object
87 88 89 |
# File 'lib/algolia_places.rb', line 87 def logger @logger||= setup_logger end |
#rest_exception ⇒ Object Also known as: rest_exception?
Returns the value of attribute rest_exception.
25 26 27 |
# File 'lib/algolia_places.rb', line 25 def rest_exception @rest_exception end |
Class Method Details
.root ⇒ Object
17 18 19 |
# File 'lib/algolia_places.rb', line 17 def root File. '../..', __FILE__ end |
Instance Method Details
#configuration(opts = {}) ⇒ Object
Configure AlgoliaPlaces
35 36 37 38 39 40 |
# File 'lib/algolia_places.rb', line 35 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) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/algolia_places.rb', line 42 def coordinates(query) begin resp = retrieve_query(query) validate_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 |
#default_coords ⇒ Object
66 67 68 |
# File 'lib/algolia_places.rb', line 66 def default_coords [0,0] end |
#retrieve_query(query) ⇒ Object
70 71 72 73 74 75 76 77 |
# File 'lib/algolia_places.rb', line 70 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 |
#validate_response(resp) ⇒ Object
56 57 58 59 60 61 62 63 64 |
# File 'lib/algolia_places.rb', line 56 def validate_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 |