private function createUploadPromise() { // Creates an iterator that yields promises for either upload or // multipart upload operations for each file in the source directory. $files = Aws\recursive_dir_iterator($this->source['path']); // Filter out directories. $files = \Aws\filter($files, function ($file) { return !is_dir($file); }); // Map each file into a promise that performs the actual transfer. $files = \Aws\map($files, function ($file) { return filesize($file) >= $this->mupThreshold ? $this->uploadMultipart($file) : $this->upload($file); }); // Create an EachPromise, that will concurrently handle the upload // operations' yielded promises from the iterator. return Promise\each_limit_all($files, $this->concurrency); }
/** @return Iterator */ private function getUploadsIterator() { if (is_string($this->source)) { return Aws\filter(Aws\recursive_dir_iterator($this->sourceMetadata['path']), function ($file) { return !is_dir($file); }); } return $this->source; }