public static function DeveloperAppFormTrait::appExists in Apigee Edge 8
File
- src/
Entity/ Form/ DeveloperAppFormTrait.php, line 44
Class
- DeveloperAppFormTrait
- Helper trait that contains developer app (create/edit) form specific tweaks.
Namespace
Drupal\apigee_edge\Entity\FormCode
public static function appExists(string $name, array $element, FormStateInterface $form_state) : bool {
// Do not validate if app name is not set.
if ($name === '') {
return FALSE;
}
// Return TRUE if developer account has not been found for this Drupal user.
// TODO Make sure that DeveloperAppCreateEditFormForDeveloper can be
// used only if the Drupal user in the route has a developer account
// in Apigee Edge.
if ($form_state
->getValue('owner') === NULL) {
return TRUE;
}
// We use the developer app controller factory here instead of entity
// query to reduce the number API calls. (Entity query may load all
// developers to return whether the given developer has an app with
// the provided name already.)
/** @var \Drupal\apigee_edge\Entity\Controller\DeveloperAppControllerFactoryInterface $factory */
$factory = \Drupal::service('apigee_edge.controller.developer_app_controller_factory');
$app = TRUE;
try {
$app = $factory
->developerAppController($form_state
->getValue('owner'))
->load($name);
} catch (ApiException $exception) {
if ($exception instanceof ClientErrorException && $exception
->getEdgeErrorCode() === 'developer.service.AppDoesNotExist') {
$app = FALSE;
}
else {
// Fail safe, return TRUE in case of an API communication error or an
// unexpected response.
$context = [
'%app_name' => $name,
'%owner' => $form_state
->getValue('owner'),
];
$context += Error::decodeException($exception);
\Drupal::logger('apigee_edge')
->error("Unable to properly validate an app name's uniqueness. App name: %app_name. Owner: %owner. @message %function (line %line of %file). <pre>@backtrace_string</pre>", $context);
}
}
return (bool) $app;
}