/** * @throws \Exception if one has been queued. * @throws \OutOfBoundsException if the queue is empty. */ public function onPrepare(PrepareEvent $event) { if (!($result = array_shift($this->queue))) { throw new \OutOfBoundsException('Result mock queue is empty'); } elseif ($result instanceof \Exception) { throw $result; } else { $event->setResult($result); } }
public function testCanSetRequest() { $command = $this->getMock('GuzzleHttp\\Command\\CommandInterface'); $client = $this->getMock('GuzzleHttp\\Command\\ServiceClientInterface'); $trans = new CommandTransaction($client, $command); $event = new PrepareEvent($trans); $request = new Request('GET', 'http://httbin.org'); $event->setRequest($request); $this->assertSame($request, $event->getRequest()); $this->assertFalse($event->isPropagationStopped()); }
public function onPrepare(PrepareEvent $event) { // Don't modify the request if one is already present if ($event->getRequest()) { return; } /* @var GuzzleCommandInterface $command */ $command = $event->getCommand(); /* @var GuzzleClientInterface $client */ $client = $event->getClient(); $request = $this->createRequest($command, $client); $this->prepareRequest($command, $client, $request); $event->setRequest($request); }
public function onPrepare(PrepareEvent $event) { $command = $event->getCommand(); if (!$command instanceof GuzzleCommandInterface) { throw new \RuntimeException('The command sent to ' . __METHOD__ . ' is not a GuzzleHttp\\Command\\Guzzle\\GuzzleCommandInterface'); } $errors = array(); $operation = $command->getOperation(); foreach ($operation->getParams() as $name => $schema) { $value = $command[$name]; if (!$this->validator->validate($schema, $value)) { $errors = array_merge($errors, $this->validator->getErrors()); } elseif ($value !== $command[$name]) { // Update the config value if it changed and no validation // errors were encountered $command[$name] = $value; } } if ($params = $operation->getAdditionalParameters()) { foreach ($command->toArray() as $name => $value) { // It's only additional if it isn't defined in the schema if (!$operation->hasParam($name)) { // Always set the name so that error messages are useful $params->setName($name); if (!$this->validator->validate($params, $value)) { $errors = array_merge($errors, $this->validator->getErrors()); } elseif ($value !== $command[$name]) { $command[$name] = $value; } } } } if ($errors) { throw new CommandException('Validation errors: ' . implode("\n", $errors), $event->getTransaction()); } }