vendor/dachcom-digital/dynamic-search-data-provider-crawler/src/DsWebCrawlerBundle/EventSubscriber/NotifyEventSubscriber.php line 60

Open in your IDE?
  1. <?php
  2. namespace DsWebCrawlerBundle\EventSubscriber;
  3. use DsWebCrawlerBundle\DsWebCrawlerEvents;
  4. use DynamicSearchBundle\DynamicSearchEvents;
  5. use DynamicSearchBundle\Event\NewDataEvent;
  6. use DynamicSearchBundle\EventDispatcher\DynamicSearchEventDispatcherInterface;
  7. use DynamicSearchBundle\Logger\LoggerInterface;
  8. use DynamicSearchBundle\Normalizer\Resource\ResourceMetaInterface;
  9. use Symfony\Component\EventDispatcher\GenericEvent;
  10. use VDB\Spider\Resource;
  11. class NotifyEventSubscriber implements EventSubscriberInterface
  12. {
  13.     protected string $contextName;
  14.     protected string $contextDispatchType;
  15.     protected string $crawlType;
  16.     protected ?ResourceMetaInterface $resourceMeta null;
  17.     protected LoggerInterface $logger;
  18.     protected DynamicSearchEventDispatcherInterface $eventDispatcher;
  19.     public function __construct(DynamicSearchEventDispatcherInterface $eventDispatcher)
  20.     {
  21.         $this->eventDispatcher $eventDispatcher;
  22.     }
  23.     public function setContextName(string $contextName): void
  24.     {
  25.         $this->contextName $contextName;
  26.     }
  27.     public function setContextDispatchType(string $contextDispatchType): void
  28.     {
  29.         $this->contextDispatchType $contextDispatchType;
  30.     }
  31.     public function setCrawlType(string $crawlType): void
  32.     {
  33.         $this->crawlType $crawlType;
  34.     }
  35.     public function setResourceMeta(?ResourceMetaInterface $resourceMeta): void
  36.     {
  37.         $this->resourceMeta $resourceMeta;
  38.     }
  39.     public function setLogger(LoggerInterface $logger): void
  40.     {
  41.         $this->logger $logger;
  42.     }
  43.     public static function getSubscribedEvents(): array
  44.     {
  45.         return [
  46.             DsWebCrawlerEvents::DS_WEB_CRAWLER_VALID_RESOURCE_DOWNLOADED => 'notifyPersisted',
  47.         ];
  48.     }
  49.     public function notifyPersisted(GenericEvent $event): void
  50.     {
  51.         /** @var \SplFileObject $resource */
  52.         $resource $event->getArgument('resource');
  53.         if (!file_exists($resource->getRealPath())) {
  54.             return;
  55.         }
  56.         $resourceContent file_get_contents($resource->getRealPath());
  57.         $rawContent unserialize($resourceContent);
  58.         if (!$rawContent instanceof Resource) {
  59.             return;
  60.         }
  61.         $newDataEvent = new NewDataEvent($this->contextDispatchType$this->contextName$rawContent$this->crawlType$this->resourceMeta);
  62.         $this->eventDispatcher->dispatch($newDataEventDynamicSearchEvents::NEW_DATA_AVAILABLE);
  63.     }
  64. }