Status: Fill all MastoAPI required values in preview cards
This commit is contained in:
parent
c7119d17d8
commit
656dce96dc
4 changed files with 95 additions and 6 deletions
1
changelog.d/previewcard-void-fill.fix
Normal file
1
changelog.d/previewcard-void-fill.fix
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Status: Fill all MastoAPI required values in preview cards
|
||||||
|
|
@ -34,16 +34,40 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
|
||||||
type: :object,
|
type: :object,
|
||||||
nullable: true,
|
nullable: true,
|
||||||
description: "Preview card for links included within status content",
|
description: "Preview card for links included within status content",
|
||||||
required: [:url, :title, :description, :type],
|
# Yeah, it's effectivelly all required in MastoAPI so far
|
||||||
|
required: [
|
||||||
|
:url,
|
||||||
|
:title,
|
||||||
|
:description,
|
||||||
|
:type,
|
||||||
|
:author_name,
|
||||||
|
:author_url,
|
||||||
|
:provider_name,
|
||||||
|
:provider_url,
|
||||||
|
:html,
|
||||||
|
:width,
|
||||||
|
:height,
|
||||||
|
:image,
|
||||||
|
:embed_url,
|
||||||
|
:blurhash
|
||||||
|
],
|
||||||
properties: %{
|
properties: %{
|
||||||
|
url: %Schema{type: :string, format: :uri, description: "Location of linked resource"},
|
||||||
|
title: %Schema{type: :string, description: "Title of linked resource"},
|
||||||
|
description: %Schema{type: :string, description: "Description of preview"},
|
||||||
type: %Schema{
|
type: %Schema{
|
||||||
type: :string,
|
type: :string,
|
||||||
enum: ["link", "photo", "video", "rich"],
|
enum: ["link", "photo", "video", "rich"],
|
||||||
description: "The type of the preview card"
|
description: "The type of the preview card"
|
||||||
},
|
},
|
||||||
|
author_name: %Schema{type: :string, description: "author of the original resource"},
|
||||||
|
author_url: %Schema{
|
||||||
|
type: :string,
|
||||||
|
format: :uri,
|
||||||
|
description: "link to the author of the original resource"
|
||||||
|
},
|
||||||
provider_name: %Schema{
|
provider_name: %Schema{
|
||||||
type: :string,
|
type: :string,
|
||||||
nullable: true,
|
|
||||||
description: "The provider of the original resource"
|
description: "The provider of the original resource"
|
||||||
},
|
},
|
||||||
provider_url: %Schema{
|
provider_url: %Schema{
|
||||||
|
|
@ -51,7 +75,13 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
|
||||||
format: :uri,
|
format: :uri,
|
||||||
description: "A link to the provider of the original resource"
|
description: "A link to the provider of the original resource"
|
||||||
},
|
},
|
||||||
url: %Schema{type: :string, format: :uri, description: "Location of linked resource"},
|
html: %Schema{
|
||||||
|
type: :string,
|
||||||
|
format: :html,
|
||||||
|
description: "HTML to be used for generating the preview card"
|
||||||
|
},
|
||||||
|
width: %Schema{type: :integer, description: "Width of preview, in pixels"},
|
||||||
|
height: %Schema{type: :integer, description: "Height of preview, in pixels"},
|
||||||
image: %Schema{
|
image: %Schema{
|
||||||
type: :string,
|
type: :string,
|
||||||
nullable: true,
|
nullable: true,
|
||||||
|
|
@ -62,8 +92,17 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do
|
||||||
type: :string,
|
type: :string,
|
||||||
description: "Alternate text that describes what is in the thumbnail"
|
description: "Alternate text that describes what is in the thumbnail"
|
||||||
},
|
},
|
||||||
title: %Schema{type: :string, description: "Title of linked resource"},
|
embed_url: %Schema{
|
||||||
description: %Schema{type: :string, description: "Description of preview"}
|
type: :string,
|
||||||
|
format: :uri,
|
||||||
|
description: "Used for photo embeds, instead of custom `html`"
|
||||||
|
},
|
||||||
|
blurhash: %Schema{
|
||||||
|
type: :string,
|
||||||
|
nullable: true,
|
||||||
|
description:
|
||||||
|
"A hash computed by the (BlurHash algorithm)[https://github.com/woltapp/blurhash], for generating colorful preview thumbnails when media has not been downloaded yet."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
content: %Schema{type: :string, format: :html, description: "HTML-encoded status content"},
|
content: %Schema{type: :string, format: :html, description: "HTML-encoded status content"},
|
||||||
|
|
|
||||||
|
|
@ -586,6 +586,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
|
||||||
image_description: rich_media["image:alt"] || "",
|
image_description: rich_media["image:alt"] || "",
|
||||||
title: rich_media["title"] || "",
|
title: rich_media["title"] || "",
|
||||||
description: rich_media["description"] || "",
|
description: rich_media["description"] || "",
|
||||||
|
author_name: "",
|
||||||
|
author_url: "",
|
||||||
|
html: "",
|
||||||
|
width: 0,
|
||||||
|
height: 0,
|
||||||
|
embed_url: "",
|
||||||
|
blurhash: nil,
|
||||||
pleroma: %{
|
pleroma: %{
|
||||||
opengraph:
|
opengraph:
|
||||||
rich_media
|
rich_media
|
||||||
|
|
|
||||||
|
|
@ -1687,7 +1687,14 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
|
||||||
"description" =>
|
"description" =>
|
||||||
"Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer."
|
"Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer."
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"author_name" => "",
|
||||||
|
"author_url" => "",
|
||||||
|
"blurhash" => nil,
|
||||||
|
"embed_url" => "",
|
||||||
|
"height" => 0,
|
||||||
|
"html" => "",
|
||||||
|
"width" => 0
|
||||||
}
|
}
|
||||||
|
|
||||||
response =
|
response =
|
||||||
|
|
@ -1708,6 +1715,41 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do
|
||||||
|
|
||||||
assert response_two["card"] == card_data
|
assert response_two["card"] == card_data
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "replaces missing description with an empty string", %{conn: conn, user: user} do
|
||||||
|
Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end)
|
||||||
|
|
||||||
|
{:ok, activity} = CommonAPI.post(user, %{status: "https://example.com/ogp-missing-data"})
|
||||||
|
|
||||||
|
response =
|
||||||
|
conn
|
||||||
|
|> get("/api/v1/statuses/#{activity.id}")
|
||||||
|
|> json_response_and_validate_schema(:ok)
|
||||||
|
|
||||||
|
assert response["card"] == %{
|
||||||
|
"type" => "link",
|
||||||
|
"title" => "Pleroma",
|
||||||
|
"description" => "",
|
||||||
|
"image" => nil,
|
||||||
|
"provider_name" => "example.com",
|
||||||
|
"provider_url" => "https://example.com",
|
||||||
|
"url" => "https://example.com/ogp-missing-data",
|
||||||
|
"pleroma" => %{
|
||||||
|
"opengraph" => %{
|
||||||
|
"title" => "Pleroma",
|
||||||
|
"type" => "website",
|
||||||
|
"url" => "https://example.com/ogp-missing-data"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"author_name" => "",
|
||||||
|
"author_url" => "",
|
||||||
|
"blurhash" => nil,
|
||||||
|
"embed_url" => "",
|
||||||
|
"height" => 0,
|
||||||
|
"html" => "",
|
||||||
|
"width" => 0
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
test "bookmarks" do
|
test "bookmarks" do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue