summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Felder <feld@feld.me>2024-07-24 15:40:15 -0400
committerMark Felder <feld@feld.me>2024-07-24 15:40:15 -0400
commit858fd01c012a48928b55999e8209371a5049c3e6 (patch)
treee48b02693b290bff0a5707d50d23b349b1d18f74
parentf32a837afa694999426d644d00ddbe0c521d0bb3 (diff)
downloadpleroma-858fd01c012a48928b55999e8209371a5049c3e6.tar.gz
pleroma-858fd01c012a48928b55999e8209371a5049c3e6.zip
Pleroma.HTTP: permit passing through custom Tesla Middlware for requests
-rw-r--r--lib/pleroma/http.ex17
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/pleroma/http.ex b/lib/pleroma/http.ex
index ec837e509..c11317850 100644
--- a/lib/pleroma/http.ex
+++ b/lib/pleroma/http.ex
@@ -68,7 +68,9 @@ defmodule Pleroma.HTTP do
adapter = Application.get_env(:tesla, :adapter)
- client = Tesla.client(adapter_middlewares(adapter), adapter)
+ extra_middleware = options[:tesla_middleware] || []
+
+ client = Tesla.client(adapter_middlewares(adapter, extra_middleware), adapter)
maybe_limit(
fn ->
@@ -102,20 +104,21 @@ defmodule Pleroma.HTTP do
fun.()
end
- defp adapter_middlewares(Tesla.Adapter.Gun) do
- [Tesla.Middleware.FollowRedirects, Pleroma.Tesla.Middleware.ConnectionPool]
+ defp adapter_middlewares(Tesla.Adapter.Gun, extra_middleware) do
+ [Tesla.Middleware.FollowRedirects, Pleroma.Tesla.Middleware.ConnectionPool] ++
+ extra_middleware
end
- defp adapter_middlewares({Tesla.Adapter.Finch, _}) do
- [Tesla.Middleware.FollowRedirects]
+ defp adapter_middlewares({Tesla.Adapter.Finch, _}, extra_middleware) do
+ [Tesla.Middleware.FollowRedirects] ++ extra_middleware
end
- defp adapter_middlewares(_) do
+ defp adapter_middlewares(_, extra_middleware) do
if Pleroma.Config.get(:env) == :test do
# Emulate redirects in test env, which are handled by adapters in other environments
[Tesla.Middleware.FollowRedirects]
else
- []
+ extra_middleware
end
end
end