Example #1
0
 /**
  * Listens for incoming requests.
  *
  * @throws InvalidRequestException
  */
 public function listen()
 {
     if ($_SERVER['REQUEST_METHOD'] != 'POST') {
         throw new InvalidRequestException('Expected a POST request.');
     }
     $remoteAddress = $this->getRemoteAddress();
     if (!$this->isValidRemoteAddress($remoteAddress)) {
         throw new InvalidRequestException('Invalid remote address.');
     }
     if (empty($_POST[$this->parameter])) {
         throw new InvalidRequestException('Expected the parameter ' . $this->parameter);
     }
     $payload = new Payload($_POST['payload']);
     $configuration = $this->getConfiguration($payload->getRepository());
     if (!$configuration) {
         throw new InvalidRequestException('Invalid repository: ' . $payload->getRepository());
     }
     if ($configuration->getDriver() != 'git') {
         throw new InvalidRequestException('Project is not a git repository but ' . $configuration->getDriver());
     }
     $driverConfig = new DriverConfig();
     $driverConfig->setDirectory($configuration->getSource());
     $driverConfig->setBranch($payload->getBranch());
     $driverConfig->setRepository($configuration->getRepository());
     $driver = new GitDriver();
     $driver->install($driverConfig);
     $generator = $this->configureGenerator($configuration, $payload);
     $generator->generate();
 }