defmodule MVola.Application do use Application def start(_type, args) do child_spec = case args do [env: :prod] -> [ spec_http_client(), ] [env: :test] -> [ spec_http_client(), {Plug.Cowboy, scheme: :http, plug: MVola.MockServer, options: [port: 8071]}, ] [env: :dev] -> [spec_http_client(),] [_] -> [spec_http_client(),] end Supervisor.start_link(child_spec, strategy: :one_for_one, name: MVola.Supervisor) end def 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 end