/** * @dataProvider eventProvider */ public function testGet($type, $expected) { $factory = new EventProcessorFactory(self::$DI['app']); $event = new WebhookEvent(); $event->setType($type); $this->assertInstanceOf($expected, $factory->get($event)); }
public function process(WebhookEvent $event) { $data = $event->getData(); if (!isset($data->entry_id)) { return null; } $entry = $this->entryRepository->find($data->entry_id); if (null === $entry) { return null; } $data = $event->getData(); $feed = $entry->getFeed(); $query = $this->userQuery; $query->include_phantoms(true)->include_invite(false)->include_templates(false)->email_not_null(true); if ($feed->getCollection($this->app)) { $query->on_base_ids([$feed->getCollection($this->app)->get_base_id()]); } $start = 0; $perLoop = 100; $users = []; do { $results = $query->limit($start, $perLoop)->execute()->get_results(); foreach ($results as $user) { $users[] = ['email' => $user->getEmail(), 'firstname' => $user->getFirstname() ?: null, 'lastname' => $user->getLastname() ?: null]; } $start += $perLoop; } while (count($results) > 0); return ['event' => $event->getName(), 'users_were_notified' => isset($data->notify_email) ?: (bool) $data->notify_email, 'feed' => ['id' => $feed->getId(), 'title' => $feed->getTitle(), 'description' => $feed->getSubtitle()], 'entry' => ['id' => $entry->getId(), 'author' => ['name' => $entry->getAuthorName(), 'email' => $entry->getAuthorEmail()], 'title' => $entry->getTitle(), 'description' => $entry->getSubtitle()], 'users' => $users]; }
public function process(WebhookEvent $event) { $data = $event->getData(); if (!isset($data['user_id'])) { return null; } $user = $this->userRepository->find($data['user_id']); return ['event' => $event->getName(), 'user' => ['id' => $user->getId(), 'email' => $user->getEmail(), 'login' => $user->getLogin()], 'granted' => $data['granted'], 'rejected' => $data['rejected']]; }
public function testProcess() { $event = new WebhookEvent(); $event->setData(['feed_id' => self::$DI['feed_public_entry']->getFeed()->getId(), 'entry_id' => self::$DI['feed_public_entry']->getId()]); $event->setName(WebhookEvent::NEW_FEED_ENTRY); $event->setType(WebhookEvent::FEED_ENTRY_TYPE); $processor = new FeedEntryProcessor($event, self::$DI['app']); $this->assertEquals($processor->process(), null); }
public function get(WebhookEvent $event) { switch ($event->getType()) { case WebhookEvent::FEED_ENTRY_TYPE: return new FeedEntryProcessor($event, $this->app); break; default: throw new \RuntimeException(sprintf('No processor found for %s', $event->getType())); } }
public function get(WebhookEvent $event) { switch ($event->getType()) { case WebhookEvent::FEED_ENTRY_TYPE: return new FeedEntryProcessor($this->app, $this->app['repo.feed-entries'], $this->app['phraseanet.user-query']); case WebhookEvent::USER_REGISTRATION_TYPE: return new UserRegistrationProcessor($this->app['repo.users']); default: throw new \RuntimeException(sprintf('No processor found for %s', $event->getType())); } }
protected function insertWebhookEvent(EntityManager $em, \Pimple $DI) { $event = new WebhookEvent(); $event->setName(WebhookEvent::NEW_FEED_ENTRY); $event->setType(WebhookEvent::FEED_ENTRY_TYPE); $event->setData(['feed_id' => $DI['feed_public_entry']->getFeed()->getId(), 'entry_id' => $DI['feed_public_entry']->getId()]); $em->persist($event); $DI['event_webhook_1'] = $event; $event2 = new WebhookEvent(); $event2->setName(WebhookEvent::NEW_FEED_ENTRY); $event2->setType(WebhookEvent::FEED_ENTRY_TYPE); $event2->setData(['feed_id' => $DI['feed_public_entry']->getFeed()->getId(), 'entry_id' => $DI['feed_public_entry']->getId()]); $event2->setProcessed(true); $em->persist($event2); }
public function processed(WebhookEvent $event) { $event->setProcessed(true); $this->update($event); }