aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2018-02-25 10:56:01 +0100
committerlain <lain@soykaf.club>2018-02-25 10:56:01 +0100
commitb76de1ecd3def57fb716ca25d44bee398ee4d8e1 (patch)
treedd96b75cbadbbba6ba4a04b66d09dad870aa27a9 /lib
parent0e9bd6d1485e56f81da8fcde6b40d8981f63b113 (diff)
downloadpleroma-b76de1ecd3def57fb716ca25d44bee398ee4d8e1.tar.gz
Some fixes to AP fetching.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/transmogrifier.ex30
1 files changed, 16 insertions, 14 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex
index 698cfa0a9..464842f69 100644
--- a/lib/pleroma/web/activity_pub/transmogrifier.ex
+++ b/lib/pleroma/web/activity_pub/transmogrifier.ex
@@ -20,8 +20,24 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|> Map.put("actor", object["attributedTo"])
|> fix_attachments
|> fix_context
+ |> fix_in_reply_to
end
+ def fix_in_reply_to(%{"inReplyTo" => in_reply_to_id} = object) when not is_nil(in_reply_to_id) do
+ case ActivityPub.fetch_object_from_id(object["inReplyToAtomUri"] || in_reply_to_id) do
+ {:ok, replied_object} ->
+ activity = Activity.get_create_activity_by_object_ap_id(replied_object.data["id"])
+ object
+ |> Map.put("inReplyTo", replied_object.data["id"])
+ |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id)
+ |> Map.put("inReplyToStatusId", activity.id)
+ e ->
+ Logger.error("Couldn't fetch #{object["inReplyTo"]} #{inspect(e)}")
+ object
+ end
+ end
+ def fix_in_reply_to(object), do: object
+
def fix_context(object) do
object
|> Map.put("context", object["conversation"])
@@ -46,19 +62,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
%User{} = user <- User.get_or_fetch_by_ap_id(data["actor"]) do
object = fix_object(data["object"])
- replied_to_id = if object["inReplyTo"] do
- case ActivityPub.fetch_object_from_id(object["inReplyTo"]) do
- {:ok, object} -> object.data["id"]
- e ->
- Logger.error("Couldn't fetch #{object["inReplyTo"]} #{inspect(e)}")
- nil
- end
- else
- nil
- end
-
- object = Map.put(object, "inReplyTo", replied_to_id || object["inReplyTo"])
-
params = %{
to: data["to"],
object: object,
@@ -139,7 +142,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
def prepare_outgoing(%{"type" => "Create", "object" => %{"type" => "Note"} = object} = data) do
object = object
|> prepare_object
-
data = data
|> Map.put("object", object)
|> Map.put("@context", "https://www.w3.org/ns/activitystreams")