Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into remake-remodel-dms
[akkoma] / lib / pleroma / web / activity_pub / object_validators / common_validations.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations do
6 import Ecto.Changeset
7
8 alias Pleroma.Object
9 alias Pleroma.User
10
11 def validate_actor_presence(cng) do
12 validate_user_presence(cng, :actor)
13 end
14
15 def validate_user_presence(cng, field_name) do
16 cng
17 |> validate_change(field_name, fn field_name, actor ->
18 if User.get_cached_by_ap_id(actor) do
19 []
20 else
21 [{field_name, "can't find user"}]
22 end
23 end)
24 end
25
26 def validate_object_presence(cng, field_name \\ :object) do
27 cng
28 |> validate_change(field_name, fn field_name, object ->
29 if Object.get_cached_by_ap_id(object) do
30 []
31 else
32 [{field_name, "can't find object"}]
33 end
34 end)
35 end
36 end