Merge branch 'feature/ingest-blurhash' into 'develop'
Ingest blurhash for attachments if they were federated Closes #2294 See merge request pleroma/pleroma!3133
This commit is contained in:
commit
ccec59047b
@ -15,6 +15,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do
|
|||||||
field(:type, :string)
|
field(:type, :string)
|
||||||
field(:mediaType, :string, default: "application/octet-stream")
|
field(:mediaType, :string, default: "application/octet-stream")
|
||||||
field(:name, :string)
|
field(:name, :string)
|
||||||
|
field(:blurhash, :string)
|
||||||
|
|
||||||
embeds_many :url, UrlObjectValidator, primary_key: false do
|
embeds_many :url, UrlObjectValidator, primary_key: false do
|
||||||
field(:type, :string)
|
field(:type, :string)
|
||||||
@ -41,7 +42,7 @@ def changeset(struct, data) do
|
|||||||
|> fix_url()
|
|> fix_url()
|
||||||
|
|
||||||
struct
|
struct
|
||||||
|> cast(data, [:type, :mediaType, :name])
|
|> cast(data, [:type, :mediaType, :name, :blurhash])
|
||||||
|> cast_embed(:url, with: &url_changeset/2)
|
|> cast_embed(:url, with: &url_changeset/2)
|
||||||
|> validate_inclusion(:type, ~w[Link Document Audio Image Video])
|
|> validate_inclusion(:type, ~w[Link Document Audio Image Video])
|
||||||
|> validate_required([:type, :mediaType, :url])
|
|> validate_required([:type, :mediaType, :url])
|
||||||
|
@ -252,6 +252,7 @@ def fix_attachments(%{"attachment" => attachment} = object) when is_list(attachm
|
|||||||
}
|
}
|
||||||
|> Maps.put_if_present("mediaType", media_type)
|
|> Maps.put_if_present("mediaType", media_type)
|
||||||
|> Maps.put_if_present("name", data["name"])
|
|> Maps.put_if_present("name", data["name"])
|
||||||
|
|> Maps.put_if_present("blurhash", data["blurhash"])
|
||||||
else
|
else
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
@ -435,7 +435,8 @@ def render("attachment.json", %{attachment: attachment}) do
|
|||||||
text_url: href,
|
text_url: href,
|
||||||
type: type,
|
type: type,
|
||||||
description: attachment["name"],
|
description: attachment["name"],
|
||||||
pleroma: %{mime_type: media_type}
|
pleroma: %{mime_type: media_type},
|
||||||
|
blurhash: attachment["blurhash"]
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -33,7 +33,8 @@ test "it turns mastodon attachments into our attachments" do
|
|||||||
"http://mastodon.example.org/system/media_attachments/files/000/000/002/original/334ce029e7bfb920.jpg",
|
"http://mastodon.example.org/system/media_attachments/files/000/000/002/original/334ce029e7bfb920.jpg",
|
||||||
"type" => "Document",
|
"type" => "Document",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
"mediaType" => "image/jpeg"
|
"mediaType" => "image/jpeg",
|
||||||
|
"blurhash" => "UD9jJz~VSbR#xT$~%KtQX9R,WAs9RjWBs:of"
|
||||||
}
|
}
|
||||||
|
|
||||||
{:ok, attachment} =
|
{:ok, attachment} =
|
||||||
@ -50,6 +51,7 @@ test "it turns mastodon attachments into our attachments" do
|
|||||||
] = attachment.url
|
] = attachment.url
|
||||||
|
|
||||||
assert attachment.mediaType == "image/jpeg"
|
assert attachment.mediaType == "image/jpeg"
|
||||||
|
assert attachment.blurhash == "UD9jJz~VSbR#xT$~%KtQX9R,WAs9RjWBs:of"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it handles our own uploads" do
|
test "it handles our own uploads" do
|
||||||
|
@ -69,6 +69,7 @@ test "Funkwhale Audio object" do
|
|||||||
"mediaType" => "audio/ogg",
|
"mediaType" => "audio/ogg",
|
||||||
"type" => "Link",
|
"type" => "Link",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
|
"blurhash" => nil,
|
||||||
"url" => [
|
"url" => [
|
||||||
%{
|
%{
|
||||||
"href" =>
|
"href" =>
|
||||||
|
@ -54,6 +54,7 @@ test "it remaps video URLs as attachments if necessary" do
|
|||||||
"type" => "Link",
|
"type" => "Link",
|
||||||
"mediaType" => "video/mp4",
|
"mediaType" => "video/mp4",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
|
"blurhash" => nil,
|
||||||
"url" => [
|
"url" => [
|
||||||
%{
|
%{
|
||||||
"href" =>
|
"href" =>
|
||||||
@ -76,6 +77,7 @@ test "it remaps video URLs as attachments if necessary" do
|
|||||||
"type" => "Link",
|
"type" => "Link",
|
||||||
"mediaType" => "video/mp4",
|
"mediaType" => "video/mp4",
|
||||||
"name" => nil,
|
"name" => nil,
|
||||||
|
"blurhash" => nil,
|
||||||
"url" => [
|
"url" => [
|
||||||
%{
|
%{
|
||||||
"href" =>
|
"href" =>
|
||||||
|
@ -420,6 +420,7 @@ test "attachments" do
|
|||||||
"href" => "someurl"
|
"href" => "someurl"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"blurhash" => "UJJ8X[xYW,%Jtq%NNFbXB5j]IVM|9GV=WHRn",
|
||||||
"uuid" => 6
|
"uuid" => 6
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -431,7 +432,8 @@ test "attachments" do
|
|||||||
preview_url: "someurl",
|
preview_url: "someurl",
|
||||||
text_url: "someurl",
|
text_url: "someurl",
|
||||||
description: nil,
|
description: nil,
|
||||||
pleroma: %{mime_type: "image/png"}
|
pleroma: %{mime_type: "image/png"},
|
||||||
|
blurhash: "UJJ8X[xYW,%Jtq%NNFbXB5j]IVM|9GV=WHRn"
|
||||||
}
|
}
|
||||||
|
|
||||||
api_spec = Pleroma.Web.ApiSpec.spec()
|
api_spec = Pleroma.Web.ApiSpec.spec()
|
||||||
|
Loading…
Reference in New Issue
Block a user