Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
d70db630
Commit
d70db630
authored
Jun 08, 2021
by
feld
Browse files
Set the correct height/width if the data is available when generating opengraph metadata
parent
aa8cc4e8
Pipeline
#36498
passed with stages
in 6 minutes and 22 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/metadata/providers/open_graph.ex
View file @
d70db630
...
...
@@ -69,8 +69,7 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do
Enum
.
reduce
(
attachments
,
[],
fn
attachment
,
acc
->
rendered_tags
=
Enum
.
reduce
(
attachment
[
"url"
],
[],
fn
url
,
acc
->
# TODO: Add additional properties to objects when we have the data available.
# Also, Whatsapp only wants JPEG or PNGs. It seems that if we add a second og:image
# TODO: Whatsapp only wants JPEG or PNGs. It seems that if we add a second og:image
# object when a Video or GIF is attached it will display that in Whatsapp Rich Preview.
case
Utils
.
fetch_media_type
(
@media_types
,
url
[
"mediaType"
])
do
"audio"
->
...
...
@@ -85,12 +84,14 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do
{
:meta
,
[
property:
"og:image:alt"
,
content:
attachment
[
"name"
]],
[]}
|
acc
]
|>
maybe_add_dimensions
(
url
)
"video"
->
[
{
:meta
,
[
property:
"og:video"
,
content:
Utils
.
attachment_url
(
url
[
"href"
])],
[]}
|
acc
]
|>
maybe_add_dimensions
(
url
)
_
->
acc
...
...
@@ -102,4 +103,21 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do
end
defp
build_attachments
(
_
),
do
:
[]
# We can use url["mediaType"] to dynamically fill the metadata
defp
maybe_add_dimensions
(
metadata
,
url
)
do
type
=
url
[
"mediaType"
]
|>
String
.
split
(
"/"
)
|>
List
.
first
()
cond
do
!is_nil
(
url
[
"height"
])
&&
!is_nil
(
url
[
"width"
])
->
metadata
++
[
{
:meta
,
[
property:
"og:
#{
type
}
:width"
,
content:
"
#{
url
[
"width"
]
}
"
],
[]},
{
:meta
,
[
property:
"og:
#{
type
}
:height"
,
content:
"
#{
url
[
"height"
]
}
"
],
[]}
]
true
->
metadata
end
end
end
test/pleroma/web/metadata/providers/open_graph_test.exs
View file @
d70db630
...
...
@@ -22,7 +22,12 @@ test "it renders all supported types of attachments and skips unknown types" do
"attachment"
=>
[
%{
"url"
=>
[
%{
"mediaType"
=>
"image/png"
,
"href"
=>
"https://pleroma.gov/tenshi.png"
}
%{
"mediaType"
=>
"image/png"
,
"href"
=>
"https://pleroma.gov/tenshi.png"
,
"height"
=>
1024
,
"width"
=>
1280
}
]
},
%{
...
...
@@ -35,7 +40,12 @@ test "it renders all supported types of attachments and skips unknown types" do
},
%{
"url"
=>
[
%{
"mediaType"
=>
"video/webm"
,
"href"
=>
"https://pleroma.gov/about/juche.webm"
}
%{
"mediaType"
=>
"video/webm"
,
"href"
=>
"https://pleroma.gov/about/juche.webm"
,
"height"
=>
600
,
"width"
=>
800
}
]
},
%{
...
...
@@ -55,11 +65,15 @@ test "it renders all supported types of attachments and skips unknown types" do
assert
Enum
.
all?
(
[
{
:meta
,
[
property:
"og:image"
,
content:
"https://pleroma.gov/tenshi.png"
],
[]},
{
:meta
,
[
property:
"og:image:width"
,
content:
"1280"
],
[]},
{
:meta
,
[
property:
"og:image:height"
,
content:
"1024"
],
[]},
{
:meta
,
[
property:
"og:audio"
,
content:
"http://www.gnu.org/music/free-software-song.au"
],
[]},
{
:meta
,
[
property:
"og:video"
,
content:
"https://pleroma.gov/about/juche.webm"
],
[]}
[]},
{
:meta
,
[
property:
"og:video:width"
,
content:
"800"
],
[]},
{
:meta
,
[
property:
"og:video:height"
,
content:
"600"
],
[]}
],
fn
element
->
element
in
result
end
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment