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(); } 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); diff --git a/src/Common/Service/Builder.php b/src/Common/Service/Builder.php index 6a43bca..1791231 100644 --- a/src/Common/Service/Builder.php +++ b/src/Common/Service/Builder.php @@ -36,9 +36,10 @@ class Builder private $defaults = ['urlType' => 'publicURL']; /** - * @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 */ public function __construct(array $globalOptions = [], $rootNamespace = 'OpenCloud') { @@ -138,10 +139,16 @@ private function getStack(callable $authHandler, Token $token = null): HandlerSt private function httpClient(string $baseUrl, HandlerStack $stack): ClientInterface { - return new Client([ + $clientOptions = [ 'base_uri' => Utils::normalizeUrl($baseUrl), 'handler' => $stack, - ]); + ]; + + if (isset($this->globalOptions['requestOptions'])) { + $clientOptions = array_merge($this->globalOptions['requestOptions'], $clientOptions); + } + + return new Client($clientOptions); } private function mergeOptions(array $serviceOptions): array