Update AP Inbox

This commit is contained in:
Daniel Supernault 2024-09-07 02:49:33 -06:00
parent 909a6c725b
commit 3e88b7c890
No known key found for this signature in database
GPG key ID: 23740873EE6F76A1

View file

@ -3,6 +3,7 @@
namespace App\Util\ActivityPub;
use Cache, DB, Log, Purify, Redis, Storage, Validator;
use Illuminate\Support\Facades\Bus;
use App\{
Activity,
DirectMessage,
@ -30,6 +31,10 @@ use App\Jobs\StoryPipeline\StoryExpire;
use App\Jobs\StoryPipeline\StoryFetch;
use App\Jobs\StatusPipeline\StatusRemoteUpdatePipeline;
use App\Jobs\ProfilePipeline\HandleUpdateActivity;
use App\Jobs\MovePipeline\ProcessMovePipeline;
use App\Jobs\MovePipeline\MoveMigrateFollowersPipeline;
use App\Jobs\MovePipeline\UnfollowLegacyAccountMovePipeline;
use App\Jobs\MovePipeline\CleanupLegacyAccountMovePipeline;
use App\Util\ActivityPub\Validator\Accept as AcceptValidator;
use App\Util\ActivityPub\Validator\Add as AddValidator;
@ -38,6 +43,7 @@ use App\Util\ActivityPub\Validator\Follow as FollowValidator;
use App\Util\ActivityPub\Validator\Like as LikeValidator;
use App\Util\ActivityPub\Validator\UndoFollow as UndoFollowValidator;
use App\Util\ActivityPub\Validator\UpdatePersonValidator;
use App\Util\ActivityPub\Validator\MoveValidator;
use App\Services\AccountService;
use App\Services\PollService;
@ -135,6 +141,14 @@ class Inbox
$this->handleUpdateActivity();
break;
case 'Move':
if(MoveValidator::validate($this->payload) == false) {
\Log::info('[AP][INBOX][MOVE] VALIDATE_FAILURE ' . json_encode($this->payload));
return;
}
$this->handleMoveActivity();
break;
default:
// TODO: decide how to handle invalid verbs.
break;
@ -1347,4 +1361,27 @@ class Inbox
}
}
}
public function handleMoveActivity()
{
$actor = $this->payload['actor'];
$activity = $this->payload['object'];
$target = $this->payload['target'];
if(
!Helpers::validateUrl($actor) ||
!Helpers::validateUrl($activity) ||
!Helpers::validateUrl($target)
) {
return;
}
Bus::chain([
new ProcessMoveActivity,
new MoveMigrateFollowersPipeline,
new UnfollowLegacyAccountMovePipeline,
new CleanupLegacyAccountMovePipeline
])
->onQueue('move')
->dispatch($target, $activity);
}
}