defmodule Pleroma.Web.ActivityPub.Publisher do
alias Pleroma.Activity
+ alias Pleroma.Config
alias Pleroma.Instances
alias Pleroma.User
+ alias Pleroma.Web.ActivityPub.Relay
alias Pleroma.Web.ActivityPub.Transmogrifier
import Pleroma.Web.ActivityPub.Visibility
Determine if an activity can be represented by running it through Transmogrifier.
"""
def is_representable?(%Activity{} = activity) do
- with %{} = _data <- Transmogrifier.prepare_outgoing(activity.data) do
+ with {:ok, _data} <- Transmogrifier.prepare_outgoing(activity.data) do
true
else
- _e -> false
+ _e ->
+ false
end
end
|> Timex.format!("{WDshort}, {0D} {Mshort} {YYYY} {h24}:{m}:{s} GMT")
signature =
- Pleroma.Web.HTTPSignatures.sign(actor, %{
+ Pleroma.Signature.sign(actor, %{
host: host,
"content-length": byte_size(json),
digest: digest,
public = is_public?(activity)
+ if public && Config.get([:instance, :allow_relay]) do
+ Logger.info(fn -> "Relaying #{activity.data["id"]} out" end)
+ Relay.publish(activity)
+ end
+
{:ok, data} = Transmogrifier.prepare_outgoing(activity.data)
json = Jason.encode!(data)
)
end)
end
+
+ def gather_webfinger_links(%User{} = user) do
+ [
+ %{"rel" => "self", "type" => "application/activity+json", "href" => user.ap_id},
+ %{
+ "rel" => "self",
+ "type" => "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"",
+ "href" => user.ap_id
+ }
+ ]
+ end
+
+ def gather_nodeinfo_protocol_names, do: ["activitypub"]
end