Fix attachments of edited statuses not being fetched (#21565)
* Fix attachments of edited statuses not being fetched * Fix tests
This commit is contained in:
parent
d587a268fd
commit
625216d8e1
|
@ -92,7 +92,13 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
||||||
|
|
||||||
next if unsupported_media_type?(media_attachment_parser.file_content_type) || skip_download?
|
next if unsupported_media_type?(media_attachment_parser.file_content_type) || skip_download?
|
||||||
|
|
||||||
RedownloadMediaWorker.perform_async(media_attachment.id) if media_attachment.remote_url_previously_changed? || media_attachment.thumbnail_remote_url_previously_changed?
|
begin
|
||||||
|
media_attachment.download_file! if media_attachment.remote_url_previously_changed?
|
||||||
|
media_attachment.download_thumbnail! if media_attachment.thumbnail_remote_url_previously_changed?
|
||||||
|
media_attachment.save
|
||||||
|
rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError
|
||||||
|
RedownloadMediaWorker.perform_in(rand(30..600).seconds, media_attachment.id)
|
||||||
|
end
|
||||||
rescue Addressable::URI::InvalidURIError => e
|
rescue Addressable::URI::InvalidURIError => e
|
||||||
Rails.logger.debug "Invalid URL in attachment: #{e}"
|
Rails.logger.debug "Invalid URL in attachment: #{e}"
|
||||||
end
|
end
|
||||||
|
|
|
@ -331,7 +331,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
|
||||||
|
|
||||||
context 'originally without media attachments' do
|
context 'originally without media attachments' do
|
||||||
before do
|
before do
|
||||||
allow(RedownloadMediaWorker).to receive(:perform_async)
|
stub_request(:get, 'https://example.com/foo.png').to_return(body: attachment_fixture('emojo.png'))
|
||||||
subject.call(status, json)
|
subject.call(status, json)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -355,8 +355,8 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
|
||||||
expect(media_attachment.remote_url).to eq 'https://example.com/foo.png'
|
expect(media_attachment.remote_url).to eq 'https://example.com/foo.png'
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'queues download of media attachments' do
|
it 'fetches the attachment' do
|
||||||
expect(RedownloadMediaWorker).to have_received(:perform_async)
|
expect(a_request(:get, 'https://example.com/foo.png')).to have_been_made
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'records media change in edit' do
|
it 'records media change in edit' do
|
||||||
|
|
Reference in New Issue