1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.HTTP.Connection do
7 Connection for http-requests.
11 connect_timeout: 10_000,
13 follow_redirect: true,
17 @adapter Application.get_env(:tesla, :adapter)
20 Configure a client connection
26 @spec new(Keyword.t()) :: Tesla.Env.client()
27 def new(opts \\ []) do
28 Tesla.client([], {@adapter, hackney_options(opts)})
31 # fetch Hackney options
33 def hackney_options(opts) do
34 options = Keyword.get(opts, :adapter, [])
35 adapter_options = Pleroma.Config.get([:http, :adapter], [])
36 proxy_url = Pleroma.Config.get([:http, :proxy_url], nil)
39 |> Keyword.merge(adapter_options)
40 |> Keyword.merge(options)
41 |> Keyword.merge(proxy: proxy_url)