diff --git a/CHANGELOG.md b/CHANGELOG.md
index c658af460..7c7cd8601 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
+### Removed
+- Non-finch HTTP adapters. `:tesla, :adapter` is now highly recommended to be set to the default.
+
+## 2022.08
+
### Added
- extended runtime module support, see config cheatsheet
- quote posting; quotes are limited to public posts
diff --git a/lib/pleroma/http/adapter_helper/gun.ex b/lib/pleroma/http/adapter_helper/gun.ex
deleted file mode 100644
index 251539f34..000000000
--- a/lib/pleroma/http/adapter_helper/gun.ex
+++ /dev/null
@@ -1,82 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2021 Pleroma Authors
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.HTTP.AdapterHelper.Gun do
- @behaviour Pleroma.HTTP.AdapterHelper
-
- alias Pleroma.Config
- alias Pleroma.HTTP.AdapterHelper
-
- require Logger
-
- @defaults [
- retry: 1,
- retry_timeout: 1_000
- ]
-
- @type pool() :: :federation | :upload | :media | :default
-
- @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], [])
-
- @defaults
- |> Keyword.merge(config_opts)
- |> add_scheme_opts(uri)
- |> AdapterHelper.maybe_add_proxy(proxy)
- |> Keyword.merge(incoming_opts)
- |> put_timeout()
- end
-
- defp add_scheme_opts(opts, %{scheme: "http"}), do: opts
-
- defp add_scheme_opts(opts, %{scheme: "https"}) do
- Keyword.put(opts, :certificates_verification, true)
- end
-
- defp put_timeout(opts) do
- {recv_timeout, opts} = Keyword.pop(opts, :recv_timeout, pool_timeout(opts[:pool]))
- # this is the timeout to receive a message from Gun
- # `:timeout` key is used in Tesla
- Keyword.put(opts, :timeout, recv_timeout)
- end
-
- @spec pool_timeout(pool()) :: non_neg_integer()
- def pool_timeout(pool) do
- default = Config.get([:pools, :default, :recv_timeout], 5_000)
-
- Config.get([:pools, pool, :recv_timeout], default)
- end
-
- def limiter_setup do
- prefix = Pleroma.Gun.ConnectionPool
- wait = Config.get([:connections_pool, :connection_acquisition_wait])
- retries = Config.get([:connections_pool, :connection_acquisition_retries])
-
- :pools
- |> Config.get([])
- |> Enum.each(fn {name, opts} ->
- max_running = Keyword.get(opts, :size, 50)
- max_waiting = Keyword.get(opts, :max_waiting, 10)
-
- result =
- ConcurrentLimiter.new(:"#{prefix}.#{name}", max_running, max_waiting,
- wait: wait,
- max_retries: retries
- )
-
- case result do
- :ok -> :ok
- {:error, :existing} -> :ok
- end
- end)
-
- :ok
- end
-end
diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex
deleted file mode 100644
index af0ada1e7..000000000
--- a/lib/pleroma/http/adapter_helper/hackney.ex
+++ /dev/null
@@ -1,40 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2021 Pleroma Authors
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.HTTP.AdapterHelper.Hackney do
- @behaviour Pleroma.HTTP.AdapterHelper
-
- @defaults [
- follow_redirect: true,
- force_redirect: true
- ]
-
- @spec options(keyword(), URI.t()) :: keyword()
- def options(connection_opts \\ [], %URI{} = uri) do
- proxy = Pleroma.Config.get([:http, :proxy_url])
-
- config_opts = Pleroma.Config.get([:http, :adapter], [])
-
- @defaults
- |> Keyword.merge(config_opts)
- |> Keyword.merge(connection_opts)
- |> add_scheme_opts(uri)
- |> maybe_add_with_body()
- |> Pleroma.HTTP.AdapterHelper.maybe_add_proxy(proxy)
- end
-
- defp add_scheme_opts(opts, %URI{scheme: "https"}) do
- Keyword.put(opts, :ssl_options, versions: [:"tlsv1.3", :"tlsv1.2", :"tlsv1.1", :tlsv1])
- end
-
- defp add_scheme_opts(opts, _), do: opts
-
- defp maybe_add_with_body(opts) do
- if opts[:max_body] do
- Keyword.put(opts, :with_body, true)
- else
- opts
- end
- end
-end
diff --git a/test/pleroma/http/adapter_helper/hackney_test.exs b/test/pleroma/http/adapter_helper/hackney_test.exs
deleted file mode 100644
index 85150a65c..000000000
--- a/test/pleroma/http/adapter_helper/hackney_test.exs
+++ /dev/null
@@ -1,35 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2021 Pleroma Authors
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.HTTP.AdapterHelper.HackneyTest do
- use ExUnit.Case, async: true
- use Pleroma.Tests.Helpers
-
- alias Pleroma.HTTP.AdapterHelper.Hackney
-
- setup_all do
- uri = URI.parse("http://domain.com")
- {:ok, uri: uri}
- end
-
- describe "options/2" do
- setup do: clear_config([:http, :adapter], a: 1, b: 2)
-
- test "add proxy and opts from config", %{uri: uri} do
- opts = Hackney.options([proxy: "localhost:8123"], uri)
-
- assert opts[:a] == 1
- assert opts[:b] == 2
- assert opts[:proxy] == "localhost:8123"
- end
-
- test "respect connection opts and no proxy", %{uri: uri} do
- opts = Hackney.options([a: 2, b: 1], uri)
-
- assert opts[:a] == 2
- assert opts[:b] == 1
- refute Keyword.has_key?(opts, :proxy)
- end
- end
-end