eventbrite_one_way_sync-1.0.0/src/WebhookManager/WebhookManager.php

src/WebhookManager/WebhookManager.php
<?php

namespace Drupal\eventbrite_one_way_sync\WebhookManager;

use Drupal\eventbrite_one_way_sync\Utilities\CommonUtilities;
use Drupal\webhook_receiver\Payload\PayloadInterface;
use Drupal\webhook_receiver\WebhookReceiverLog\WebhookReceiverLogInterface;

/**
 * Manage webhooks.
 */
class WebhookManager implements WebhookManagerInterface {

  use CommonUtilities;

  /**
   * Get a processor based on a payload.
   *
   * @param \Drupal\webhook_receiver\Payload\PayloadInterface $payload
   *   A payload.
   * @param \Drupal\webhook_receiver\WebhookReceiverLog\WebhookReceiverLogInterface $log
   *   A logger.
   *
   * @return \Drupal\eventbrite_one_way_sync\WebhookManager\WebhookProcessorInterface
   *   A processor.
   */
  public function processor(PayloadInterface $payload, WebhookReceiverLogInterface $log) : WebhookProcessorInterface {
    $action = $this->payloadAction($payload);

    switch ($action) {
      case 'test':
        $log->debug('Processing test action.');
        return new PayloadTestProcessor($payload, $log);

      case 'event.updated':
        $log->debug('Processing event updated action.');
        return new PayloadUpdateProcessor($payload, $log);
    }

    $log->err('Unknown action ' . $action);
    return new WebhookProcessorInvalid();
  }

  /**
   * Given a payload, return its action.
   *
   * @param \Drupal\webhook_receiver\Payload\PayloadInterface $payload
   *   A payload.
   *
   * @return string
   *   A payload action string.
   */
  public function payloadAction(PayloadInterface $payload) : string {
    $payload_array = $payload->toArray();

    $candidate = $payload_array['config']['action'];

    $this->assertNonEmptyString($candidate, 'Payload action must be a non-empty string.');

    return $candidate;
  }

  /**
   * {@inheritdoc}
   */
  public function validatePayload(PayloadInterface $payload, WebhookReceiverLogInterface $log) : bool {
    return $this->processor($payload, $log)->validate();
  }

  /**
   * {@inheritdoc}
   */
  public function processPayload(PayloadInterface $payload, WebhookReceiverLogInterface $log, bool $simulate) {
    return $this->processor($payload, $log)->process();
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc