MRF: create MRF.Policy behaviour separate from MRF module
[akkoma] / lib / pleroma / http / request_builder.ex
index 491acd0f9fbcc67fb282efdf23ea1efa3ab1f50d..631c927af2b35a9e9d34bba6555658099b4a998f 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.HTTP.RequestBuilder do
@@ -34,10 +34,12 @@ defmodule Pleroma.HTTP.RequestBuilder do
   @spec headers(Request.t(), Request.headers()) :: Request.t()
   def headers(request, headers) do
     headers_list =
-      if Pleroma.Config.get([:http, :send_user_agent]) do
-        headers ++ [{"user-agent", Pleroma.Application.user_agent()}]
+      with true <- Pleroma.Config.get([:http, :send_user_agent]),
+           nil <- Enum.find(headers, fn {key, _val} -> String.downcase(key) == "user-agent" end) do
+        [{"user-agent", Pleroma.Application.user_agent()} | headers]
       else
-        headers
+        _ ->
+          headers
       end
 
     %{request | headers: headers_list}
@@ -49,26 +51,6 @@ defmodule Pleroma.HTTP.RequestBuilder do
   @spec opts(Request.t(), keyword()) :: Request.t()
   def opts(request, options), do: %{request | opts: options}
 
-  # NOTE: isn't used anywhere
-  @doc """
-  Add optional parameters to the request
-
-  """
-  @spec add_optional_params(Request.t(), %{optional(atom) => atom}, keyword()) :: map()
-  def add_optional_params(request, _, []), do: request
-
-  def add_optional_params(request, definitions, [{key, value} | tail]) do
-    case definitions do
-      %{^key => location} ->
-        request
-        |> add_param(location, key, value)
-        |> add_optional_params(definitions, tail)
-
-      _ ->
-        add_optional_params(request, definitions, tail)
-    end
-  end
-
   @doc """
   Add optional parameters to the request
   """