- defp add_scheme_opts(opts, %URI{scheme: "http"}), do: opts
-
- defp add_scheme_opts(opts, %URI{scheme: "https", host: host, port: port}) do
- adapter_opts = [
- certificates_verification: true,
- tls_opts: [
- verify: :verify_peer,
- cacertfile: CAStore.file_path(),
- depth: 20,
- reuse_sessions: false,
- verify_fun: {&:ssl_verify_hostname.verify_fun/3, [check_hostname: format_host(host)]},
- log_level: :warning
- ]
- ]
-
- adapter_opts =
- if port != 443 do
- Keyword.put(adapter_opts, :transport, :tls)
- else
- adapter_opts
- end
-
- Keyword.merge(opts, adapter_opts)
- end
-
- defp maybe_get_conn(adapter_opts, uri, connection_opts) do
- {receive_conn?, opts} =
- adapter_opts
- |> Keyword.merge(connection_opts)
- |> Keyword.pop(:receive_conn, true)
-
- if Connections.alive?(:gun_connections) and receive_conn? do
- try_to_get_conn(uri, opts)
- else
- opts
+ @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} | {:error, atom()}
+ def get_conn(uri, opts) do
+ case ConnectionPool.get_conn(uri, opts) do
+ {:ok, conn_pid} -> {:ok, Keyword.merge(opts, conn: conn_pid, close_conn: false)}
+ err -> err