src/App/Logger/Processor/WrappedApplicationExceptionProcessor.php line 11

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace SpringerNature\CPS\AMEDReviewTracker\App\Logger\Processor;
  4. use SpringerNature\CPS\AMEDReviewTracker\App\Exception\WrappedApplicationException;
  5. use SpringerNature\CPS\AMEDReviewTracker\Domain\Exception\HasProgramIdException;
  6. use SpringerNature\CPS\AMEDReviewTracker\Domain\Exception\HasReviewerIdException;
  7. class WrappedApplicationExceptionProcessor
  8. {
  9.     public function __invoke(array $record): array
  10.     {
  11.         $data = [];
  12.         // PSR3 goodness, sadly, exception is optional in the context so we have to check for it
  13.         if (array_key_exists('exception'$record['context'])) {
  14.             $data $this->process($record['context']['exception']);
  15.         }
  16.         if (\count($data)) {
  17.             if ( ! array_key_exists('extra'$record)) {
  18.                 $record['extra'] = [];
  19.             }
  20.             $record['extra'] = array_merge($record['extra'], $data);
  21.         }
  22.         return $record;
  23.     }
  24.     private function process($exception): array
  25.     {
  26.         if ( ! $exception instanceof WrappedApplicationException) {
  27.             return [];
  28.         }
  29.         $domainException $exception->getPrevious();
  30.         $data = [];
  31.         if ($domainException instanceof HasProgramIdException) {
  32.             $data['program_id'] = $domainException->getProgramId();
  33.         }
  34.         if ($domainException instanceof HasReviewerIdException) {
  35.             $data['reviewer_id'] = $domainException->getReviewerId();
  36.         }
  37.         return $data;
  38.     }
  39. }