5f2c633bc21627f6bc5c475c3a0155bb0b772e37
[akkoma] / lib / pleroma / web / activity_pub / object_validators / common_fixes.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do
6 alias Pleroma.Object.Containment
7 alias Pleroma.Web.ActivityPub.Utils
8
9 # based on Pleroma.Web.ActivityPub.Utils.lazy_put_objects_defaults
10 def fix_defaults(data) do
11 %{data: %{"id" => context}, id: context_id} =
12 Utils.create_context(data["context"] || data["conversation"])
13
14 data
15 |> Map.put("context", context)
16 |> Map.put("context_id", context_id)
17 end
18
19 def fix_attribution(data) do
20 data
21 |> Map.put_new("actor", data["attributedTo"])
22 end
23
24 def fix_actor(data) do
25 actor = Containment.get_actor(data)
26
27 data
28 |> Map.put("actor", actor)
29 |> Map.put("attributedTo", actor)
30 end
31 end