diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/AwsClientTrait.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/AwsClientTrait.php | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/AwsClientTrait.php b/vendor/aws/aws-sdk-php/src/AwsClientTrait.php new file mode 100644 index 0000000..f31a24e --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/AwsClientTrait.php @@ -0,0 +1,101 @@ +<?php +namespace Aws; + +use Aws\Api\Service; + +/** + * A trait providing generic functionality for interacting with Amazon Web + * Services. This is meant to be used in classes implementing + * \Aws\AwsClientInterface + */ +trait AwsClientTrait +{ + public function getPaginator($name, array $args = []) + { + $config = $this->getApi()->getPaginatorConfig($name); + + return new ResultPaginator($this, $name, $args, $config); + } + + public function getIterator($name, array $args = []) + { + $config = $this->getApi()->getPaginatorConfig($name); + if (!$config['result_key']) { + throw new \UnexpectedValueException(sprintf( + 'There are no resources to iterate for the %s operation of %s', + $name, $this->getApi()['serviceFullName'] + )); + } + + $key = is_array($config['result_key']) + ? $config['result_key'][0] + : $config['result_key']; + + if ($config['output_token'] && $config['input_token']) { + return $this->getPaginator($name, $args)->search($key); + } + + $result = $this->execute($this->getCommand($name, $args))->search($key); + + return new \ArrayIterator((array) $result); + } + + public function waitUntil($name, array $args = []) + { + return $this->getWaiter($name, $args)->promise()->wait(); + } + + public function getWaiter($name, array $args = []) + { + $config = isset($args['@waiter']) ? $args['@waiter'] : []; + $config += $this->getApi()->getWaiterConfig($name); + + return new Waiter($this, $name, $args, $config); + } + + public function execute(CommandInterface $command) + { + return $this->executeAsync($command)->wait(); + } + + public function executeAsync(CommandInterface $command) + { + $handler = $command->getHandlerList()->resolve(); + return $handler($command); + } + + public function __call($name, array $args) + { + if (substr($name, -5) === 'Async') { + $name = substr($name, 0, -5); + $isAsync = true; + } + + if (!empty($this->aliases[ucfirst($name)])) { + $name = $this->aliases[ucfirst($name)]; + } + + $params = isset($args[0]) ? $args[0] : []; + + if (!empty($isAsync)) { + return $this->executeAsync( + $this->getCommand($name, $params) + ); + } + + return $this->execute($this->getCommand($name, $params)); + } + + /** + * @param string $name + * @param array $args + * + * @return CommandInterface + */ + abstract public function getCommand($name, array $args = []); + + /** + * @return Service + */ + abstract public function getApi(); +} |