diff options
| author | Haelwenn (lanodan) Monnier <contact@hacktivis.me> | 2020-11-16 17:13:42 +0100 | 
|---|---|---|
| committer | Haelwenn (lanodan) Monnier <contact@hacktivis.me> | 2023-03-09 14:21:12 +0100 | 
| commit | ea07ec51efee8dbe6f0cfbdd21473db03af6c4ea (patch) | |
| tree | bca42a46dd25e38a5cb63f817759641b1ee8d0d3 /lib | |
| parent | 0a042979b8d0b6cfb5996586b64005735589e589 (diff) | |
| download | pleroma-ea07ec51efee8dbe6f0cfbdd21473db03af6c4ea.tar.gz pleroma-ea07ec51efee8dbe6f0cfbdd21473db03af6c4ea.zip | |
Add support for Image objects
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/object_validator.ex | 15 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/object_validators/audio_image_video_validator.ex (renamed from lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex) | 15 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/side_effects.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/utils.ex | 3 | 
6 files changed, 23 insertions, 16 deletions
| diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 1ab2db94a..f22756015 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -96,7 +96,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do    defp increase_replies_count_if_reply(_create_data), do: :noop -  @object_types ~w[ChatMessage Question Answer Audio Video Event Article Note Page] +  @object_types ~w[ChatMessage Question Answer Audio Video Image Event Article Note Page]    @impl true    def persist(%{"type" => type} = object, meta) when type in @object_types do      with {:ok, object} <- Object.create(object) do diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex index 5bcd6da46..5e0d1aa8e 100644 --- a/lib/pleroma/web/activity_pub/object_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validator.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do    alias Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator    alias Pleroma.Web.ActivityPub.ObjectValidators.AnswerValidator    alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator -  alias Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator +  alias Pleroma.Web.ActivityPub.ObjectValidators.AudioImageVideoValidator    alias Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator    alias Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator    alias Pleroma.Web.ActivityPub.ObjectValidators.CreateChatMessageValidator @@ -102,7 +102,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do          %{"type" => "Create", "object" => %{"type" => objtype} = object} = create_activity,          meta        ) -      when objtype in ~w[Question Answer Audio Video Event Article Note Page] do +      when objtype in ~w[Question Answer Audio Video Image Event Article Note Page] do      with {:ok, object_data} <- cast_and_apply_and_stringify_with_history(object),           meta = Keyword.put(meta, :object_data, object_data),           {:ok, create_activity} <- @@ -115,13 +115,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do    end    def validate(%{"type" => type} = object, meta) -      when type in ~w[Event Question Audio Video Article Note Page] do +      when type in ~w[Event Question Audio Video Image Article Note Page] do      validator =        case type do          "Event" -> EventValidator          "Question" -> QuestionValidator -        "Audio" -> AudioVideoValidator -        "Video" -> AudioVideoValidator +        "Audio" -> AudioImageVideoValidator +        "Video" -> AudioImageVideoValidator +        "Image" -> AudioImageVideoValidator          "Article" -> ArticleNotePageValidator          "Note" -> ArticleNotePageValidator          "Page" -> ArticleNotePageValidator @@ -233,8 +234,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do      AnswerValidator.cast_and_apply(object)    end -  def cast_and_apply(%{"type" => type} = object) when type in ~w[Audio Video] do -    AudioVideoValidator.cast_and_apply(object) +  def cast_and_apply(%{"type" => type} = object) when type in ~w[Audio Image Video] do +    AudioImageVideoValidator.cast_and_apply(object)    end    def cast_and_apply(%{"type" => "Event"} = object) do diff --git a/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex b/lib/pleroma/web/activity_pub/object_validators/audio_image_video_validator.ex index 671a7ef0c..79ff76104 100644 --- a/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/audio_image_video_validator.ex @@ -2,7 +2,7 @@  # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>  # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do +defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioImageVideoValidator do    use Ecto.Schema    alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes @@ -55,9 +55,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do      url      |> Enum.concat(mpeg_url["tag"] || [])      |> Enum.find(fn -      %{"mediaType" => mime_type} -> String.starts_with?(mime_type, ["video/", "audio/"]) -      %{"mimeType" => mime_type} -> String.starts_with?(mime_type, ["video/", "audio/"]) -      _ -> false +      %{"mediaType" => mime_type} -> +        String.starts_with?(mime_type, ["video/", "audio/", "image/"]) + +      %{"mimeType" => mime_type} -> +        String.starts_with?(mime_type, ["video/", "audio/", "image/"]) + +      _ -> +        false      end)    end @@ -110,7 +115,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do    defp validate_data(data_cng) do      data_cng -    |> validate_inclusion(:type, ["Audio", "Video"]) +    |> validate_inclusion(:type, ~w[Audio Image Video])      |> validate_required([:id, :actor, :attributedTo, :type, :context])      |> CommonValidations.validate_any_presence([:cc, :to])      |> CommonValidations.validate_fields_match([:actor, :attributedTo]) diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index a2152b945..e19642d50 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -520,7 +520,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do    end    def handle_object_creation(%{"type" => objtype} = object, _activity, meta) -      when objtype in ~w[Audio Video Event Article Note Page] do +      when objtype in ~w[Audio Video Image Event Article Note Page] do      with {:ok, object, meta} <- Pipeline.common_pipeline(object, meta) do        {:ok, object, meta}      end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index e4c04da0d..3141f8437 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -447,7 +447,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do          %{"type" => "Create", "object" => %{"type" => objtype, "id" => obj_id}} = data,          options        ) -      when objtype in ~w{Question Answer ChatMessage Audio Video Event Article Note Page} do +      when objtype in ~w{Question Answer ChatMessage Audio Video Event Article Note Page Image} do      fetch_options = Keyword.put(options, :depth, (options[:depth] || 0) + 1)      object = diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index b898d6fe8..12a042a3e 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -31,7 +31,8 @@ defmodule Pleroma.Web.ActivityPub.Utils do      "Page",      "Question",      "Answer", -    "Audio" +    "Audio", +    "Image"    ]    @strip_status_report_states ~w(closed resolved)    @supported_report_states ~w(open closed resolved) | 
