object_validators: Group common fields in CommonValidations See merge request pleroma/pleroma!3384develop
@@ -6,7 +6,6 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AcceptRejectValidator do | |||
use Ecto.Schema | |||
alias Pleroma.Activity | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
import Ecto.Changeset | |||
import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations | |||
@@ -14,12 +13,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AcceptRejectValidator do | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:type, :string) | |||
field(:object, ObjectValidators.ObjectID) | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
end | |||
def cast_data(data) do | |||
@@ -10,19 +10,20 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AddRemoveValidator do | |||
require Pleroma.Constants | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Pleroma.User | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:target) | |||
field(:object, ObjectValidators.ObjectID) | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:type) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
end | |||
def cast_and_validate(data) do | |||
@@ -20,13 +20,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:type, :string) | |||
field(:object, ObjectValidators.ObjectID) | |||
field(:actor, ObjectValidators.ObjectID) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
field(:context, :string) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:published, ObjectValidators.DateTime) | |||
end | |||
@@ -15,12 +15,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnswerValidator do | |||
@derive Jason.Encoder | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:bto, ObjectValidators.Recipients, default: []) | |||
field(:bcc, ObjectValidators.Recipients, default: []) | |||
field(:type, :string) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
end | |||
end | |||
field(:name, :string) | |||
field(:inReplyTo, ObjectValidators.ObjectID) | |||
field(:attributedTo, ObjectValidators.ObjectID) | |||
@@ -6,10 +6,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do | |||
use Ecto.Schema | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.TagValidator | |||
alias Pleroma.Web.ActivityPub.Transmogrifier | |||
import Ecto.Changeset | |||
@@ -18,38 +16,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do | |||
@derive Jason.Encoder | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:bto, ObjectValidators.Recipients, default: []) | |||
field(:bcc, ObjectValidators.Recipients, default: []) | |||
embeds_many(:tag, TagValidator) | |||
field(:type, :string) | |||
field(:name, :string) | |||
field(:summary, :string) | |||
field(:content, :string) | |||
field(:context, :string) | |||
# short identifier for PleromaFE to group statuses by context | |||
field(:context_id, :integer) | |||
# TODO: Remove actor on objects | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:attributedTo, ObjectValidators.ObjectID) | |||
field(:published, ObjectValidators.DateTime) | |||
field(:emoji, ObjectValidators.Emoji, default: %{}) | |||
field(:sensitive, :boolean, default: false) | |||
embeds_many(:attachment, AttachmentValidator) | |||
field(:replies_count, :integer, default: 0) | |||
field(:like_count, :integer, default: 0) | |||
field(:announcement_count, :integer, default: 0) | |||
field(:inReplyTo, ObjectValidators.ObjectID) | |||
field(:url, ObjectValidators.Uri) | |||
field(:likes, {:array, ObjectValidators.ObjectID}, default: []) | |||
field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
object_fields() | |||
status_object_fields() | |||
end | |||
end | |||
field(:replies, {:array, ObjectValidators.ObjectID}, default: []) | |||
end | |||
@@ -5,11 +5,8 @@ | |||
defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do | |||
use Ecto.Schema | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.TagValidator | |||
alias Pleroma.Web.ActivityPub.Transmogrifier | |||
import Ecto.Changeset | |||
@@ -18,38 +15,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do | |||
@derive Jason.Encoder | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:bto, ObjectValidators.Recipients, default: []) | |||
field(:bcc, ObjectValidators.Recipients, default: []) | |||
embeds_many(:tag, TagValidator) | |||
field(:type, :string) | |||
field(:name, :string) | |||
field(:summary, :string) | |||
field(:content, :string) | |||
field(:context, :string) | |||
# short identifier for PleromaFE to group statuses by context | |||
field(:context_id, :integer) | |||
# TODO: Remove actor on objects | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:attributedTo, ObjectValidators.ObjectID) | |||
field(:published, ObjectValidators.DateTime) | |||
field(:emoji, ObjectValidators.Emoji, default: %{}) | |||
field(:sensitive, :boolean, default: false) | |||
embeds_many(:attachment, AttachmentValidator) | |||
field(:replies_count, :integer, default: 0) | |||
field(:like_count, :integer, default: 0) | |||
field(:announcement_count, :integer, default: 0) | |||
field(:inReplyTo, ObjectValidators.ObjectID) | |||
field(:url, ObjectValidators.Uri) | |||
field(:likes, {:array, ObjectValidators.ObjectID}, default: []) | |||
field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
object_fields() | |||
status_object_fields() | |||
end | |||
end | |||
end | |||
def cast_and_apply(data) do | |||
@@ -5,20 +5,21 @@ | |||
defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do | |||
use Ecto.Schema | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations | |||
import Ecto.Changeset | |||
import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations | |||
@primary_key false | |||
@derive Jason.Encoder | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:type, :string) | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:object, ObjectValidators.ObjectID) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
end | |||
def cast_data(data) do | |||
@@ -30,8 +31,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do | |||
cng | |||
|> validate_required([:id, :type, :actor, :to, :cc, :object]) | |||
|> validate_inclusion(:type, ["Block"]) | |||
|> validate_actor_presence() | |||
|> validate_actor_presence(field_name: :object) | |||
|> CommonValidations.validate_actor_presence() | |||
|> CommonValidations.validate_actor_presence(field_name: :object) | |||
end | |||
def cast_and_validate(data) do | |||
@@ -0,0 +1,68 @@ | |||
# Pleroma: A lightweight social networking server | |||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> | |||
# SPDX-License-Identifier: AGPL-3.0-only | |||
defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFields do | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.TagValidator | |||
# Activities and Objects, except (Create)ChatMessage | |||
defmacro message_fields do | |||
quote bind_quoted: binding() do | |||
field(:type, :string) | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:bto, ObjectValidators.Recipients, default: []) | |||
field(:bcc, ObjectValidators.Recipients, default: []) | |||
end | |||
end | |||
defmacro activity_fields do | |||
quote bind_quoted: binding() do | |||
field(:object, ObjectValidators.ObjectID) | |||
field(:actor, ObjectValidators.ObjectID) | |||
end | |||
end | |||
# All objects except Answer and CHatMessage | |||
defmacro object_fields do | |||
quote bind_quoted: binding() do | |||
field(:content, :string) | |||
field(:published, ObjectValidators.DateTime) | |||
field(:emoji, ObjectValidators.Emoji, default: %{}) | |||
embeds_many(:attachment, AttachmentValidator) | |||
end | |||
end | |||
# Basically objects that aren't ChatMessage and Answer | |||
defmacro status_object_fields do | |||
quote bind_quoted: binding() do | |||
# TODO: Remove actor on objects | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:attributedTo, ObjectValidators.ObjectID) | |||
embeds_many(:tag, TagValidator) | |||
field(:name, :string) | |||
field(:summary, :string) | |||
field(:context, :string) | |||
# short identifier for PleromaFE to group statuses by context | |||
field(:context_id, :integer) | |||
field(:sensitive, :boolean, default: false) | |||
field(:replies_count, :integer, default: 0) | |||
field(:like_count, :integer, default: 0) | |||
field(:announcement_count, :integer, default: 0) | |||
field(:inReplyTo, ObjectValidators.ObjectID) | |||
field(:url, ObjectValidators.Uri) | |||
field(:likes, {:array, ObjectValidators.ObjectID}, default: []) | |||
field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) | |||
end | |||
end | |||
end |
@@ -17,11 +17,16 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateChatMessageValidator do | |||
@primary_key false | |||
embedded_schema do | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
activity_fields() | |||
end | |||
end | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:type, :string) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:object, ObjectValidators.ObjectID) | |||
end | |||
def cast_and_apply(data) do | |||
@@ -20,14 +20,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateGenericValidator do | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:type, :string) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:bto, ObjectValidators.Recipients, default: []) | |||
field(:bcc, ObjectValidators.Recipients, default: []) | |||
field(:object, ObjectValidators.ObjectID) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
field(:expires_at, ObjectValidators.DateTime) | |||
# Should be moved to object, done for CommonAPI.Utils.make_context | |||
@@ -15,13 +15,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.DeleteValidator do | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:type, :string) | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
field(:deleted_activity_id, ObjectValidators.ObjectID) | |||
field(:object, ObjectValidators.ObjectID) | |||
end | |||
def cast_data(data) do | |||
@@ -5,7 +5,6 @@ | |||
defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do | |||
use Ecto.Schema | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Pleroma.Object | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes | |||
@@ -15,14 +14,16 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:type, :string) | |||
field(:object, ObjectValidators.ObjectID) | |||
field(:actor, ObjectValidators.ObjectID) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
field(:context, :string) | |||
field(:content, :string) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
end | |||
def cast_and_validate(data) do | |||
@@ -5,11 +5,8 @@ | |||
defmodule Pleroma.Web.ActivityPub.ObjectValidators.EventValidator do | |||
use Ecto.Schema | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.TagValidator | |||
alias Pleroma.Web.ActivityPub.Transmogrifier | |||
import Ecto.Changeset | |||
@@ -19,38 +16,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EventValidator do | |||
# Extends from NoteValidator | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:bto, ObjectValidators.Recipients, default: []) | |||
field(:bcc, ObjectValidators.Recipients, default: []) | |||
embeds_many(:tag, TagValidator) | |||
field(:type, :string) | |||
field(:name, :string) | |||
field(:summary, :string) | |||
field(:content, :string) | |||
field(:context, :string) | |||
# short identifier for PleromaFE to group statuses by context | |||
field(:context_id, :integer) | |||
# TODO: Remove actor on objects | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:attributedTo, ObjectValidators.ObjectID) | |||
field(:published, ObjectValidators.DateTime) | |||
field(:emoji, ObjectValidators.Emoji, default: %{}) | |||
field(:sensitive, :boolean, default: false) | |||
embeds_many(:attachment, AttachmentValidator) | |||
field(:replies_count, :integer, default: 0) | |||
field(:like_count, :integer, default: 0) | |||
field(:announcement_count, :integer, default: 0) | |||
field(:inReplyTo, ObjectValidators.ObjectID) | |||
field(:url, ObjectValidators.Uri) | |||
field(:likes, {:array, ObjectValidators.ObjectID}, default: []) | |||
field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
object_fields() | |||
status_object_fields() | |||
end | |||
end | |||
end | |||
def cast_and_apply(data) do | |||
@@ -5,20 +5,20 @@ | |||
defmodule Pleroma.Web.ActivityPub.ObjectValidators.FollowValidator do | |||
use Ecto.Schema | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
import Ecto.Changeset | |||
import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:type, :string) | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:object, ObjectValidators.ObjectID) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
field(:state, :string, default: "pending") | |||
end | |||
@@ -5,7 +5,6 @@ | |||
defmodule Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator do | |||
use Ecto.Schema | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Pleroma.Object | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes | |||
alias Pleroma.Web.ActivityPub.Utils | |||
@@ -16,13 +15,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator do | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:type, :string) | |||
field(:object, ObjectValidators.ObjectID) | |||
field(:actor, ObjectValidators.ObjectID) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
field(:context, :string) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
end | |||
def cast_and_validate(data) do | |||
@@ -6,11 +6,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do | |||
use Ecto.Schema | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.QuestionOptionsValidator | |||
alias Pleroma.Web.ActivityPub.ObjectValidators.TagValidator | |||
alias Pleroma.Web.ActivityPub.Transmogrifier | |||
import Ecto.Changeset | |||
@@ -20,35 +18,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do | |||
# Extends from NoteValidator | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
field(:bto, ObjectValidators.Recipients, default: []) | |||
field(:bcc, ObjectValidators.Recipients, default: []) | |||
embeds_many(:tag, TagValidator) | |||
field(:type, :string) | |||
field(:content, :string) | |||
field(:context, :string) | |||
# TODO: Remove actor on objects | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:attributedTo, ObjectValidators.ObjectID) | |||
field(:summary, :string) | |||
field(:published, ObjectValidators.DateTime) | |||
field(:emoji, ObjectValidators.Emoji, default: %{}) | |||
field(:sensitive, :boolean, default: false) | |||
embeds_many(:attachment, AttachmentValidator) | |||
field(:replies_count, :integer, default: 0) | |||
field(:like_count, :integer, default: 0) | |||
field(:announcement_count, :integer, default: 0) | |||
field(:inReplyTo, ObjectValidators.ObjectID) | |||
field(:url, ObjectValidators.Uri) | |||
# short identifier for PleromaFE to group statuses by context | |||
field(:context_id, :integer) | |||
field(:likes, {:array, ObjectValidators.ObjectID}, default: []) | |||
field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
object_fields() | |||
status_object_fields() | |||
end | |||
end | |||
field(:closed, ObjectValidators.DateTime) | |||
field(:voters, {:array, ObjectValidators.ObjectID}, default: []) | |||
@@ -6,7 +6,6 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.UndoValidator do | |||
use Ecto.Schema | |||
alias Pleroma.Activity | |||
alias Pleroma.EctoType.ActivityPub.ObjectValidators | |||
alias Pleroma.User | |||
import Ecto.Changeset | |||
@@ -15,12 +14,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.UndoValidator do | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:type, :string) | |||
field(:object, ObjectValidators.ObjectID) | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
activity_fields() | |||
end | |||
end | |||
end | |||
def cast_and_validate(data) do | |||
@@ -13,11 +13,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.UpdateValidator do | |||
@primary_key false | |||
embedded_schema do | |||
field(:id, ObjectValidators.ObjectID, primary_key: true) | |||
field(:type, :string) | |||
quote do | |||
unquote do | |||
import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields | |||
message_fields() | |||
end | |||
end | |||
field(:actor, ObjectValidators.ObjectID) | |||
field(:to, ObjectValidators.Recipients, default: []) | |||
field(:cc, ObjectValidators.Recipients, default: []) | |||
# In this case, we save the full object in this activity instead of just a | |||
# reference, so we can always see what was actually changed by this. | |||
field(:object, :map) | |||
@@ -67,7 +67,9 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.AddRemoveHandlingTest do | |||
"target" => "https://example.com/users/lain/collections/featured", | |||
"type" => "Add", | |||
"to" => [Pleroma.Constants.as_public()], | |||
"cc" => ["https://example.com/users/lain/followers"] | |||
"cc" => ["https://example.com/users/lain/followers"], | |||
"bcc" => [], | |||
"bto" => [] | |||
} | |||
assert {:ok, activity} = Transmogrifier.handle_incoming(message) | |||
@@ -82,7 +84,9 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.AddRemoveHandlingTest do | |||
"target" => "https://example.com/users/lain/collections/featured", | |||
"type" => "Remove", | |||
"to" => [Pleroma.Constants.as_public()], | |||
"cc" => ["https://example.com/users/lain/followers"] | |||
"cc" => ["https://example.com/users/lain/followers"], | |||
"bcc" => [], | |||
"bto" => [] | |||
} | |||
assert {:ok, activity} = Transmogrifier.handle_incoming(remove) | |||
@@ -161,7 +165,9 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.AddRemoveHandlingTest do | |||
"target" => "https://#{host}/users/#{user.nickname}/collections/featured", | |||
"type" => "Add", | |||
"to" => [Pleroma.Constants.as_public()], | |||
"cc" => ["https://#{host}/users/#{user.nickname}/followers"] | |||
"cc" => ["https://#{host}/users/#{user.nickname}/followers"], | |||
"bcc" => [], | |||
"bto" => [] | |||
} | |||
assert {:ok, activity} = Transmogrifier.handle_incoming(message) | |||