setCommunicator($communicator); parent::__construct($name); } protected Communicator $communicator; public function getCommunicator(): Communicator { return $this->communicator; } public function setCommunicator(Communicator $communicator): Messages { $this->communicator = $communicator; return $this; } protected function getMailboxes(): array { $response = $this->getCommunicator()->get('/mailboxes/registered'); return json_decode($response->getBody()->getContents())->mailboxes; } protected function grabMessages(string $mailbox): int { $response = $this->getCommunicator()->put('/messages/grab', ['mailboxes' => [$mailbox]]); $body = json_decode($response->getBody()->getContents()); return $body->message_count; } public function execute(InputInterface $input, OutputInterface $output) { $io = new SymfonyStyle($input, $output); $io->title('Messages'); $io->section('Grabbing Registered Mailboxes'); $mailboxes = $this->getMailboxes(); $io->text('Found ' . count($mailboxes) . ' registered mailboxes.'); $io->section('Grabbing Messages'); foreach ($mailboxes as $mailbox) { $message_count = $this->grabMessages($mailbox->name); $io->text("Found {$message_count} messages in {$mailbox->name}."); } $io->success('Done.'); return Command::SUCCESS; } }