summaryrefslogtreecommitdiff
path: root/server/vendor/php-opencloud/common/src/Common/Resource/Iterator.php
diff options
context:
space:
mode:
authorLoic GUEGAN <loic@Manzerbredes.home>2016-04-16 19:10:27 +0200
committerLoic GUEGAN <loic@Manzerbredes.home>2016-04-16 19:10:27 +0200
commita3ff4d243e2ac37d4516ae56ff86985eadc00eb8 (patch)
tree32e71c42855cc46d95d9c6b74ad2c145eb9ec7eb /server/vendor/php-opencloud/common/src/Common/Resource/Iterator.php
parent396c90f921c30de2d15d2ce52d5d1beabf8eb52d (diff)
parent31d2d0c158ad4daa3dde7a905f3c2e312c194f2e (diff)
Test
Diffstat (limited to 'server/vendor/php-opencloud/common/src/Common/Resource/Iterator.php')
-rwxr-xr-xserver/vendor/php-opencloud/common/src/Common/Resource/Iterator.php97
1 files changed, 0 insertions, 97 deletions
diff --git a/server/vendor/php-opencloud/common/src/Common/Resource/Iterator.php b/server/vendor/php-opencloud/common/src/Common/Resource/Iterator.php
deleted file mode 100755
index 05507f0..0000000
--- a/server/vendor/php-opencloud/common/src/Common/Resource/Iterator.php
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php declare(strict_types=1);
-
-namespace OpenCloud\Common\Resource;
-
-use OpenCloud\Common\Transport\Utils;
-
-class Iterator
-{
- private $requestFn;
- private $resourceFn;
- private $limit;
- private $count;
- private $resourcesKey;
- private $markerKey;
- private $mapFn;
- private $currentMarker;
-
- public function __construct(array $options, callable $requestFn, callable $resourceFn)
- {
- $this->limit = isset($options['limit']) ? $options['limit'] : false;
- $this->count = 0;
-
- if (isset($options['resourcesKey'])) {
- $this->resourcesKey = $options['resourcesKey'];
- }
-
- if (isset($options['markerKey'])) {
- $this->markerKey = $options['markerKey'];
- }
-
- if (isset($options['mapFn']) && is_callable($options['mapFn'])) {
- $this->mapFn = $options['mapFn'];
- }
-
- $this->requestFn = $requestFn;
- $this->resourceFn = $resourceFn;
- }
-
- private function fetchResources()
- {
- if ($this->shouldNotSendAnotherRequest()) {
- return false;
- }
-
- $response = call_user_func($this->requestFn, $this->currentMarker);
-
- $json = Utils::flattenJson(Utils::jsonDecode($response), $this->resourcesKey);
-
- if ($response->getStatusCode() === 204 || empty($json)) {
- return false;
- }
-
- return $json;
- }
-
- private function assembleResource(array $data)
- {
- $resource = call_user_func($this->resourceFn, $data);
-
- // Invoke user-provided fn if provided
- if ($this->mapFn) {
- call_user_func_array($this->mapFn, [&$resource]);
- }
-
- // Update marker if operation supports it
- if ($this->markerKey) {
- $this->currentMarker = $resource->{$this->markerKey};
- }
-
- return $resource;
- }
-
- private function totalReached()
- {
- return $this->limit && $this->count >= $this->limit;
- }
-
- private function shouldNotSendAnotherRequest()
- {
- return $this->totalReached() || ($this->count > 0 && !$this->markerKey);
- }
-
- public function __invoke()
- {
- while ($resources = $this->fetchResources()) {
- foreach ($resources as $resourceData) {
- if ($this->totalReached()) {
- break;
- }
-
- $this->count++;
-
- yield $this->assembleResource($resourceData);
- }
- }
- }
-}