commit: 59d17a5b20bac485c189bcfdeafffe7fb06c8277
parent 25e7b12a6bd870d96becbd79167818147f6b501c
Author: Phantasm <phantasm@centrum.cz>
Date: Mon, 12 May 2025 17:23:33 +0200
Elixir 1.18 Move Update activity validation to separate function
warning: Pleroma.Web.ActivityPub.ObjectValidators.AcceptRejectValidator.cast_and_validate/2 is undefined or private. Did you mean:
* cast_and_validate/1
│
227 │ validator == UpdateValidator -> fn o -> validator.cast_and_validate(o, meta) end
│ ~
│
└─ lib/pleroma/web/activity_pub/object_validator.ex:227:57: Pleroma.Web.ActivityPub.ObjectValidator.validate/2
Diffstat:
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex
@@ -200,14 +200,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do
end
def validate(%{"type" => type} = object, meta)
- when type in ~w[Accept Reject Follow Update Like EmojiReact Announce
+ when type in ~w[Accept Reject Follow Like EmojiReact Announce
ChatMessage Answer] do
validator =
case type do
"Accept" -> AcceptRejectValidator
"Reject" -> AcceptRejectValidator
"Follow" -> FollowValidator
- "Update" -> UpdateValidator
"Like" -> LikeValidator
"EmojiReact" -> EmojiReactValidator
"Announce" -> AnnounceValidator
@@ -215,16 +214,19 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do
"Answer" -> AnswerValidator
end
- cast_func =
- if type == "Update" do
- fn o -> validator.cast_and_validate(o, meta) end
- else
- fn o -> validator.cast_and_validate(o) end
- end
+ with {:ok, object} <-
+ object
+ |> validator.cast_and_validate()
+ |> Ecto.Changeset.apply_action(:insert) do
+ object = stringify_keys(object)
+ {:ok, object, meta}
+ end
+ end
+ def validate(%{"type" => type} = object, meta) when type == "Update" do
with {:ok, object} <-
object
- |> cast_func.()
+ |> UpdateValidator.cast_and_validate(meta)
|> Ecto.Changeset.apply_action(:insert) do
object = stringify_keys(object)
{:ok, object, meta}