diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/S3/Exception/S3MultipartUploadException.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/S3/Exception/S3MultipartUploadException.php | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/S3/Exception/S3MultipartUploadException.php b/vendor/aws/aws-sdk-php/src/S3/Exception/S3MultipartUploadException.php new file mode 100644 index 0000000..957e472 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/S3/Exception/S3MultipartUploadException.php @@ -0,0 +1,84 @@ +<?php +namespace Aws\S3\Exception; + +use Aws\CommandInterface; +use Aws\Exception\AwsException; +use Aws\Multipart\UploadState; + +class S3MultipartUploadException extends \Aws\Exception\MultipartUploadException +{ + /** @var string Bucket of the transfer object */ + private $bucket; + /** @var string Key of the transfer object */ + private $key; + /** @var string Source file name of the transfer object */ + private $filename; + + /** + * @param UploadState $state Upload state at time of the exception. + * @param \Exception|array $prev Exception being thrown. Could be an array of + * AwsExceptions being thrown when uploading parts + * for one object, or an instance of AwsException + * for a specific Multipart error being thrown in + * the MultipartUpload process. + */ + public function __construct(UploadState $state, $prev = null) { + if (is_array($prev) && $error = $prev[key($prev)]) { + $this->collectPathInfo($error->getCommand()); + } elseif ($prev instanceof AwsException) { + $this->collectPathInfo($prev->getCommand()); + } + parent::__construct($state, $prev); + } + + /** + * Get the Bucket information of the transfer object + * + * @return string|null Returns null when 'Bucket' information + * is unavailable. + */ + public function getBucket() + { + return $this->bucket; + } + + /** + * Get the Key information of the transfer object + * + * @return string|null Returns null when 'Key' information + * is unavailable. + */ + public function getKey() + { + return $this->key; + } + + /** + * Get the source file name of the transfer object + * + * @return string|null Returns null when metadata of the stream + * wrapped in 'Body' parameter is unavailable. + */ + public function getSourceFileName() + { + return $this->filename; + } + + /** + * Collect file path information when accessible. (Bucket, Key) + * + * @param CommandInterface $cmd + */ + private function collectPathInfo(CommandInterface $cmd) + { + if (empty($this->bucket) && isset($cmd['Bucket'])) { + $this->bucket = $cmd['Bucket']; + } + if (empty($this->key) && isset($cmd['Key'])) { + $this->key = $cmd['Key']; + } + if (empty($this->filename) && isset($cmd['Body'])) { + $this->filename = $cmd['Body']->getMetadata('uri'); + } + } +} |