Current section

Files

Jump to
azure lib storage rest_client.ex
Raw

lib/storage/rest_client.ex

defmodule Azure.Storage.RestClient do
@moduledoc """
RestClient
"""
use Tesla
adapter(Tesla.Adapter.Hackney, recv_timeout: 40_000)
plug(Tesla.Middleware.Timeout, timeout: 40_000)
def proxy_middleware do
case System.get_env("http_proxy") do
nil ->
nil
"" ->
nil
proxy_cfg ->
proxy_cfg
|> String.split(":")
|> (fn [host, port] ->
{Tesla.Middleware.Opts,
[
# https://github.com/cmullaparthi/ibrowse/wiki/ibrowse-API
proxy_host: host |> String.to_charlist(),
proxy_port: port |> Integer.parse() |> elem(0)
]}
end).()
end
end
def new(base_url) when is_binary(base_url) do
[
{Tesla.Middleware.BaseUrl, base_url},
proxy_middleware()
]
|> Enum.filter(&(&1 != nil))
|> Tesla.client()
end
def new(base_url, headers) when is_binary(base_url) and is_map(headers) do
[
{Tesla.Middleware.BaseUrl, base_url},
{Tesla.Middleware.Headers, headers},
proxy_middleware()
]
|> Enum.filter(&(&1 != nil))
|> Tesla.client()
end
end