eventbrite_one_way_sync-1.0.0/src/RemoteId/RemoteId.php

src/RemoteId/RemoteId.php
<?php

namespace Drupal\eventbrite_one_way_sync\RemoteId;

use Drupal\eventbrite_one_way_sync\Utilities\CommonUtilities;

/**
 * Represents and allows manipulation of remote IDs.
 *
 * Remote IDs are multi-part ID representing a record on Eventbrite and
 * contain information about the Eventbrite account, the record type (series,
 * event), and resource ID.
 */
class RemoteId implements RemoteIdInterface {

  use CommonUtilities;

  /**
   * The remote ID as a string.
   *
   * @var string
   */
  protected $raw;

  /**
   * Constructor.
   *
   * @param string $raw
   *   The remote ID as a string.
   */
  public function __construct(string $raw) {
    $this->raw = $raw;
  }

  /**
   * {@inheritdoc}
   */
  public function recordType() : string {
    $candidate = $this->getPart(1, 'Record ID cannot be empty');

    if (!in_array($candidate, ['event', 'series'])) {
      throw new \Exception($candidate . ' is not one of event, series.');
    }

    return $candidate;
  }

  /**
   * {@inheritdoc}
   */
  public function toString() : string {
    return $this->raw;
  }

  /**
   * {@inheritdoc}
   */
  public function recordId() : string {
    return $this->getPart(2, 'Record ID cannot be empty');
  }

  /**
   * {@inheritdoc}
   */
  public function eventbriteAccountName() : string {
    return $this->getPart(0, 'Account name cannot be empty');
  }

  /**
   * Get one of three (3) parts of the raw remote ID.
   *
   * @param int $part
   *   A part, 0, 1, or 2.
   * @param string $err_message
   *   The error if this is an empty string.
   *
   * @return string
   *   A string.
   */
  public function getPart(int $part, string $err_message) : string {
    $parts = explode(':', $this->raw);

    if (count($parts) != 3) {
      throw new \Exception('The remote ID is invalid, it should contain exactly two colons (:).');
    }

    $candidate = $parts[$part];

    $this->assertNonEmptyString($candidate, $err_message);

    return $candidate;
  }

}

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

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