Packages
indieweb
0.0.21
0.0.66
0.0.65
0.0.64
0.0.63
0.0.62
0.0.61
0.0.60
0.0.59
0.0.58
0.0.56
0.0.55
0.0.54
0.0.53
0.0.51
0.0.50
0.0.49
0.0.48
0.0.47
0.0.46
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.29
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.3
0.0.2
0.0.1
Collection of common IndieWeb utilites like authorship resolution, Webmention, post type discovery and IndieAuth.
Current section
Files
Jump to
Current section
Files
lib/indieweb/http/adapters/httpotion.ex
defmodule IndieWeb.Http.Adapters.HTTPotion do
@behaviour IndieWeb.Http.Adapter
@impl true
def request(uri, method, opts) do
options =
[
timeout: Keyword.get(opts, :timeout, IndieWeb.Http.timeout()),
follow_redirects: true,
auto_sni: true,
headers: Keyword.get(opts, :headers, %{}) |> Map.to_list(),
body: Keyword.get(opts, :body, %{}) |> URI.encode_query(),
query: Keyword.get(opts, :query, nil)
]
|> Enum.reject(fn {_, v} -> is_nil(v) end)
|> Keyword.new()
case HTTPotion.request(method, uri, options) do
%HTTPotion.ErrorResponse{} = err_resp ->
{:error, %IndieWeb.Http.Error{message: err_resp.message, raw: err_resp}}
%HTTPotion.Response{status_code: code, body: body, headers: headers} =
resp ->
{:ok,
%IndieWeb.Http.Response{
code: code,
body: body,
headers: headers.hdrs,
raw: resp
}}
end
end
end