Fix missing focalPoint in ActivityPub JSON (#6609)
parent
49092945ab
commit
44829d8216
|
@ -90,6 +90,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
|
|||
include RoutingHelper
|
||||
|
||||
attributes :type, :media_type, :url, :name
|
||||
attribute :focal_point, if: :focal_point?
|
||||
|
||||
def type
|
||||
'Document'
|
||||
|
@ -106,6 +107,14 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
|
|||
def url
|
||||
object.local? ? full_asset_url(object.file.url(:original, false)) : object.remote_url
|
||||
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
|
||||
|
||||
class MentionSerializer < ActiveModel::Serializer
|
||||
|
|
|
@ -202,7 +202,7 @@ RSpec.describe ActivityPub::Activity::Create do
|
|||
attachment: [
|
||||
{
|
||||
type: 'Document',
|
||||
mime_type: 'image/png',
|
||||
mediaType: 'image/png',
|
||||
url: 'http://example.com/attachment.png',
|
||||
},
|
||||
],
|
||||
|
@ -217,6 +217,31 @@ RSpec.describe ActivityPub::Activity::Create do
|
|||
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
|
||||
let(:object_json) do
|
||||
{
|
||||
|
@ -226,7 +251,7 @@ RSpec.describe ActivityPub::Activity::Create do
|
|||
attachment: [
|
||||
{
|
||||
type: 'Document',
|
||||
mime_type: 'image/png',
|
||||
mediaType: 'image/png',
|
||||
},
|
||||
],
|
||||
}
|
||||
|
|
Reference in New Issue