defmodule WeChat.Application do
@moduledoc false
use Application
def start(_type, _args) do
child_spec = [
spec_registry(),
spec_http_client()
]
Supervisor.start_link(child_spec, strategy: :one_for_one)
end
def http_adapter(opts \\ []) do
opts =
opts
|> Keyword.put(:name, http_name())
|> Keyword.put_new(:receive_timeout, 15_000)
{
Tesla.Adapter.Finch,
opts
}
end
defp http_name() do
__MODULE__.Finch
end
defp spec_http_client() do
app = Application.get_application(__MODULE__)
{
Finch,
pools: %{
:default => [
size: Application.get_env(app, :pool_size, 100),
count: Application.get_env(app, :pool_count, 1)
]
},
name: http_name()
}
end
defp spec_registry() do
WeChat.Registry
end
end