setCommunicator($communicator); parent::__construct($name); } protected Communicator $service; public function getCommunicator(): Communicator { return $this->service; } public function setCommunicator(Communicator $service): GrabAttachments { $this->service = $service; return $this; } protected function getMessages(): array { $response = $this->getCommunicator()->get('/messages/pending'); return json_decode($response->getBody()->getContents())->messages; } protected function grabAttachments(int $message_uid): int { $response = $this->getCommunicator()->put('/attachments/grab', ['messages' => [$message_uid]]); return json_decode($response->getBody()->getContents())->attachment_count; } public function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $io->title('Grab Attachments'); $io->section('Grabbing Messages'); $messages = $this->getMessages(); $io->text('Found ' . count($messages) . ' messages.'); $io->section('Grabbing Attachments'); foreach ($messages as $job) { $message = $job->message; $attachments = $this->grabAttachments($message->uid); $io->text("Found {$attachments} attachments for message UID:{$message->uid}."); } $io->success('Done.'); return Command::SUCCESS; } }