diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/ecto_type/activity_pub/object_validators/context_id.ex | 24 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/object_validators/announce_validator.ex | 2 |
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) |