src/Cms/CoreBundle/EventSubscriber/OneRoster/OneRosterInitSubscriber.php line 52

Open in your IDE?
  1. <?php
  2. namespace Cms\CoreBundle\EventSubscriber\OneRoster;
  3. use Cms\CoreBundle\Entity\OneRosterJob;
  4. use Cms\CoreBundle\Events\OneRosterEvents;
  5. use Platform\QueueBundle\Event\AsyncEvent;
  6. /**
  7.  * Class OneRosterInitSubscriber
  8.  * @package Cms\CoreBundle\EventSubscriber\OneRoster
  9.  */
  10. final class OneRosterInitSubscriber extends AbstractOneRosterSubscriber
  11. {
  12.     /**
  13.      * {@inheritDoc}
  14.      */
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             OneRosterEvents::EVENT__INIT => [
  19.                 ['discardableDisable'self::PRIORITY__FIRST],
  20.                 ['phaseStart'self::PRIORITY__FIRST],
  21.                 ['refreshApiToken'0],
  22.                 ['phaseFin'self::PRIORITY__LAST],
  23.                 ['phaseTrigger'self::PRIORITY__LAST],
  24.                 ['discardableEnable'self::PRIORITY__LAST],
  25.             ],
  26.         ];
  27.     }
  28.     /**
  29.      * {@inheritDoc}
  30.      */
  31.     public function phase(): int
  32.     {
  33.         return OneRosterJob::PHASES__INIT;
  34.     }
  35.     /**
  36.      * {@inheritDoc}
  37.      */
  38.     public function next(): ?int
  39.     {
  40.         return OneRosterJob::PHASES__STASH;
  41.     }
  42.     /**
  43.      * @param AsyncEvent $event
  44.      * @return void
  45.      */
  46.     public function refreshApiToken(AsyncEvent $event)
  47.     {
  48.         // get the sync
  49.         $sync $this->loadJob($event)->getSync();
  50.         $event->getOutput()->writeln(sprintf(
  51.             'DBG:  OR PRE TOKEN  |  TENANT: %s  |  SYNC: %s  |  VENDOR: %s',
  52.             $sync->getTenant()->getId(),
  53.             $sync->getId(),
  54.             $sync->getVendor()
  55.         ));
  56.         // obtain the api token
  57.         $span microtime(true);
  58.         try {
  59.             $token $this->oneroster->api($sync)->token(true);
  60.         } catch (\Exception $e) {
  61.             $event->getOutput()->writeln(sprintf(
  62.                 'DBG:  OR TOKEN FAIL:  %s',
  63.                 $e->getMessage(),
  64.             ));
  65.             $this->em->save(
  66.                 $sync->setApiToken([]),
  67.             );
  68.             return;
  69.         }
  70.         $span intval(ceil((microtime(true) - $span) * 1000));
  71.         $event->getOutput()->writeln(sprintf(
  72.             'DBG:  OR POST TOKEN  |  %s ms',
  73.             $span
  74.         ));
  75.         // force updating of the api token
  76.         $this->em->save(
  77.             $sync->setApiToken(
  78.                 $token
  79.             )
  80.         );
  81.         $event->getOutput()->writeln('DBG:  OR SAVE TOKEN');
  82.     }
  83. }