diff options
author | Alex Gleason <alex@alexgleason.me> | 2021-05-28 13:38:44 -0500 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2021-05-28 13:38:44 -0500 |
commit | 05b47aacd25a86ba6dfcdd6577c6c558229c8e95 (patch) | |
tree | e4ecd6498fc64a78bf8d92c2ca6e8f8edc0fbcfe /lib/pleroma/web/activity_pub/builder.ex | |
parent | 9b0b0842ce2b0b9a870f57e16025160855aa4c11 (diff) | |
parent | 7ad87571bdcd39959280d15f5bfe4175e04c442c (diff) | |
download | pleroma-endpoint-url.tar.gz |
Merge remote-tracking branch 'pleroma/develop' into endpoint-urlendpoint-url
Diffstat (limited to 'lib/pleroma/web/activity_pub/builder.ex')
-rw-r--r-- | lib/pleroma/web/activity_pub/builder.ex | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/builder.ex b/lib/pleroma/web/activity_pub/builder.ex index f56bfc600..91a45836f 100644 --- a/lib/pleroma/web/activity_pub/builder.ex +++ b/lib/pleroma/web/activity_pub/builder.ex @@ -273,4 +273,36 @@ defmodule Pleroma.Web.ActivityPub.Builder do "context" => object.data["context"] }, []} end + + @spec pin(User.t(), Object.t()) :: {:ok, map(), keyword()} + def pin(%User{} = user, object) do + {:ok, + %{ + "id" => Utils.generate_activity_id(), + "target" => pinned_url(user.nickname), + "object" => object.data["id"], + "actor" => user.ap_id, + "type" => "Add", + "to" => [Pleroma.Constants.as_public()], + "cc" => [user.follower_address] + }, []} + end + + @spec unpin(User.t(), Object.t()) :: {:ok, map, keyword()} + def unpin(%User{} = user, object) do + {:ok, + %{ + "id" => Utils.generate_activity_id(), + "target" => pinned_url(user.nickname), + "object" => object.data["id"], + "actor" => user.ap_id, + "type" => "Remove", + "to" => [Pleroma.Constants.as_public()], + "cc" => [user.follower_address] + }, []} + end + + defp pinned_url(nickname) when is_binary(nickname) do + Pleroma.Web.Router.Helpers.activity_pub_url(Pleroma.Web.Endpoint, :pinned, nickname) + end end |