Improve ActivityPub/OStatus compatibility (#4632)
*Note: OStatus URIs are invalid for ActivityPub. But we have them for as long as we want to keep old OStatus-sourced content and as long as we remain OStatus-compatible.* - In Announce handling, if object URI is not a URL, fallback to object URL - Do not use specialized ThreadResolveWorker, rely on generalized handling - When serializing notes, if parent's URI is not a URL, use parent's URLmaster
parent
774b8661bc
commit
412ea87306
@ -1,17 +0,0 @@ |
|||||||
# frozen_string_literal: true |
|
||||||
|
|
||||||
class ActivityPub::ThreadResolveWorker |
|
||||||
include Sidekiq::Worker |
|
||||||
|
|
||||||
sidekiq_options queue: 'pull', retry: false |
|
||||||
|
|
||||||
def perform(child_status_id, parent_uri) |
|
||||||
child_status = Status.find(child_status_id) |
|
||||||
parent_status = ActivityPub::FetchRemoteStatusService.new.call(parent_uri) |
|
||||||
|
|
||||||
return if parent_status.nil? |
|
||||||
|
|
||||||
child_status.thread = parent_status |
|
||||||
child_status.save! |
|
||||||
end |
|
||||||
end |
|
@ -1,16 +0,0 @@ |
|||||||
require 'rails_helper' |
|
||||||
|
|
||||||
describe ActivityPub::ThreadResolveWorker do |
|
||||||
subject { described_class.new } |
|
||||||
|
|
||||||
let(:status) { Fabricate(:status) } |
|
||||||
let(:parent) { Fabricate(:status) } |
|
||||||
|
|
||||||
describe '#perform' do |
|
||||||
it 'gets parent from ActivityPub::FetchRemoteStatusService and glues them together' do |
|
||||||
allow(ActivityPub::FetchRemoteStatusService).to receive(:new).and_return(double(:service, call: parent)) |
|
||||||
subject.perform(status.id, 'http://example.com/123') |
|
||||||
expect(status.reload.in_reply_to_id).to eq parent.id |
|
||||||
end |
|
||||||
end |
|
||||||
end |
|
Loading…
Reference in new issue