mirror of
https://github.com/System-End/theseus.git
synced 2026-04-19 18:45:15 +00:00
switch geocoding to hackclub service
This commit is contained in:
parent
1ad81bcd9f
commit
d40051675f
1 changed files with 21 additions and 13 deletions
|
|
@ -44,11 +44,11 @@ module GeocodingService
|
|||
end
|
||||
|
||||
def first_hit(params)
|
||||
google_geocode(params)
|
||||
hackclub_geocode(params)
|
||||
end
|
||||
|
||||
def google_geocode(params)
|
||||
Rails.logger.info "Google Geocoding: #{params}"
|
||||
def hackclub_geocode(params)
|
||||
Rails.logger.info "Hack Club Geocoding: #{params}"
|
||||
|
||||
address_components = []
|
||||
address_components << params[:street] if params[:street]
|
||||
|
|
@ -59,29 +59,37 @@ module GeocodingService
|
|||
|
||||
address = address_components.join(", ")
|
||||
|
||||
response = conn.get("maps/api/geocode/json", {
|
||||
response = conn.get("v1/geocode", {
|
||||
address: address,
|
||||
key: ENV["GOOGLE_MAPS_API_KEY"]
|
||||
key: ENV["HACKCLUB_GEOCODER_API_KEY"],
|
||||
})
|
||||
|
||||
results = response.body["results"]
|
||||
return nil if results.empty?
|
||||
# Handle error responses
|
||||
if response.body.key?("error")
|
||||
Rails.logger.error "Hack Club Geocoder error: #{response.body["error"]}"
|
||||
Honeybadger.notify("Geocoding error: #{response.body["error"]}")
|
||||
return nil
|
||||
end
|
||||
|
||||
result = results.first
|
||||
location = result["geometry"]["location"]
|
||||
# Parse successful response
|
||||
result = response.body
|
||||
|
||||
{
|
||||
lat: location["lat"].to_s,
|
||||
lon: location["lng"].to_s,
|
||||
lat: result["lat"].to_s,
|
||||
lon: result["lng"].to_s, # hc api returns "lng", we convert to "lon" for consistency with OSM
|
||||
display_name: result["formatted_address"],
|
||||
place_id: result["place_id"]
|
||||
place_id: result.dig("raw_backend_response", "results", 0, "place_id") || "dunno",
|
||||
}
|
||||
rescue => e
|
||||
Rails.logger.error "Hack Club Geocoder request failed: #{e.message}"
|
||||
Honeybadger.notify(e)
|
||||
nil
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def conn
|
||||
@conn ||= Faraday.new(url: "https://maps.googleapis.com/") do |faraday|
|
||||
@conn ||= Faraday.new(url: "https://geocoder.hackclub.com/") do |faraday|
|
||||
faraday.request :url_encoded
|
||||
faraday.adapter Faraday.default_adapter
|
||||
faraday.response :json
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue