diff options
| author | Eole <EoleDev@outlook.fr> | 2016-04-27 16:42:28 +0200 |
|---|---|---|
| committer | Eole <EoleDev@outlook.fr> | 2016-04-27 16:42:28 +0200 |
| commit | 49f416dc5061032e0514ea0cfeceaca37d13e432 (patch) | |
| tree | 1202ac2a6fa860b8929afdc886c94fc50bd0a1de /server/vendor/php-opencloud/common/src/Common/Api/Operator.php | |
| parent | c7edd70b5e5b0f5159c78ce3d924d4e7f60db816 (diff) | |
| parent | c9202d9113210981ae47df40511645da2ee140df (diff) | |
Merge branch 'develop' into Eole_Graph
Conflicts:
client/index.html
client/js/controllers/home/home.js
client/partials/home/home.html
Diffstat (limited to 'server/vendor/php-opencloud/common/src/Common/Api/Operator.php')
| -rw-r--r-- | server/vendor/php-opencloud/common/src/Common/Api/Operator.php | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/server/vendor/php-opencloud/common/src/Common/Api/Operator.php b/server/vendor/php-opencloud/common/src/Common/Api/Operator.php deleted file mode 100644 index 4325b69..0000000 --- a/server/vendor/php-opencloud/common/src/Common/Api/Operator.php +++ /dev/null @@ -1,173 +0,0 @@ -<?php - -namespace OpenCloud\Common\Api; - -use function GuzzleHttp\uri_template; -use GuzzleHttp\ClientInterface; -use GuzzleHttp\Promise\Promise; -use OpenCloud\Common\Resource\ResourceInterface; -use OpenCloud\Common\Transport\RequestSerializer; -use Psr\Http\Message\ResponseInterface; - -/** - * {@inheritDoc} - */ -abstract class Operator implements OperatorInterface -{ - /** @var ClientInterface */ - protected $client; - - /** @var ApiInterface */ - protected $api; - - /** - * {@inheritDoc} - */ - public function __construct(ClientInterface $client, ApiInterface $api) - { - $this->client = $client; - $this->api = $api; - } - - /** - * Magic method for dictating how objects are rendered when var_dump is called. - * For the benefit of users, extremely verbose and heavy properties (such as HTTP clients) are - * removed to provide easier access to normal state, such as resource attributes. - * - * @codeCoverageIgnore - * @return array - */ - public function __debugInfo() - { - $excludedVars = ['client', 'errorBuilder', 'api']; - - $output = []; - - foreach (get_object_vars($this) as $key => $val) { - if (!in_array($key, $excludedVars)) { - $output[$key] = $val; - } - } - - return $output; - } - - /** - * Retrieves a populated Operation according to the definition and values provided. A - * HTTP client is also injected into the object to allow it to communicate with the remote API. - * - * @param array $definition The data that dictates how the operation works - * - * @return Operation - */ - public function getOperation(array $definition) - { - return new Operation($definition); - } - - protected function sendRequest(Operation $operation, array $userValues = [], $async = false) - { - $operation->validate($userValues); - - $options = (new RequestSerializer)->serializeOptions($operation, $userValues); - $method = $async ? 'requestAsync' : 'request'; - $uri = uri_template($operation->getPath(), $userValues); - - return $this->client->$method($operation->getMethod(), $uri, $options); - } - - /** - * {@inheritDoc} - */ - public function execute(array $definition, array $userValues = []) - { - return $this->sendRequest($this->getOperation($definition), $userValues); - } - - /** - * {@inheritDoc} - */ - public function executeAsync(array $definition, array $userValues = []) - { - return $this->sendRequest($this->getOperation($definition), $userValues, true); - } - - /** - * {@inheritDoc} - */ - public function model($class, $data = null) - { - $model = new $class($this->client, $this->api); - - // @codeCoverageIgnoreStart - if (!$model instanceof ResourceInterface) { - throw new \RuntimeException(sprintf('%s does not implement %s', $class, ResourceInterface::class)); - } - // @codeCoverageIgnoreEnd - - if ($data instanceof ResponseInterface) { - $model->populateFromResponse($data); - } elseif (is_array($data)) { - $model->populateFromArray($data); - } - - return $model; - } - - /** - * Will create a new instance of this class with the current HTTP client and API injected in. This - * is useful when enumerating over a collection since multiple copies of the same resource class - * are needed. - * - * @return static - */ - public function newInstance() - { - return new static($this->client, $this->api); - } - - /** - * @return \GuzzleHttp\Psr7\Uri - */ - protected function getHttpBaseUrl() - { - return $this->client->getConfig('base_uri'); - } - - /** - * Magic method which intercepts async calls, finds the sequential version, and wraps it in a - * {@see Promise} object. In order for this to happen, the called methods need to be in the - * following format: `createAsync`, where `create` is the sequential method being wrapped. - * - * @param $methodName The name of the method being invoked. - * @param $args The arguments to be passed to the sequential method. - * - * @throws \RuntimeException If method does not exist - * - * @return Promise - */ - public function __call($methodName, $args) - { - $e = function ($name) { - return new \RuntimeException(sprintf('%s::%s is not defined', get_class($this), $name)); - }; - - if (substr($methodName, -5) === 'Async') { - $realMethod = substr($methodName, 0, -5); - if (!method_exists($this, $realMethod)) { - throw $e($realMethod); - } - - $promise = new Promise( - function () use (&$promise, $realMethod, $args) { - $value = call_user_func_array([$this, $realMethod], $args); - $promise->resolve($value); - } - ); - - return $promise; - } - - throw $e($methodName); - } -} |
