From 46f9ba32ec79518860e2b3c17625cedfdaa40aba Mon Sep 17 00:00:00 2001 From: ruslandoga <67764432+ruslandoga@users.noreply.github.com> Date: Mon, 24 Jun 2024 21:35:34 +0700 Subject: [PATCH] allow to configure Finch pools --- lib/plausible/application.ex | 43 ++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/lib/plausible/application.ex b/lib/plausible/application.ex index 12ba22c31f0de..3ad2e5bd45031 100644 --- a/lib/plausible/application.ex +++ b/lib/plausible/application.ex @@ -119,35 +119,40 @@ defmodule Plausible.Application do end defp finch_pool_config() do - base_config = %{ - "https://icons.duckduckgo.com" => [ - conn_opts: [transport_opts: [timeout: 15_000]] - ] - } + default = Application.get_env(:plausible, Plausible.Finch) || [] + + base_config = + %{ + :default => default, + "https://icons.duckduckgo.com" => + Config.Reader.merge(default, conn_opts: [transport_opts: [timeout: 15_000]]) + } base_config - |> maybe_add_sentry_pool() - |> maybe_add_paddle_pool() - |> maybe_add_google_pools() + |> maybe_add_sentry_pool(default) + |> maybe_add_paddle_pool(default) + |> maybe_add_google_pools(default) end - defp maybe_add_sentry_pool(pool_config) do + defp maybe_add_sentry_pool(pool_config, default) do case Sentry.Config.dsn() do {"http" <> _rest = url, _, _} -> - Map.put(pool_config, url, size: 50) + Map.put(pool_config, url, Config.Reader.merge(default, size: 50)) nil -> pool_config end end - defp maybe_add_paddle_pool(pool_config) do + defp maybe_add_paddle_pool(pool_config, default) do paddle_conf = Application.get_env(:plausible, :paddle) cond do paddle_conf[:vendor_id] && paddle_conf[:vendor_auth_code] -> - Map.put(pool_config, Plausible.Billing.PaddleApi.vendors_domain(), - conn_opts: [transport_opts: [timeout: 15_000]] + Map.put( + pool_config, + Plausible.Billing.PaddleApi.vendors_domain(), + Config.Reader.merge(default, conn_opts: [transport_opts: [timeout: 15_000]]) ) true -> @@ -155,15 +160,19 @@ defmodule Plausible.Application do end end - defp maybe_add_google_pools(pool_config) do + defp maybe_add_google_pools(pool_config, default) do google_conf = Application.get_env(:plausible, :google) cond do google_conf[:client_id] && google_conf[:client_secret] -> pool_config - |> Map.put(google_conf[:api_url], conn_opts: [transport_opts: [timeout: 15_000]]) - |> Map.put(google_conf[:reporting_api_url], - conn_opts: [transport_opts: [timeout: 15_000]] + |> Map.put( + google_conf[:api_url], + Config.Reader.merge(default, conn_opts: [transport_opts: [timeout: 15_000]]) + ) + |> Map.put( + google_conf[:reporting_api_url], + Config.Reader.merge(default, conn_opts: [transport_opts: [timeout: 15_000]]) ) true ->