BrightcoveSubscriptionsQueueWorker.php in Brightcove Video Connect 8
File
src/Plugin/QueueWorker/BrightcoveSubscriptionsQueueWorker.php
View source
<?php
namespace Drupal\brightcove\Plugin\QueueWorker;
use Brightcove\API\Exception\APIException;
use Brightcove\Object\Subscription;
use Drupal\brightcove\BrightcoveUtil;
use Drupal\Core\Logger\RfcLogLevel;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Queue\QueueInterface;
use Drupal\Core\Queue\QueueWorkerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
class BrightcoveSubscriptionsQueueWorker extends QueueWorkerBase implements ContainerFactoryPluginInterface {
protected $subscriptionQueue;
protected $subscriptionDeleteQueue;
public function __construct(array $configuration, $plugin_id, array $plugin_definition, QueueInterface $subscription_queue, QueueInterface $subscription_delete_queue) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->subscriptionQueue = $subscription_queue;
$this->subscriptionDeleteQueue = $subscription_delete_queue;
}
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('queue')
->get('brightcove_subscription_queue_worker'), $container
->get('queue')
->get('brightcove_subscription_delete_queue_worker'));
}
public function processItem($data) {
$cms = BrightcoveUtil::getCmsApi($data);
try {
$subscriptions = $cms
->getSubscriptions();
foreach (!empty($subscriptions) ? $subscriptions : [] as $subscription) {
if ($subscription instanceof Subscription) {
$this->subscriptionQueue
->createItem([
'api_client_id' => $data,
'subscription' => $subscription,
]);
}
}
} catch (APIException $e) {
if ($e
->getCode() == 401) {
watchdog_exception('brightcove', $e, 'Access denied for Notifications.', [], RfcLogLevel::WARNING);
}
else {
throw $e;
}
}
}
}