comsave/salesforce-outbound-message-tower

View on GitHub
src/Controller/BroadcasterController.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php
 
namespace App\Controller;
 
use App\Exception\OutboundMessageTowerException;
use App\Services\MessageRemover;
use App\Services\NextMessageSelector;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
 
class BroadcasterController extends AbstractController
{
public function broadcast(
NextMessageSelector $nextMessageSelector,
LoggerInterface $logger,
string $channelName
): Response {
try {
$nextMessage = $nextMessageSelector->nextMessage($channelName);
} catch (OutboundMessageTowerException $ex) {
return new JsonResponse([
'status' => 'Error',
'message' => sprintf($ex->getMessage()),
], Response::HTTP_BAD_REQUEST);
} catch (Throwable $ex) {
$logger->critical($ex->getMessage(), $ex->getTrace());
 
return new JsonResponse([
'status' => 'Error',
'message' => 'Failed unexpectedly. Look for details in the logs.',
], Response::HTTP_BAD_REQUEST);
}
 
return new Response($nextMessage, Response::HTTP_OK, [
'Content-Type' => 'text/xml',
]);
}
 
public function broadcastProcessed(
MessageRemover $processedMessageRemover,
LoggerInterface $logger,
string $channelName,
string $notificationId
): Response {
Similar blocks of code found in 2 locations. Consider refactoring.
try {
$processedMessageRemover->remove($channelName, $notificationId);
} catch (OutboundMessageTowerException $ex) {
return new JsonResponse([
'status' => 'Error',
'message' => sprintf($ex->getMessage()),
], Response::HTTP_BAD_REQUEST);
} catch (Throwable $ex) {
$logger->critical($ex->getMessage(), $ex->getTrace());
 
return new JsonResponse([
'status' => 'Error',
'message' => 'Failed unexpectedly. Look for details in the logs.',
], Response::HTTP_BAD_REQUEST);
}
 
return new JsonResponse([
'status' => 'OK',
'message' => sprintf('Removed processed notification `%s`.', $notificationId),
], Response::HTTP_OK);
}
}