24 lines
884 B
Elixir
24 lines
884 B
Elixir
defmodule Nulla.Sender do
|
|
alias Nulla.ActivityPub
|
|
alias Nulla.HTTPSignature
|
|
|
|
def send_activity(method, inbox, activity, publicKeyId, privateKeyPem) do
|
|
body = Jason.encode!(ActivityPub.activity(activity))
|
|
headers = HTTPSignature.make_headers(body, inbox, publicKeyId, privateKeyPem)
|
|
request = Finch.build(method, inbox, headers, body)
|
|
|
|
case Finch.request(request, Nulla.Finch) do
|
|
{:ok, %Finch.Response{status: code}} when code in 200..299 ->
|
|
IO.puts("Activity #{activity.id} delivered successfully")
|
|
:ok
|
|
|
|
{:ok, %Finch.Response{status: code, body: resp}} ->
|
|
IO.inspect({:error, code, resp}, label: "Failed to deliver activity #{activity.id}")
|
|
{:error, {:http_error, code}}
|
|
|
|
{:error, reason} ->
|
|
IO.inspect(reason, label: "Activity #{activity.id} delivery failed")
|
|
{:error, reason}
|
|
end
|
|
end
|
|
end
|