Federate follow salmons.

This commit is contained in:
Roger Braun 2017-05-07 14:45:37 +02:00
commit a41aa4e489
3 changed files with 75 additions and 0 deletions

View file

@ -118,6 +118,34 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do
] ++ mentions ++ author
end
def to_simple_form(%{data: %{"type" => "Follow"}} = activity, user, with_author) do
h = fn(str) -> [to_charlist(str)] end
updated_at = activity.updated_at
|> NaiveDateTime.to_iso8601
inserted_at = activity.inserted_at
|> NaiveDateTime.to_iso8601
author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
mentions = activity.data["to"] |> get_mentions
[
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
{:"activity:verb", ['http://activitystrea.ms/schema/1.0/follow']},
{:id, h.(activity.data["id"])},
{:title, ['#{user.nickname} started following #{activity.data["object"]}']},
{:content, [type: 'html'], ['#{user.nickname} started following #{activity.data["object"]}']},
{:published, h.(inserted_at)},
{:updated, h.(updated_at)},
{:"activity:object", [
{:"activity:object-type", ['http://activitystrea.ms/schema/1.0/person']},
{:id, h.(activity.data["object"])},
{:uri, h.(activity.data["object"])},
]},
{:link, [rel: 'self', type: ['application/atom+xml'], href: h.(activity.data["id"])], []},
] ++ mentions ++ author
end
def wrap_with_entry(simple_form) do
[{
:entry, [

View file

@ -139,10 +139,13 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
{:ok, activity} <- ActivityPub.insert(%{
"type" => "Follow",
"actor" => follower.ap_id,
"to" => [followed.ap_id],
"object" => followed.ap_id,
"published" => make_date()
})
do
# TODO move all this to ActivityPub
Pleroma.Web.Federator.enqueue(:publish, activity)
{:ok, follower, followed, activity}
else
err -> err