Fork of Pleroma with site-specific changes and feature branches https://git.pleroma.social/pleroma/pleroma
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

44 linhas
1.0KB

  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.HTTP.Connection do
  5. @moduledoc """
  6. Connection for http-requests.
  7. """
  8. @hackney_options [
  9. connect_timeout: 10_000,
  10. recv_timeout: 20_000,
  11. follow_redirect: true,
  12. force_redirect: true,
  13. pool: :federation
  14. ]
  15. @adapter Application.get_env(:tesla, :adapter)
  16. @doc """
  17. Configure a client connection
  18. # Returns
  19. Tesla.Env.client
  20. """
  21. @spec new(Keyword.t()) :: Tesla.Env.client()
  22. def new(opts \\ []) do
  23. Tesla.client([], {@adapter, hackney_options(opts)})
  24. end
  25. # fetch Hackney options
  26. #
  27. def hackney_options(opts) do
  28. options = Keyword.get(opts, :adapter, [])
  29. adapter_options = Pleroma.Config.get([:http, :adapter], [])
  30. proxy_url = Pleroma.Config.get([:http, :proxy_url], nil)
  31. @hackney_options
  32. |> Keyword.merge(adapter_options)
  33. |> Keyword.merge(options)
  34. |> Keyword.merge(proxy: proxy_url)
  35. end
  36. end