mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2025-01-03 05:48:42 +00:00
Add an AdapterHelper for Finch so we can support streaming request bodies
This commit is contained in:
parent
0804b73c0a
commit
0bf82a1745
2 changed files with 35 additions and 0 deletions
|
@ -52,6 +52,7 @@ defmodule Pleroma.HTTP.AdapterHelper do
|
||||||
case adapter() do
|
case adapter() do
|
||||||
Tesla.Adapter.Gun -> AdapterHelper.Gun
|
Tesla.Adapter.Gun -> AdapterHelper.Gun
|
||||||
Tesla.Adapter.Hackney -> AdapterHelper.Hackney
|
Tesla.Adapter.Hackney -> AdapterHelper.Hackney
|
||||||
|
{Tesla.Adapter.Finch, _} -> AdapterHelper.Finch
|
||||||
_ -> AdapterHelper.Default
|
_ -> AdapterHelper.Default
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -124,6 +125,7 @@ defmodule Pleroma.HTTP.AdapterHelper do
|
||||||
def can_stream? do
|
def can_stream? do
|
||||||
case Application.get_env(:tesla, :adapter) do
|
case Application.get_env(:tesla, :adapter) do
|
||||||
Tesla.Adapter.Gun -> true
|
Tesla.Adapter.Gun -> true
|
||||||
|
{Tesla.Adapter.Finch, _} -> true
|
||||||
_ -> false
|
_ -> false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
33
lib/pleroma/http/adapter_helper/finch.ex
Normal file
33
lib/pleroma/http/adapter_helper/finch.ex
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.HTTP.AdapterHelper.Finch do
|
||||||
|
@behaviour Pleroma.HTTP.AdapterHelper
|
||||||
|
|
||||||
|
alias Pleroma.Config
|
||||||
|
alias Pleroma.HTTP.AdapterHelper
|
||||||
|
|
||||||
|
@spec options(keyword(), URI.t()) :: keyword()
|
||||||
|
def options(incoming_opts \\ [], %URI{} = _uri) do
|
||||||
|
proxy =
|
||||||
|
[:http, :proxy_url]
|
||||||
|
|> Config.get()
|
||||||
|
|> AdapterHelper.format_proxy()
|
||||||
|
|
||||||
|
config_opts = Config.get([:http, :adapter], [])
|
||||||
|
|
||||||
|
config_opts
|
||||||
|
|> Keyword.merge(incoming_opts)
|
||||||
|
|> AdapterHelper.maybe_add_proxy(proxy)
|
||||||
|
|> maybe_stream()
|
||||||
|
end
|
||||||
|
|
||||||
|
# Tesla Finch adapter uses response: :stream
|
||||||
|
defp maybe_stream(opts) do
|
||||||
|
case Keyword.pop(opts, :stream, nil) do
|
||||||
|
{true, opts} -> Keyword.put(opts, :response, :stream)
|
||||||
|
{_, opts} -> opts
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue