Merge branch 'develop' into gun
[akkoma] / lib / pleroma / http / adapter_helper / hackney.ex
1 defmodule Pleroma.HTTP.AdapterHelper.Hackney do
2 @behaviour Pleroma.HTTP.AdapterHelper
3
4 @defaults [
5 connect_timeout: 10_000,
6 recv_timeout: 20_000,
7 follow_redirect: true,
8 force_redirect: true,
9 pool: :federation
10 ]
11
12 @spec options(keyword(), URI.t()) :: keyword()
13 def options(connection_opts \\ [], %URI{} = uri) do
14 proxy = Pleroma.Config.get([:http, :proxy_url], nil)
15
16 @defaults
17 |> Keyword.merge(Pleroma.Config.get([:http, :adapter], []))
18 |> Keyword.merge(connection_opts)
19 |> add_scheme_opts(uri)
20 |> Pleroma.HTTP.AdapterHelper.maybe_add_proxy(proxy)
21 end
22
23 defp add_scheme_opts(opts, %URI{scheme: "http"}), do: opts
24
25 defp add_scheme_opts(opts, %URI{scheme: "https", host: host}) do
26 ssl_opts = [
27 ssl_options: [
28 # Workaround for remote server certificate chain issues
29 partial_chain: &:hackney_connect.partial_chain/1,
30
31 # We don't support TLS v1.3 yet
32 versions: [:tlsv1, :"tlsv1.1", :"tlsv1.2"],
33 server_name_indication: to_charlist(host)
34 ]
35 ]
36
37 Keyword.merge(opts, ssl_opts)
38 end
39
40 def after_request(_), do: :ok
41 end