aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-06-08 14:03:44 -0500
committerAlex Gleason <alex@alexgleason.me>2021-06-08 14:17:40 -0500
commitbed10ab2c70848756740f251c1d54bdca02dd093 (patch)
tree8029847f4fd1f5c7cd0a1b989a1937c885e260d3 /lib
parent5667c02fcefd7a128ca7fcf9ccf09d7efa1e7844 (diff)
downloadpleroma-bed10ab2c70848756740f251c1d54bdca02dd093.tar.gz
ObjectValidators: create ContextID Ecto type
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex24
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/announce_validator.ex2
2 files changed, 25 insertions, 1 deletions
diff --git a/lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex
new file mode 100644
index 000000000..15f47d45f
--- /dev/null
+++ b/lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex
@@ -0,0 +1,24 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.ContextID do
+ use Ecto.Type
+
+ alias Ecto.UUID
+ alias Pleroma.Web.Endpoint
+
+ def type, do: :string
+
+ def cast(context) when is_binary(context), do: {:ok, context}
+
+ def cast(_), do: :error
+
+ def dump(data), do: {:ok, data}
+
+ def load(data), do: {:ok, data}
+
+ def autogenerate do
+ "#{Endpoint.url()}/contexts/#{UUID.generate()}"
+ end
+end
diff --git a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex
index a2f752ac3..f216d4391 100644
--- a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex
@@ -23,7 +23,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do
field(:type, :string)
field(:object, ObjectValidators.ObjectID)
field(:actor, ObjectValidators.ObjectID)
- field(:context, :string, autogenerate: {Utils, :generate_context_id, []})
+ field(:context, ObjectValidators.ContextID, autogenerate: true)
field(:to, ObjectValidators.Recipients, default: [])
field(:cc, ObjectValidators.Recipients, default: [])
field(:published, ObjectValidators.DateTime)