defmodule SireneBase do @moduledoc false defmacro __using__(_) do quote do import JWT end end use HTTPoison.Base alias Jason alias JWT alias GenServer def process_request_url(url) do "https://api.insee.fr/entreprises/sirene/V3" <> url end def process_request_headers(_headers) do jwt = GenServer.call(SireneWorker, :get) [{"Authorization", "Bearer #{jwt.access_token}"}, {"Accept", "application/json"}] end def get_jwt do case JWT.post("", nil, "") do {:ok, %HTTPoison.Response{body: body}} -> body |> Jason.decode!() {:error, reason} -> IO.inspect(reason) end end end