Add option to modify HTTP pool size
[akkoma] / lib / pleroma / http / adapter_helper.ex
index 4949dd7277ba6c00197ea60570cbbe8db30eec81..e5da3ffa8f03e9578f18152b5f238b1a81db91ab 100644 (file)
@@ -14,9 +14,7 @@ defmodule Pleroma.HTTP.AdapterHelper do
   alias Pleroma.HTTP.AdapterHelper
   require Logger
 
-  @type proxy ::
-          {Connection.host(), pos_integer()}
-          | {Connection.proxy_type(), Connection.host(), pos_integer()}
+  @type proxy :: {Connection.proxy_type(), Connection.host(), pos_integer(), list()}
 
   @callback options(keyword(), URI.t()) :: keyword()
 
@@ -25,7 +23,6 @@ defmodule Pleroma.HTTP.AdapterHelper do
 
   def format_proxy(proxy_url) do
     case parse_proxy(proxy_url) do
-      {:ok, host, port} -> {:http, host, port, []}
       {:ok, type, host, port} -> {type, host, port, []}
       _ -> nil
     end
@@ -50,6 +47,13 @@ defmodule Pleroma.HTTP.AdapterHelper do
     |> put_in([:pools, :default, :conn_opts, :proxy], proxy)
   end
 
+  def add_pool_size(opts, pool_size) do
+    opts
+    |> maybe_add_pools()
+    |> maybe_add_default_pool()
+    |> put_in([:pools, :default, :size], pool_size)
+  end
+
   defp maybe_add_pools(opts) do
     if Keyword.has_key?(opts, :pools) do
       opts
@@ -94,11 +98,11 @@ defmodule Pleroma.HTTP.AdapterHelper do
   defp proxy_type(_), do: {:error, :unknown}
 
   @spec parse_proxy(String.t() | tuple() | nil) ::
-          {:ok, host(), pos_integer()}
-          | {:ok, proxy_type(), host(), pos_integer()}
+          {:ok, proxy_type(), host(), pos_integer()}
           | {:error, atom()}
           | nil
   def parse_proxy(nil), do: nil
+  def parse_proxy(""), do: nil
 
   def parse_proxy(proxy) when is_binary(proxy) do
     with %URI{} = uri <- URI.parse(proxy),