aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex S <alex.strizhakov@gmail.com>2019-08-14 20:08:15 +0300
committerAriadne Conill <ariadne@dereferenced.org>2019-08-18 22:34:14 +0000
commit5aa1b8283da91aa4b6c6fe35236ffd3b7ee4ef58 (patch)
tree999bdaf3d00644130266bb36e7948f4e01c19714
parenta577fa3c1a39f7dd79ad7c5ae3928c23c6be2da2 (diff)
downloadpleroma-5aa1b8283da91aa4b6c6fe35236ffd3b7ee4ef58.tar.gz
adding host header for gun adapter
-rw-r--r--lib/pleroma/http/connection.ex6
-rw-r--r--lib/pleroma/http/http.ex2
-rw-r--r--lib/pleroma/http/request_builder.ex9
-rw-r--r--test/http/request_builder_test.exs13
4 files changed, 24 insertions, 6 deletions
diff --git a/lib/pleroma/http/connection.ex b/lib/pleroma/http/connection.ex
index ef1c1cabd..6cb26c0fe 100644
--- a/lib/pleroma/http/connection.ex
+++ b/lib/pleroma/http/connection.ex
@@ -9,8 +9,7 @@ defmodule Pleroma.HTTP.Connection do
@options [
connect_timeout: 10_000,
- timeout: 20_000,
- protocols: [:http]
+ timeout: 20_000
]
@doc """
@@ -24,8 +23,7 @@ defmodule Pleroma.HTTP.Connection do
def new(opts \\ []) do
middleware = [Tesla.Middleware.FollowRedirects]
adapter = Application.get_env(:tesla, :adapter)
- options = options(opts)
- Tesla.client(middleware, {adapter, options})
+ Tesla.client(middleware, {adapter, options(opts)})
end
# fetch http options
diff --git a/lib/pleroma/http/http.ex b/lib/pleroma/http/http.ex
index d493a8b4a..21c057f4b 100644
--- a/lib/pleroma/http/http.ex
+++ b/lib/pleroma/http/http.ex
@@ -45,9 +45,9 @@ defmodule Pleroma.HTTP do
%{}
|> Builder.method(method)
+ |> Builder.url(url)
|> Builder.headers(headers)
|> Builder.opts(options)
- |> Builder.url(url)
|> Builder.add_param(:body, :body, body)
|> Builder.add_param(:query, :query, params)
|> Enum.into([])
diff --git a/lib/pleroma/http/request_builder.ex b/lib/pleroma/http/request_builder.ex
index 4e77870bd..6edf15bbe 100644
--- a/lib/pleroma/http/request_builder.ex
+++ b/lib/pleroma/http/request_builder.ex
@@ -53,6 +53,15 @@ defmodule Pleroma.HTTP.RequestBuilder do
header_list
end
+ # TODO: maybe we need this header for all adapters, so we won't fail on adapter change
+ header_list =
+ if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Gun do
+ %{host: host} = URI.parse(request.url)
+ header_list ++ [{"host", host}]
+ else
+ header_list
+ end
+
Map.put_new(request, :headers, header_list)
end
diff --git a/test/http/request_builder_test.exs b/test/http/request_builder_test.exs
index 5a645d4f3..73eaac273 100644
--- a/test/http/request_builder_test.exs
+++ b/test/http/request_builder_test.exs
@@ -3,7 +3,7 @@
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.HTTP.RequestBuilderTest do
- use ExUnit.Case, async: true
+ use ExUnit.Case
alias Pleroma.HTTP.RequestBuilder
describe "headers/2" do
@@ -23,6 +23,17 @@ defmodule Pleroma.HTTP.RequestBuilderTest do
headers: [{"user-agent", Pleroma.Application.user_agent()}]
}
end
+
+ test "it adds host header for gun adapter" do
+ adapter = Application.get_env(:tesla, :adapter)
+ Application.put_env(:tesla, :adapter, Tesla.Adapter.Gun)
+ on_exit(fn -> Application.put_env(:tesla, :adapter, adapter) end)
+
+ assert RequestBuilder.headers(%{url: "https://example.com"}, []) == %{
+ headers: [{"host", "example.com"}],
+ url: "https://example.com"
+ }
+ end
end
describe "add_optional_params/3" do