Add custom user-agent to geospatial calls

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2019-10-11 17:20:03 +02:00
parent 6afde20b96
commit d3a5b1f3e5
9 changed files with 86 additions and 18 deletions

View File

@@ -5,6 +5,7 @@ defmodule Mobilizon.Service.Geospatial.Nominatim do
alias Mobilizon.Addresses.Address
alias Mobilizon.Service.Geospatial.Provider
alias Mobilizon.Config
require Logger
@@ -19,11 +20,13 @@ defmodule Mobilizon.Service.Geospatial.Nominatim do
"""
@spec geocode(String.t(), keyword()) :: list(Address.t())
def geocode(lon, lat, options \\ []) do
user_agent = Keyword.get(options, :user_agent, Config.instance_user_agent())
headers = [{"User-Agent", user_agent}]
url = build_url(:geocode, %{lon: lon, lat: lat}, options)
Logger.debug("Asking Nominatim for geocode with #{url}")
with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <-
HTTPoison.get(url),
HTTPoison.get(url, headers),
{:ok, body} <- Poison.decode(body) do
[process_data(body)]
end
@@ -35,11 +38,13 @@ defmodule Mobilizon.Service.Geospatial.Nominatim do
"""
@spec search(String.t(), keyword()) :: list(Address.t())
def search(q, options \\ []) do
user_agent = Keyword.get(options, :user_agent, Config.instance_user_agent())
headers = [{"User-Agent", user_agent}]
url = build_url(:search, %{q: q}, options)
Logger.debug("Asking Nominatim for addresses with #{url}")
with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <-
HTTPoison.get(url),
HTTPoison.get(url, headers),
{:ok, body} <- Poison.decode(body) do
body |> Enum.map(fn entry -> process_data(entry) end) |> Enum.filter(& &1)
end