From 72029ec64b144dc394a3f7ad34324dfcab01002c Mon Sep 17 00:00:00 2001 From: Ha Phan Date: Thu, 28 Apr 2016 14:01:14 +0800 Subject: [PATCH 1/4] Skip parsing docblock if null --- src/Common/Resource/AbstractResource.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Common/Resource/AbstractResource.php b/src/Common/Resource/AbstractResource.php index 892587d..ec119ef 100644 --- a/src/Common/Resource/AbstractResource.php +++ b/src/Common/Resource/AbstractResource.php @@ -82,7 +82,9 @@ public function populateFromArray(array $array): self private function parseDocBlockValue(string $type, $val) { - if (strpos($type, '[]') === 0 && is_array($val)) { + if (is_null($val)) { + return $val; + } elseif (strpos($type, '[]') === 0 && is_array($val)) { $array = []; foreach ($val as $subVal) { $array[] = $this->model($this->normalizeModelClass(substr($type, 2)), $subVal); From a6d9e591c04107986ade92a9b23de0a9230d9ce5 Mon Sep 17 00:00:00 2001 From: Ha Phan Date: Tue, 21 Jun 2016 00:34:40 +0800 Subject: [PATCH 2/4] Default request options for guzzle client --- src/Common/Service/Builder.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Common/Service/Builder.php b/src/Common/Service/Builder.php index 6a43bca..edb217e 100644 --- a/src/Common/Service/Builder.php +++ b/src/Common/Service/Builder.php @@ -35,15 +35,21 @@ class Builder */ private $defaults = ['urlType' => 'publicURL']; + /** @var array */ + private $requestOptions; + /** - * @param array $globalOptions Options that will be applied to every service created by this builder. - * Eventually they will be merged (and if necessary overridden) by the - * service-specific options passed in. + * @param array $globalOptions Options that will be applied to every service created by this builder. + * Eventually they will be merged (and if necessary overridden) by the + * service-specific options passed in. + * @param string $rootNamespace API classes' root namespace + * @param array $requestOptions Guzzle client default request option */ - public function __construct(array $globalOptions = [], $rootNamespace = 'OpenCloud') + public function __construct(array $globalOptions = [], $rootNamespace = 'OpenCloud', $requestOptions = []) { $this->globalOptions = $globalOptions; $this->rootNamespace = $rootNamespace; + $this->requestOptions = $requestOptions; } private function getClasses($namespace) @@ -138,10 +144,12 @@ private function getStack(callable $authHandler, Token $token = null): HandlerSt private function httpClient(string $baseUrl, HandlerStack $stack): ClientInterface { - return new Client([ + $options = array_merge($this->requestOptions, [ 'base_uri' => Utils::normalizeUrl($baseUrl), 'handler' => $stack, ]); + + return new Client($options); } private function mergeOptions(array $serviceOptions): array From 98c88082d5ea747c814c7aaffa56d6e209eb9368 Mon Sep 17 00:00:00 2001 From: Ha Phan Date: Wed, 22 Jun 2016 16:17:53 +0800 Subject: [PATCH 3/4] Fix bug: body is omitted when memory_limit = -1 --- src/Common/Error/Builder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Common/Error/Builder.php b/src/Common/Error/Builder.php index a7033f2..7a50d2c 100644 --- a/src/Common/Error/Builder.php +++ b/src/Common/Error/Builder.php @@ -97,7 +97,7 @@ public function str(MessageInterface $message): string $msg .= "\r\n{$name}: " . implode(', ', $values); } - if ($message->getBody()->getSize() < ini_get('memory_limit')) { + if (ini_get('memory_limit') < 0 || $message->getBody()->getSize() < ini_get('memory_limit')) { $msg .= "\r\n\r\n" . $message->getBody(); } From 14cf2f570b742686f18f2beb3eb00e471b25e897 Mon Sep 17 00:00:00 2001 From: Ha Phan Date: Wed, 22 Jun 2016 14:46:23 +0800 Subject: [PATCH 4/4] Guzzle request options --- src/Common/Service/Builder.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/Common/Service/Builder.php b/src/Common/Service/Builder.php index edb217e..1791231 100644 --- a/src/Common/Service/Builder.php +++ b/src/Common/Service/Builder.php @@ -35,21 +35,16 @@ class Builder */ private $defaults = ['urlType' => 'publicURL']; - /** @var array */ - private $requestOptions; - /** * @param array $globalOptions Options that will be applied to every service created by this builder. * Eventually they will be merged (and if necessary overridden) by the * service-specific options passed in. * @param string $rootNamespace API classes' root namespace - * @param array $requestOptions Guzzle client default request option */ - public function __construct(array $globalOptions = [], $rootNamespace = 'OpenCloud', $requestOptions = []) + public function __construct(array $globalOptions = [], $rootNamespace = 'OpenCloud') { $this->globalOptions = $globalOptions; $this->rootNamespace = $rootNamespace; - $this->requestOptions = $requestOptions; } private function getClasses($namespace) @@ -144,12 +139,16 @@ private function getStack(callable $authHandler, Token $token = null): HandlerSt private function httpClient(string $baseUrl, HandlerStack $stack): ClientInterface { - $options = array_merge($this->requestOptions, [ + $clientOptions = [ 'base_uri' => Utils::normalizeUrl($baseUrl), 'handler' => $stack, - ]); + ]; + + if (isset($this->globalOptions['requestOptions'])) { + $clientOptions = array_merge($this->globalOptions['requestOptions'], $clientOptions); + } - return new Client($options); + return new Client($clientOptions); } private function mergeOptions(array $serviceOptions): array