diff options
author | Alex Gleason <alex@alexgleason.me> | 2021-06-08 14:03:44 -0500 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2021-06-08 14:17:40 -0500 |
commit | bed10ab2c70848756740f251c1d54bdca02dd093 (patch) | |
tree | 8029847f4fd1f5c7cd0a1b989a1937c885e260d3 /lib | |
parent | 5667c02fcefd7a128ca7fcf9ccf09d7efa1e7844 (diff) | |
download | pleroma-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.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) |