Current Path : /var/www/html/wp-content/plugins/duplicator-pro/aws/Guzzle/Service/Command/ |
Current File : /var/www/html/wp-content/plugins/duplicator-pro/aws/Guzzle/Service/Command/ClosureCommand.php |
<?php namespace DuplicatorPro\Guzzle\Service\Command; use DuplicatorPro\Guzzle\Common\Exception\InvalidArgumentException; use DuplicatorPro\Guzzle\Common\Exception\UnexpectedValueException; use DuplicatorPro\Guzzle\Http\Message\RequestInterface; /** * A ClosureCommand is a command that allows dynamic commands to be created at runtime using a closure to prepare the * request. A closure key and \Closure value must be passed to the command in the constructor. The closure must * accept the command object as an argument. */ class ClosureCommand extends AbstractCommand { /** * {@inheritdoc} * @throws InvalidArgumentException if a closure was not passed */ protected function init() { if (!$this['closure']) { throw new InvalidArgumentException('A closure must be passed in the parameters array'); } } /** * {@inheritdoc} * @throws UnexpectedValueException If the closure does not return a request */ protected function build() { $closure = $this['closure']; /** @var $closure \Closure */ $this->request = $closure($this, $this->operation); if (!$this->request || !$this->request instanceof RequestInterface) { throw new UnexpectedValueException('Closure command did not return a RequestInterface object'); } } }