Fix webfinger not following redirections by using a custom dedicated Tesla client

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2020-10-21 10:42:04 +02:00
parent e803cb0c1d
commit 85aa9df4f8
4 changed files with 78 additions and 26 deletions

View File

@@ -1,7 +1,6 @@
defmodule Mobilizon.Service.HTTP.RichMediaPreviewClient do
@moduledoc """
Tesla HTTP Basic Client
with JSON middleware
Tesla HTTP Basic Client that fetches HTML to extract metadata preview
"""
use Tesla

View File

@@ -0,0 +1,34 @@
defmodule Mobilizon.Service.HTTP.WebfingerClient do
@moduledoc """
Tesla HTTP Basic Client
with JSON middleware
"""
use Tesla
alias Mobilizon.Config
@default_opts [
recv_timeout: 20_000
]
adapter(Tesla.Adapter.Hackney, @default_opts)
@user_agent Config.instance_user_agent()
plug(Tesla.Middleware.FollowRedirects)
plug(Tesla.Middleware.Timeout, timeout: 10_000)
plug(Tesla.Middleware.Headers, [
{"User-Agent", @user_agent},
{"Accept", "application/json, application/activity+json, application/jrd+json"}
])
plug(Tesla.Middleware.JSON,
decode_content_types: [
"application/jrd+json",
"application/json",
"application/activity+json"
]
)
end