diff options
| author | EoleDev <EoleDev@outlook.fr> | 2016-04-14 16:24:44 +0200 |
|---|---|---|
| committer | EoleDev <EoleDev@outlook.fr> | 2016-04-14 16:24:44 +0200 |
| commit | 24bb5fefbdf93ce0969b7f56cc46c459ebb82a95 (patch) | |
| tree | 531fc8b774c035040774234efba780a3d4fe9242 /server/vendor/php-opencloud/common/src/Common/Api | |
| parent | 646af6fd4d14c5b5edb1372e5f68ed9bdc35b3d2 (diff) | |
Mise a jour et nettoyage depot
Diffstat (limited to 'server/vendor/php-opencloud/common/src/Common/Api')
7 files changed, 0 insertions, 905 deletions
diff --git a/server/vendor/php-opencloud/common/src/Common/Api/AbstractApi.php b/server/vendor/php-opencloud/common/src/Common/Api/AbstractApi.php deleted file mode 100644 index 09988fd..0000000 --- a/server/vendor/php-opencloud/common/src/Common/Api/AbstractApi.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php declare(strict_types = 1); - -namespace OpenCloud\Common\Api; - -abstract class AbstractApi implements ApiInterface -{ - protected $params; - - protected function isRequired(array $param): array - { - return array_merge($param, ['required' => true]); - } - - protected function notRequired(array $param): array - { - return array_merge($param, ['required' => false]); - } - - protected function query(array $param): array - { - return array_merge($param, ['location' => AbstractParams::QUERY]); - } - - protected function url(array $param): array - { - return array_merge($param, ['location' => AbstractParams::URL]); - } - - public function documented(array $param): array - { - return array_merge($param, ['required' => true]); - } -} diff --git a/server/vendor/php-opencloud/common/src/Common/Api/AbstractParams.php b/server/vendor/php-opencloud/common/src/Common/Api/AbstractParams.php deleted file mode 100644 index b21b3dd..0000000 --- a/server/vendor/php-opencloud/common/src/Common/Api/AbstractParams.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php declare(strict_types=1); - -namespace OpenCloud\Common\Api; - -abstract class AbstractParams -{ - // locations - const QUERY = 'query'; - const HEADER = 'header'; - const URL = 'url'; - const JSON = 'json'; - const RAW = 'raw'; - - // types - const STRING_TYPE = "string"; - const BOOL_TYPE = "boolean"; - const BOOLEAN_TYPE = self::BOOL_TYPE; - const OBJECT_TYPE = "object"; - const ARRAY_TYPE = "array"; - const NULL_TYPE = "NULL"; - const INT_TYPE = 'integer'; - const INTEGER_TYPE = self::INT_TYPE; - - public static function isSupportedLocation(string $val): bool - { - return in_array($val, [self::QUERY, self::HEADER, self::URL, self::JSON, self::RAW]); - } - - public function limit(): array - { - return [ - 'type' => self::INT_TYPE, - 'location' => 'query', - 'description' => <<<DESC -This will limit the total amount of elements returned in a list up to the number specified. For example, specifying a -limit of 10 will return 10 elements, regardless of the actual count. -DESC - ]; - } - - public function marker(): array - { - return [ - 'type' => 'string', - 'location' => 'query', - 'description' => <<<DESC -Specifying a marker will begin the list from the value specified. Elements will have a particular attribute that -identifies them, such as a name or ID. The marker value will search for an element whose identifying attribute matches -the marker value, and begin the list from there. -DESC - ]; - } - - public function id(string $type): array - { - return [ - 'description' => sprintf("The unique ID, or identifier, for the %s", $type), - 'type' => self::STRING_TYPE, - 'location' => self::JSON, - ]; - } - - public function idPath(): array - { - return [ - 'type' => self::STRING_TYPE, - 'location' => self::URL, - 'description' => 'The unique ID of the resource', - ]; - } - - public function name(string $resource): array - { - return [ - 'description' => sprintf("The name of the %s", $resource), - 'type' => self::STRING_TYPE, - 'location' => self::JSON, - ]; - } - - - public function sortDir(): array - { - return [ - 'type' => self::STRING_TYPE, - 'location' => self::QUERY, - 'description' => "Sorts by one or more sets of attribute and sort direction combinations.", - 'enum' => ['asc', 'desc'] - ]; - } - - public function sortKey(): array - { - return [ - 'type' => self::STRING_TYPE, - 'location' => self::QUERY, - 'description' => "Sorts by one or more sets of attribute and sort direction combinations.", - ]; - } -}
\ No newline at end of file diff --git a/server/vendor/php-opencloud/common/src/Common/Api/ApiInterface.php b/server/vendor/php-opencloud/common/src/Common/Api/ApiInterface.php deleted file mode 100644 index d4629dc..0000000 --- a/server/vendor/php-opencloud/common/src/Common/Api/ApiInterface.php +++ /dev/null @@ -1,20 +0,0 @@ -<?php declare(strict_types=1); - -namespace OpenCloud\Common\Api; - -/** - * All classes which implement this interface are a data representation of a remote OpenCloud API. - * They do not execute functionality, but instead return data for each API operation for other parts - * of the SDK to use. Usually, the data is injected into {@see OpenCloud\Common\Api\Operation} objects. - * The operation is then serialized into a {@see GuzzleHttp\Message\Request} and sent to the API. - * - * The reason for storing all the API-specific data is to decouple service information from client - * HTTP functionality. Too often it is mixed all across different layers, leading to duplication and - * no separation of concerns. The choice was made for storage in PHP classes, rather than YAML or JSON - * syntax, due to performance concerns. - * - * @package OpenCloud\Common\Api - */ -interface ApiInterface -{ -} diff --git a/server/vendor/php-opencloud/common/src/Common/Api/Operation.php b/server/vendor/php-opencloud/common/src/Common/Api/Operation.php deleted file mode 100644 index 927af5a..0000000 --- a/server/vendor/php-opencloud/common/src/Common/Api/Operation.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php declare(strict_types=1); - -namespace OpenCloud\Common\Api; - -/** - * This class represents an OpenCloud API operation. It encapsulates most aspects of the REST operation: its HTTP - * method, the URL path, its top-level JSON key, and all of its {@see Parameter} objects. - * - * An operation not only represents a remote operation, but it also provides the mechanism for executing it - * over HTTP. To do this, it uses a {@see ClientInterface} that allows a {@see GuzzleHttp\Message\Request} - * to be created from the user values provided. Once this request is assembled, it is then sent to the - * remote API and the response is returned to whoever first invoked the Operation class. - * - * @package OpenCloud\Common\Api - */ -class Operation -{ - /** @var string The HTTP method */ - private $method; - - /** @var string The URL path */ - private $path; - - /** @var string The top-level JSON key */ - private $jsonKey; - - /** @var []Parameter The parameters of this operation */ - private $params; - - /** - * @param array $definition The data definition (in array form) that will populate this - * operation. Usually this is retrieved from an {@see ApiInterface} - * object method. - */ - public function __construct(array $definition) - { - $this->method = $definition['method']; - $this->path = $definition['path']; - - if (isset($definition['jsonKey'])) { - $this->jsonKey = $definition['jsonKey']; - } - - $this->params = self::toParamArray($definition['params']); - } - - /** - * @return string - */ - public function getPath(): string - { - return $this->path; - } - - /** - * @return string - */ - public function getMethod(): string - { - return $this->method; - } - - /** - * Indicates whether this operation supports a parameter. - * - * @param $key The name of a parameter - * - * @return bool - */ - public function hasParam(string $key): bool - { - return isset($this->params[$key]); - } - - /** - * @param $name - * - * @return Parameter - */ - public function getParam(string $name) - { - return isset($this->params[$name]) ? $this->params[$name] : null; - } - - /** - * @return string - */ - public function getJsonKey(): string - { - return $this->jsonKey ?: ''; - } - - /** - * A convenience method that will take a generic array of data and convert it into an array of - * {@see Parameter} objects. - * - * @param array $data A generic data array - * - * @return array - */ - public static function toParamArray(array $data): array - { - $params = []; - - foreach ($data as $name => $param) { - $params[$name] = new Parameter($param + ['name' => $name]); - } - - return $params; - } - - /** - * This method will validate all of the user-provided values and throw an exception if any - * failures are detected. This is useful for basic sanity-checking before a request is - * serialized and sent to the API. - * - * @param array $userValues The user-defined values - * - * @return bool TRUE if validation passes - * @throws \Exception If validate fails - */ - public function validate(array $userValues): bool - { - foreach ($this->params as $paramName => $param) { - if (array_key_exists($paramName, $userValues)) { - $param->validate($userValues[$paramName]); - } elseif ($param->isRequired()) { - throw new \Exception(sprintf('"%s" is a required option, but it was not provided', $paramName)); - } - } - - return true; - } -}
\ No newline at end of file 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 5698779..0000000 --- a/server/vendor/php-opencloud/common/src/Common/Api/Operator.php +++ /dev/null @@ -1,175 +0,0 @@ -<?php declare(strict_types=1); - -namespace OpenCloud\Common\Api; - -use GuzzleHttp\Promise\PromiseInterface; -use GuzzleHttp\Psr7\Uri; -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): Operation - { - return new Operation($definition); - } - - protected function sendRequest(Operation $operation, array $userValues = [], bool $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 = []): ResponseInterface - { - return $this->sendRequest($this->getOperation($definition), $userValues); - } - - /** - * {@inheritDoc} - */ - public function executeAsync(array $definition, array $userValues = []): PromiseInterface - { - return $this->sendRequest($this->getOperation($definition), $userValues, true); - } - - /** - * {@inheritDoc} - */ - public function model(string $class, $data = null): ResourceInterface - { - $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(): self - { - return new static($this->client, $this->api); - } - - /** - * @return \GuzzleHttp\Psr7\Uri:null - */ - 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); - } -} diff --git a/server/vendor/php-opencloud/common/src/Common/Api/OperatorInterface.php b/server/vendor/php-opencloud/common/src/Common/Api/OperatorInterface.php deleted file mode 100644 index 168518b..0000000 --- a/server/vendor/php-opencloud/common/src/Common/Api/OperatorInterface.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php declare(strict_types=1); - -namespace OpenCloud\Common\Api; - -use GuzzleHttp\ClientInterface; -use GuzzleHttp\Promise\PromiseInterface; -use OpenCloud\Common\Resource\ResourceInterface; -use Psr\Http\Message\ResponseInterface; - -/** - * An operator is any resource or service that can invoke and send REST operations. In other words, it - * is any class that can send requests and receive responses with a HTTP client. To do this - * it needs two things: a {@see ClientInterface} for handling HTTP transactions and an {@see ApiInterface} - * for handling how operations are created. - * - * @package OpenCloud\Common\Api - */ -interface OperatorInterface -{ - /** - * @param ClientInterface $client The HTTP client responsible for handling HTTP transactions - * @param ApiInterface $api The data API class that dictates how REST operations are structured - */ - public function __construct(ClientInterface $client, ApiInterface $api); - - /** - * A convenience method that assembles an operation and sends it to the remote API - * - * @param array $definition The data that dictates how the operation works - * @param array $userValues The user-defined values that populate the request - * - * @return \Psr\Http\Message\ResponseInterface - */ - public function execute(array $definition, array $userValues = []): ResponseInterface; - - /** - * A convenience method that assembles an operation and asynchronously sends it to the remote API - * - * @param array $definition The data that dictates how the operation works - * @param array $userValues The user-defined values that populate the request - * - * @return \GuzzleHttp\Promise\PromiseInterface - */ - public function executeAsync(array $definition, array $userValues = []): PromiseInterface; - - /** - * @param string $name The name of the model class. - * @param mixed $data Either a {@see ResponseInterface} or data array that will populate the newly - * created model class. - * - * @return \OpenCloud\Common\Resource\ResourceInterface - */ - public function model(string $name, $data = null): ResourceInterface; -} diff --git a/server/vendor/php-opencloud/common/src/Common/Api/Parameter.php b/server/vendor/php-opencloud/common/src/Common/Api/Parameter.php deleted file mode 100644 index f1ec7c7..0000000 --- a/server/vendor/php-opencloud/common/src/Common/Api/Parameter.php +++ /dev/null @@ -1,389 +0,0 @@ -<?php declare(strict_types=1); - -namespace OpenCloud\Common\Api; - -use OpenCloud\Common\HydratorStrategyTrait; - -/** - * Represents an individual request parameter in a RESTful operation. A parameter can take on many forms: - * in a URL path, in a URL query, in a JSON body, and in a HTTP header. It is worth documenting brifly each - * variety of parameter: - * - * * Header parameters are those which populate a HTTP header in a request. Header parameters can have - * aliases; for example, a user-facing name of "Foo" can be sent over the wire as "X-Foo_Bar", as defined - * by ``sentAs``. Prefixes can also be used. - * - * * Query parameters are those which populate a URL query parameter. The value is therefore usually - * confined to a string. - * - * * JSON parameters are those which populate a JSON request body. These are the most complex variety - * of Parameter, since there are so many different ways a JSON document can be constructed. The SDK - * supports deep-nesting according to a XPath syntax; for more information, see {@see \OpenCloud\Common\JsonPath}. - * Nested object and array properties are also supported since JSON is a recursive data type. What - * this means is that a Parameter can have an assortment of child Parameters, one for each object - * property or array element. - * - * * Raw parameters are those which populate a non-JSON request body. This is typically used for - * uploading payloads (such as Swift object data) to a remote API. - * - * * Path parameters are those which populate a URL path. They are serialized according to URL - * placeholders. - * - * @package OpenCloud\Common\Api - */ -class Parameter -{ - use HydratorStrategyTrait; - - const DEFAULT_LOCATION = 'json'; - - /** - * The human-friendly name of the parameter. This is what the user will input. - * - * @var string - */ - private $name = ''; - - /** - * The alias for this parameter. Although the user will always interact with the human-friendly $name property, - * the $sentAs is what's used over the wire. - * - * @var string - */ - private $sentAs = ''; - - /** - * For array parameters (for example, an array of security group names when creating a server), each array element - * will need to adhere to a common schema. For the aforementioned example, each element will need to be a string. - * For more complicated parameters, you might be validated an array of complicated objects. - * - * @var Parameter - */ - private $itemSchema; - - /** - * For object parameters, each property will need to adhere to a specific schema. For every property in the - * object, it has its own schema - meaning that this property is a hash of name/schema pairs. - * - * The *only* exception to this rule is for metadata parameters, which are arbitrary key/value pairs. Since it does - * not make sense to have a schema for each metadata key, a common schema is use for every one. So instead of this - * property being a hash of schemas, it is a single Parameter object instead. This single Parameter schema will - * then be applied to each metadata key provided. - * - * @var []Parameter|Parameter - */ - private $properties; - - /** - * The value's PHP type which this parameter represents; either "string", "bool", "object", "array", "NULL". - * - * @var string - */ - private $type = ''; - - /** - * Indicates whether this parameter requires a value from the user. - * - * @var bool - */ - private $required; - - /** - * The location in the HTTP request where this parameter will populate; either "header", "url", "query", "raw" or - * "json". - * - * @var string - */ - private $location = ''; - - /** - * Relevant to "json" location parameters only. This property allows for deep nesting through the use of - * {@see OpenCloud\Common\JsonPath}. - * - * @var string - */ - private $path = ''; - - /** - * Allows for the prefixing of parameter names. - * - * @var string - */ - private $prefix = ''; - - /** - * The enum values for which this param is restricted. - * - * @var array - */ - private $enum; - - /** - * @param array $data - */ - public function __construct(array $data) - { - $this->hydrate($data); - - $this->required = (bool)$this->required; - - $this->stockLocation($data); - $this->stockItemSchema($data); - $this->stockProperties($data); - } - - private function stockLocation(array $data) - { - $this->location = isset($data['location']) ? $data['location'] : self::DEFAULT_LOCATION; - - if (!AbstractParams::isSupportedLocation($this->location)) { - throw new \RuntimeException(sprintf("%s is not a permitted location", $this->location)); - } - } - - private function stockItemSchema(array $data) - { - if (isset($data['items'])) { - $this->itemSchema = new Parameter($data['items']); - } - } - - private function stockProperties(array $data) - { - if (isset($data['properties'])) { - if ($this->name && stripos($this->name, 'metadata') !== false) { - $this->properties = new Parameter($data['properties']); - } else { - foreach ($data['properties'] as $name => $property) { - $this->properties[$name] = new Parameter($property + ['name' => $name]); - } - } - } - } - - /** - * Retrieve the name that will be used over the wire. - * - * @return string - */ - public function getName(): string - { - return $this->sentAs ?: $this->name; - } - - /** - * Indicates whether the user must provide a value for this parameter. - * - * @return bool - */ - public function isRequired(): bool - { - return $this->required === true; - } - - /** - * Validates a given user value and checks whether it passes basic sanity checking, such as types. - * - * @param $userValues The value provided by the user - * - * @return bool TRUE if the validation passes - * @throws \Exception If validation fails - */ - public function validate($userValues): bool - { - $this->validateEnums($userValues); - $this->validateType($userValues); - - if ($this->isArray()) { - $this->validateArray($userValues); - } elseif ($this->isObject()) { - $this->validateObject($userValues); - } - - return true; - } - - private function validateEnums($userValues) - { - if (!empty($this->enum) && $this->type == 'string' && !in_array($userValues, $this->enum)) { - throw new \Exception(sprintf( - 'The only permitted values are %s. You provided %s', implode(', ', $this->enum), print_r($userValues, true) - )); - } - } - - private function validateType($userValues) - { - if (!$this->hasCorrectType($userValues)) { - throw new \Exception(sprintf( - 'The key provided "%s" has the wrong value type. You provided %s (%s) but was expecting %s', - $this->name, print_r($userValues, true), gettype($userValues), $this->type - )); - } - } - - private function validateArray($userValues) - { - foreach ($userValues as $userValue) { - $this->itemSchema->validate($userValue); - } - } - - private function validateObject($userValues) - { - foreach ($userValues as $key => $userValue) { - $property = $this->getNestedProperty($key); - $property->validate($userValue); - } - } - - /** - * Internal method which retrieves a nested property for object parameters. - * - * @param $key The name of the child parameter - * - * @returns Parameter - * @throws \Exception - */ - private function getNestedProperty($key): Parameter - { - if ($this->name && stripos($this->name, 'metadata') !== false && $this->properties instanceof Parameter) { - return $this->properties; - } elseif (isset($this->properties[$key])) { - return $this->properties[$key]; - } else { - throw new \Exception(sprintf('The key provided "%s" is not defined', $key)); - } - } - - /** - * Internal method which indicates whether the user value is of the same type as the one expected - * by this parameter. - * - * @param $userValue The value being checked - * - * @return bool - */ - private function hasCorrectType($userValue): bool - { - // Helper fn to see whether an array is associative (i.e. a JSON object) - $isAssociative = function ($value) { - return is_array($value) && array_keys($value) !== range(0, count($value) - 1); - }; - - // For params defined as objects, we'll let the user get away with - // passing in an associative array - since it's effectively a hash - if ($this->type == 'object' && $isAssociative($userValue)) { - return true; - } - - if (class_exists($this->type) || interface_exists($this->type)) { - return is_a($userValue, $this->type); - } - - if (!$this->type) { - return true; - } - - return gettype($userValue) == $this->type; - } - - /** - * Indicates whether this parameter represents an array type - * - * @return bool - */ - public function isArray(): bool - { - return $this->type == 'array' && $this->itemSchema instanceof Parameter; - } - - /** - * Indicates whether this parameter represents an object type - * - * @return bool - */ - public function isObject(): bool - { - return $this->type == 'object' && !empty($this->properties); - } - - public function getLocation(): string - { - return $this->location; - } - - /** - * Verifies whether the given location matches the parameter's location. - * - * @param $value - * - * @return bool - */ - public function hasLocation($value): bool - { - return $this->location == $value; - } - - /** - * Retrieves the parameter's path. - * - * @return string|null - */ - public function getPath(): string - { - return $this->path; - } - - /** - * Retrieves the common schema that an array parameter applies to all its child elements. - * - * @return Parameter|null - */ - public function getItemSchema() - { - return $this->itemSchema; - } - - /** - * Sets the name of the parameter to a new value - * - * @param string $name - */ - public function setName(string $name) - { - $this->name = $name; - } - - /** - * Retrieves the child parameter for an object parameter. - * - * @param string $name The name of the child property - * - * @return null|Parameter - */ - public function getProperty(string $name) - { - if ($this->properties instanceof Parameter) { - $this->properties->setName($name); - return $this->properties; - } - - return isset($this->properties[$name]) ? $this->properties[$name] : null; - } - - /** - * Retrieves the prefix for a parameter, if any. - * - * @return string|null - */ - public function getPrefix(): string - { - return $this->prefix; - } - - public function getPrefixedName(): string - { - return $this->prefix . $this->getName(); - } -} |
