-6
lib/atex/http.ex
-6
lib/atex/http.ex
-13
lib/atex/http/adapter.ex
-13
lib/atex/http/adapter.ex
···
1
-
defmodule Atex.HTTP.Adapter do
2
-
@moduledoc """
3
-
Behaviour for defining a HTTP client adapter to be used within atex.
4
-
"""
5
-
alias Atex.HTTP.Response
6
-
7
-
@type success() :: {:ok, Response.t()}
8
-
@type error() :: {:error, Response.t() | term()}
9
-
@type result() :: success() | error()
10
-
11
-
@callback get(url :: String.t(), opts :: keyword()) :: result()
12
-
@callback post(url :: String.t(), opts :: keyword()) :: result()
13
-
end
···
-38
lib/atex/http/adapter/req.ex
-38
lib/atex/http/adapter/req.ex
···
1
-
defmodule Atex.HTTP.Adapter.Req do
2
-
@moduledoc """
3
-
`Req` adapter for atex.
4
-
"""
5
-
6
-
@behaviour Atex.HTTP.Adapter
7
-
8
-
@impl true
9
-
def get(url, opts) do
10
-
Req.get(url, opts) |> adapt()
11
-
end
12
-
13
-
@impl true
14
-
def post(url, opts) do
15
-
Req.post(url, opts) |> adapt()
16
-
end
17
-
18
-
@spec adapt({:ok, Req.Response.t()} | {:error, any()}) :: Atex.HTTP.Adapter.result()
19
-
defp adapt({:ok, %Req.Response{status: status} = res}) when status < 400 do
20
-
{:ok, to_response(res)}
21
-
end
22
-
23
-
defp adapt({:ok, %Req.Response{} = res}) do
24
-
{:error, to_response(res)}
25
-
end
26
-
27
-
defp adapt({:error, exception}) do
28
-
{:error, exception}
29
-
end
30
-
31
-
defp to_response(%Req.Response{} = res) do
32
-
%Atex.HTTP.Response{
33
-
body: res.body,
34
-
status: res.status,
35
-
__raw__: res
36
-
}
37
-
end
38
-
end
···
-13
lib/atex/http/response.ex
-13
lib/atex/http/response.ex
···
+2
-2
lib/atex/identity_resolver/did.ex
+2
-2
lib/atex/identity_resolver/did.ex
···
14
@spec resolve_plc(String.t()) :: resolution_result()
15
defp resolve_plc("did:plc:" <> _id = did) do
16
with {:ok, resp} when resp.status in 200..299 <-
17
-
Atex.HTTP.get("https://plc.directory/#{did}", []),
18
{:ok, body} <- decode_body(resp.body),
19
{:ok, document} <- DIDDocument.from_json(body),
20
:ok <- DIDDocument.validate_for_atproto(document, did) do
···
29
@spec resolve_web(String.t()) :: resolution_result()
30
defp resolve_web("did:web:" <> domain = did) do
31
with {:ok, resp} when resp.status in 200..299 <-
32
-
Atex.HTTP.get("https://#{domain}/.well-known/did.json", []),
33
{:ok, body} <- decode_body(resp.body),
34
{:ok, document} <- DIDDocument.from_json(body),
35
:ok <- DIDDocument.validate_for_atproto(document, did) do
···
14
@spec resolve_plc(String.t()) :: resolution_result()
15
defp resolve_plc("did:plc:" <> _id = did) do
16
with {:ok, resp} when resp.status in 200..299 <-
17
+
Req.get("https://plc.directory/#{did}"),
18
{:ok, body} <- decode_body(resp.body),
19
{:ok, document} <- DIDDocument.from_json(body),
20
:ok <- DIDDocument.validate_for_atproto(document, did) do
···
29
@spec resolve_web(String.t()) :: resolution_result()
30
defp resolve_web("did:web:" <> domain = did) do
31
with {:ok, resp} when resp.status in 200..299 <-
32
+
Req.get("https://#{domain}/.well-known/did.json"),
33
{:ok, body} <- decode_body(resp.body),
34
{:ok, document} <- DIDDocument.from_json(body),
35
:ok <- DIDDocument.validate_for_atproto(document, did) do
+1
-1
lib/atex/identity_resolver/handle.ex
+1
-1
lib/atex/identity_resolver/handle.ex