You are here

private function Trigger::triggerBuildHook in Build Hooks 3.x

Same name and namespace in other branches
  1. 8.2 src/Trigger.php \Drupal\build_hooks\Trigger::triggerBuildHook()

Triggers a build hook by the details.

Parameters

\Drupal\build_hooks\BuildHookDetails $buildHookDetails: An object that holds the information about the call.

\Drupal\build_hooks\Entity\FrontendEnvironmentInterface $frontendEnvironment: The plugin which performs the trigger.

Return value

\Drupal\build_hooks\Event\BuildTrigger Trigger event.

Throws

\GuzzleHttp\Exception\GuzzleException

1 call to Trigger::triggerBuildHook()
Trigger::triggerBuildHookForEnvironment in src/Trigger.php
Trigger a deployment for a frontend environment.

File

src/Trigger.php, line 245

Class

Trigger
Defines a service for triggering deployments.

Namespace

Drupal\build_hooks

Code

private function triggerBuildHook(BuildHookDetails $buildHookDetails, FrontendEnvironmentInterface $frontendEnvironment) {

  /** @var \Drupal\build_hooks\DeploymentStorageHandlerInterface $deployment_storage */
  $deployment_storage = $this->entityTypeManager
    ->getStorage('build_hooks_deployment');
  $deployment = $deployment_storage
    ->getOrCreateNextDeploymentForEnvironment($frontendEnvironment);
  $triggerEvent = new BuildTrigger($buildHookDetails, $frontendEnvironment, $deployment);
  $frontendEnvironment
    ->getPlugin()
    ->preDeploymentTrigger($triggerEvent);
  $this->eventDispatcher
    ->dispatch(BuildTrigger::class, $triggerEvent);
  if (!$triggerEvent
    ->shouldBuild()) {
    return $triggerEvent;
  }
  $response = $this->httpClient
    ->request($buildHookDetails
    ->getMethod(), $buildHookDetails
    ->getUrl(), $buildHookDetails
    ->getOptions());
  $event = new ResponseEvent($response, $frontendEnvironment
    ->getPlugin());
  $this->eventDispatcher
    ->dispatch(ResponseEvent::EVENT_NAME, $event);
  return $triggerEvent
    ->setResponse($response);
}