lib/salemove/http_client/middleware/map_headers.ex

defmodule Salemove.HttpClient.Middleware.MapHeaders do
  @behaviour Tesla.Middleware

  @moduledoc """
  Allows headers to be a map instead of a list.
  """

  def call(%Tesla.Env{headers: headers} = env, next, _) when is_map(headers) do
    headers_list = Map.to_list(headers)
    env = %Tesla.Env{env | headers: headers_list}
    Tesla.run(env, next)
  end

  def call(env, next, _) do
    Tesla.run(env, next)
  end
end