Class: MapboxService

Inherits:
Object
  • Object
show all
Defined in:
app/services/mapbox_service.rb

Constant Summary collapse

BASE_URL =
'https://api.mapbox.com'.freeze

Instance Method Summary collapse

Constructor Details

#initialize(access_token = ENV['MAPBOX_TOKEN']) ⇒ MapboxService

Returns a new instance of MapboxService.



4
5
6
# File 'app/services/mapbox_service.rb', line 4

def initialize(access_token = ENV['MAPBOX_TOKEN'])
  @access_token = access_token
end

Instance Method Details

#reverse_geocode(longitude, latitude) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/services/mapbox_service.rb', line 8

def reverse_geocode(longitude, latitude)
  cache_key = "mapbox:reverse_geocode:#{latitude}:#{longitude}"
  Rails.cache.fetch(cache_key, expires_in: 10.minutes) do
    endpoint_url = "#{BASE_URL}/search/geocode/v6/reverse"
    params = {
      longitude: longitude,
      latitude: latitude,
      access_token: @access_token,
      language: 'en,th',
    }
    url = "#{endpoint_url}?#{params.to_param}"
    response = Faraday.get(url)
    response_json = JSON.parse(response.body)

    handle_response(response_json)
  end
end