public function getBatches($size = null) { $items = $this->results; $mapFn = $this->toBatchFn; if ($size) { $items = \Aws\partition(\Aws\flatmap($items, $mapFn), $size); $mapFn = function ($resources) { return new Batch($this->client, $this->type, $resources); }; } return \Aws\map($items, $mapFn); }
public function makeCollection($name, array $args, Resource $parent) { if (isset($args[0]) && is_array($args[0])) { $args = $args[0]; } // Get the information on how to process the collection. $info = $this->model->search('collection', $parent->getType(), $name); // Create a paginator or an iterator that yields a single command's result. $command = $this->prepareCommand($info['request'], $parent, $args); if ($this->apiClient->getApi()->hasPaginator($command->getName())) { $paginator = $this->apiClient->getPaginator($command->getName(), $command->toArray()); } else { $paginator = \Aws\map([$command], function (Command $command) { return $this->apiClient->execute($command); }); } // Create a new from the paginator, including a lambda that coverts // results to batches by using info from the resources model. return new Collection($this, $parent->getType(), $paginator, function (Result $result) use($info, $parent, $command) { $ids = $this->createIdentityForRelatedResource($info['resource']['identifiers'], function (array $param) use($parent, $command, $result) { return $this->resolveValue($param, $parent, $command, $result); }); return $ids === null ? new Batch($this, $info['resource']['type'], []) : $this->createResources($info['resource'], $result, $ids); }); }