eventbrite_one_way_sync-1.0.0/src/Config/Config.php
src/Config/Config.php
<?php
namespace Drupal\eventbrite_one_way_sync\Config;
use Drupal\eventbrite_one_way_sync\Utilities\CommonUtilities;
use Drupal\eventbrite_one_way_sync\Utilities\DependencyInjection;
use Drupal\eventbrite_one_way_sync\Utilities\Singleton;
/**
* Wrapper around configuration.
*/
class Config implements ConfigInterface {
use Singleton;
use CommonUtilities;
use DependencyInjection;
/**
* {@inheritdoc}
*/
public function selfTestDummyAccount() : string {
return 'selftest';
}
/**
* {@inheritdoc}
*/
public function allApiKeys() : array {
$candidate = $this->configFactory()
->get('eventbrite_one_way_sync.unversioned')
->get('api-keys') ?: [];
$candidate[$this->selfTestDummyAccount()] = [
'private_token' => 'MY_TOKEN',
'organization_id' => 'MY_ORGANIZATION',
];
$this->assertNonEmptyArray($candidate, "The API keys in your settings.php file should be an array, please see eventbrite_one_way_sync's ./README.md file.");
return $candidate;
}
/**
* {@inheritdoc}
*/
public function getPrivateToken(string $eventbrite_account_label) : string {
return trim($this->apiInfo($eventbrite_account_label, 'private_token'));
}
/**
* {@inheritdoc}
*/
public function getOrganizationId(string $eventbrite_account_label) : string {
return $this->apiInfo($eventbrite_account_label, 'organization_id');
}
/**
* Get API info (e.g. organization id, private token) associated with account.
*
* @param string $eventbrite_account_label
* Eventbrite account label, for example "default".
* @param string $info
* Requested info, for example private_token or organization_id.
*
* @return string
* Value of the requested info.
*/
public function apiInfo(string $eventbrite_account_label, string $info) : string {
$this->assertNonEmptyString($eventbrite_account_label, 'Account label cannot be empty');
$this->assertNonEmptyString($info, 'Info cannot be empty');
$config = $this->allApiKeys();
if (!is_array($config)) {
throw new \Exception('The config for eventbrite_one_way_sync.settings.api-keys is not an array, please see README.md for eventbrite_one_way_sync on how to set up the api keys.');
}
if (!array_key_exists($eventbrite_account_label, $config)) {
throw new \Exception('There is no key with the label ' . $eventbrite_account_label . " in eventbrite_one_way_sync's configuration.");
}
if (!is_array($config[$eventbrite_account_label])) {
throw new \Exception('The API key ' . $eventbrite_account_label . ' is not an array (eventbrite_one_way_sync).');
}
if (!$config[$eventbrite_account_label][$info]) {
throw new \Exception('The API key ' . $eventbrite_account_label . '[' . $info . '] is empty (eventbrite_one_way_sync).');
}
$this->assertNonEmptyString($config[$eventbrite_account_label][$info], 'Api key info ' . $eventbrite_account_label . ' [' . $info . '] must be a string.');
return $config[$eventbrite_account_label][$info];
}
}
