diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/reverse_proxy.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/reverse_proxy/client.ex | 18 | ||||
| -rw-r--r-- | lib/pleroma/reverse_proxy/client/wrapper.ex | 29 | 
3 files changed, 30 insertions, 19 deletions
| diff --git a/lib/pleroma/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex index 406f7e2b8..ec69a1779 100644 --- a/lib/pleroma/reverse_proxy.ex +++ b/lib/pleroma/reverse_proxy.ex @@ -411,7 +411,7 @@ defmodule Pleroma.ReverseProxy do      {:ok, :no_duration_limit, :no_duration_limit}    end -  defp client, do: Pleroma.ReverseProxy.Client +  defp client, do: Pleroma.ReverseProxy.Client.Wrapper    defp track_failed_url(url, error, opts) do      ttl = diff --git a/lib/pleroma/reverse_proxy/client.ex b/lib/pleroma/reverse_proxy/client.ex index 8698fa2e1..75243d2dc 100644 --- a/lib/pleroma/reverse_proxy/client.ex +++ b/lib/pleroma/reverse_proxy/client.ex @@ -17,22 +17,4 @@ defmodule Pleroma.ReverseProxy.Client do    @callback stream_body(map()) :: {:ok, binary(), map()} | :done | {:error, atom() | String.t()}    @callback close(reference() | pid() | map()) :: :ok - -  def request(method, url, headers, body \\ "", opts \\ []) do -    client().request(method, url, headers, body, opts) -  end - -  def stream_body(ref), do: client().stream_body(ref) - -  def close(ref), do: client().close(ref) - -  defp client do -    :tesla -    |> Application.get_env(:adapter) -    |> client() -  end - -  defp client(Tesla.Adapter.Hackney), do: Pleroma.ReverseProxy.Client.Hackney -  defp client(Tesla.Adapter.Gun), do: Pleroma.ReverseProxy.Client.Tesla -  defp client(_), do: Pleroma.Config.get!(Pleroma.ReverseProxy.Client)  end diff --git a/lib/pleroma/reverse_proxy/client/wrapper.ex b/lib/pleroma/reverse_proxy/client/wrapper.ex new file mode 100644 index 000000000..06dd29fea --- /dev/null +++ b/lib/pleroma/reverse_proxy/client/wrapper.ex @@ -0,0 +1,29 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.ReverseProxy.Client.Wrapper do +  @moduledoc "Meta-client that calls the appropriate client from the config." +  @behaviour Pleroma.ReverseProxy.Client + +  @impl true +  def request(method, url, headers, body \\ "", opts \\ []) do +    client().request(method, url, headers, body, opts) +  end + +  @impl true +  def stream_body(ref), do: client().stream_body(ref) + +  @impl true +  def close(ref), do: client().close(ref) + +  defp client do +    :tesla +    |> Application.get_env(:adapter) +    |> client() +  end + +  defp client(Tesla.Adapter.Hackney), do: Pleroma.ReverseProxy.Client.Hackney +  defp client(Tesla.Adapter.Gun), do: Pleroma.ReverseProxy.Client.Tesla +  defp client(_), do: Pleroma.Config.get!(Pleroma.ReverseProxy.Client) +end | 
