public function testHasData() { $command = $this->getMock('GuzzleHttp\\Command\\CommandInterface'); $client = $this->getMock('GuzzleHttp\\Command\\ServiceClientInterface'); $trans = new CommandTransaction($client, $command); $event = new PrepareEvent($trans); $this->assertSame($trans, $event->getTransaction()); $this->assertSame($command, $event->getCommand()); $this->assertSame($client, $event->getClient()); $this->assertNull($event->getResult()); }
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 = []; $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 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->getClient(), $command); } }