You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.6 KiB
125 lines
3.6 KiB
<?php
|
|
|
|
namespace AsyncAws\S3\ValueObject;
|
|
|
|
use AsyncAws\S3\Enum\ChecksumAlgorithm;
|
|
use AsyncAws\S3\Enum\ObjectStorageClass;
|
|
|
|
/**
|
|
* An object consists of data and its descriptive metadata.
|
|
*/
|
|
final class AwsObject
|
|
{
|
|
/**
|
|
* The name that you assign to an object. You use the object key to retrieve the object.
|
|
*/
|
|
private $key;
|
|
|
|
/**
|
|
* Creation date of the object.
|
|
*/
|
|
private $lastModified;
|
|
|
|
/**
|
|
* The entity tag is a hash of the object. The ETag reflects changes only to the contents of an object, not its
|
|
* metadata. The ETag may or may not be an MD5 digest of the object data. Whether or not it is depends on how the object
|
|
* was created and how it is encrypted as described below:.
|
|
*
|
|
* - Objects created by the PUT Object, POST Object, or Copy operation, or through the Amazon Web Services Management
|
|
* Console, and are encrypted by SSE-S3 or plaintext, have ETags that are an MD5 digest of their object data.
|
|
* - Objects created by the PUT Object, POST Object, or Copy operation, or through the Amazon Web Services Management
|
|
* Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5 digest of their object data.
|
|
* - If an object is created by either the Multipart Upload or Part Copy operation, the ETag is not an MD5 digest,
|
|
* regardless of the method of encryption. If an object is larger than 16 MB, the Amazon Web Services Management
|
|
* Console will upload or copy that object as a Multipart Upload, and therefore the ETag will not be an MD5 digest.
|
|
*/
|
|
private $etag;
|
|
|
|
/**
|
|
* The algorithm that was used to create a checksum of the object.
|
|
*/
|
|
private $checksumAlgorithm;
|
|
|
|
/**
|
|
* Size in bytes of the object.
|
|
*/
|
|
private $size;
|
|
|
|
/**
|
|
* The class of storage used to store the object.
|
|
*/
|
|
private $storageClass;
|
|
|
|
/**
|
|
* The owner of the object.
|
|
*/
|
|
private $owner;
|
|
|
|
/**
|
|
* @param array{
|
|
* Key?: null|string,
|
|
* LastModified?: null|\DateTimeImmutable,
|
|
* ETag?: null|string,
|
|
* ChecksumAlgorithm?: null|list<ChecksumAlgorithm::*>,
|
|
* Size?: null|string,
|
|
* StorageClass?: null|ObjectStorageClass::*,
|
|
* Owner?: null|Owner|array,
|
|
* } $input
|
|
*/
|
|
public function __construct(array $input)
|
|
{
|
|
$this->key = $input['Key'] ?? null;
|
|
$this->lastModified = $input['LastModified'] ?? null;
|
|
$this->etag = $input['ETag'] ?? null;
|
|
$this->checksumAlgorithm = $input['ChecksumAlgorithm'] ?? null;
|
|
$this->size = $input['Size'] ?? null;
|
|
$this->storageClass = $input['StorageClass'] ?? null;
|
|
$this->owner = isset($input['Owner']) ? Owner::create($input['Owner']) : null;
|
|
}
|
|
|
|
public static function create($input): self
|
|
{
|
|
return $input instanceof self ? $input : new self($input);
|
|
}
|
|
|
|
/**
|
|
* @return list<ChecksumAlgorithm::*>
|
|
*/
|
|
public function getChecksumAlgorithm(): array
|
|
{
|
|
return $this->checksumAlgorithm ?? [];
|
|
}
|
|
|
|
public function getEtag(): ?string
|
|
{
|
|
return $this->etag;
|
|
}
|
|
|
|
public function getKey(): ?string
|
|
{
|
|
return $this->key;
|
|
}
|
|
|
|
public function getLastModified(): ?\DateTimeImmutable
|
|
{
|
|
return $this->lastModified;
|
|
}
|
|
|
|
public function getOwner(): ?Owner
|
|
{
|
|
return $this->owner;
|
|
}
|
|
|
|
public function getSize(): ?string
|
|
{
|
|
return $this->size;
|
|
}
|
|
|
|
/**
|
|
* @return ObjectStorageClass::*|null
|
|
*/
|
|
public function getStorageClass(): ?string
|
|
{
|
|
return $this->storageClass;
|
|
}
|
|
}
|
|
|