forked from fedi/mastodon
Fix missing focalPoint in ActivityPub JSON (#6609)
This commit is contained in:
parent
49092945ab
commit
44829d8216
|
@ -90,6 +90,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
|
||||||
include RoutingHelper
|
include RoutingHelper
|
||||||
|
|
||||||
attributes :type, :media_type, :url, :name
|
attributes :type, :media_type, :url, :name
|
||||||
|
attribute :focal_point, if: :focal_point?
|
||||||
|
|
||||||
def type
|
def type
|
||||||
'Document'
|
'Document'
|
||||||
|
@ -106,6 +107,14 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
|
||||||
def url
|
def url
|
||||||
object.local? ? full_asset_url(object.file.url(:original, false)) : object.remote_url
|
object.local? ? full_asset_url(object.file.url(:original, false)) : object.remote_url
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def focal_point?
|
||||||
|
object.file.meta.is_a?(Hash) && object.file.meta['focus'].is_a?(Hash)
|
||||||
|
end
|
||||||
|
|
||||||
|
def focal_point
|
||||||
|
[object.file.meta['focus']['x'], object.file.meta['focus']['y']]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
class MentionSerializer < ActiveModel::Serializer
|
class MentionSerializer < ActiveModel::Serializer
|
||||||
|
|
|
@ -202,7 +202,7 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
attachment: [
|
attachment: [
|
||||||
{
|
{
|
||||||
type: 'Document',
|
type: 'Document',
|
||||||
mime_type: 'image/png',
|
mediaType: 'image/png',
|
||||||
url: 'http://example.com/attachment.png',
|
url: 'http://example.com/attachment.png',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -217,6 +217,31 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'with media attachments with focal points' do
|
||||||
|
let(:object_json) do
|
||||||
|
{
|
||||||
|
id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
|
||||||
|
type: 'Note',
|
||||||
|
content: 'Lorem ipsum',
|
||||||
|
attachment: [
|
||||||
|
{
|
||||||
|
type: 'Document',
|
||||||
|
mediaType: 'image/png',
|
||||||
|
url: 'http://example.com/attachment.png',
|
||||||
|
focalPoint: [0.5, -0.7],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates status' do
|
||||||
|
status = sender.statuses.first
|
||||||
|
|
||||||
|
expect(status).to_not be_nil
|
||||||
|
expect(status.media_attachments.map(&:focus)).to include('0.5,-0.7')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'with media attachments missing url' do
|
context 'with media attachments missing url' do
|
||||||
let(:object_json) do
|
let(:object_json) do
|
||||||
{
|
{
|
||||||
|
@ -226,7 +251,7 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
attachment: [
|
attachment: [
|
||||||
{
|
{
|
||||||
type: 'Document',
|
type: 'Document',
|
||||||
mime_type: 'image/png',
|
mediaType: 'image/png',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue