EnvironmentVariablesKeyProvider.php in Apigee Edge 8
File
src/Plugin/KeyProvider/EnvironmentVariablesKeyProvider.php
View source
<?php
namespace Drupal\apigee_edge\Plugin\KeyProvider;
use Drupal\apigee_edge\Exception\KeyProviderRequirementsException;
use Drupal\Component\Serialization\Json;
use Drupal\Core\Form\FormStateInterface;
use Drupal\key\KeyInterface;
use Drupal\key\Plugin\KeyPluginFormInterface;
class EnvironmentVariablesKeyProvider extends KeyProviderRequirementsBase implements KeyPluginFormInterface {
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$form['environment_variables'] = [
'#markup' => implode(', ', $this
->getEnvironmentVariables($form_state
->getFormObject()
->getEntity())),
];
return $form;
}
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
$this
->setConfiguration($form_state
->getValues());
}
public function realGetKeyValue(KeyInterface $key) {
$key_value = [];
foreach ($this
->getEnvironmentVariables($key) as $id => $variable) {
if (getenv($variable)) {
$key_value[$id] = getenv($variable);
}
}
return Json::encode((object) $key_value);
}
public static function obscureKeyValue($key_value, array $options = []) {
return $key_value;
}
public function checkRequirements(KeyInterface $key) : void {
$missing_env_variables = [];
foreach ($this
->getEnvironmentVariables($key, TRUE) as $variable) {
if (!getenv($variable)) {
$missing_env_variables[] = $variable;
}
}
if (!empty($missing_env_variables)) {
$missing_env_variables_to_string = implode(', ', $missing_env_variables);
throw new KeyProviderRequirementsException('The following environment variables are not set: ' . $missing_env_variables_to_string, $this
->t('The following environment variables are not set: @missing_env_variables.', [
'@missing_env_variables' => $missing_env_variables_to_string,
]));
}
}
protected function getEnvironmentVariables(KeyInterface $key, bool $required = FALSE) : array {
$environment_variables = [];
foreach ($key
->getKeyType()
->getPluginDefinition()['multivalue']['fields'] as $id => $field) {
if ($required && isset($field['required']) && !$field['required']) {
continue;
}
$environment_variables[$id] = 'APIGEE_EDGE_' . strtoupper($id);
}
return $environment_variables;
}
}