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.
131 lines
3.3 KiB
131 lines
3.3 KiB
5 months ago
|
<?php
|
||
|
|
||
|
namespace AsyncAws\S3\ValueObject;
|
||
|
|
||
|
use AsyncAws\Core\Exception\InvalidArgument;
|
||
|
use AsyncAws\S3\Enum\Type;
|
||
|
|
||
|
/**
|
||
|
* Container for the person being granted permissions.
|
||
|
*/
|
||
|
final class Grantee
|
||
|
{
|
||
|
/**
|
||
|
* Screen name of the grantee.
|
||
|
*/
|
||
|
private $displayName;
|
||
|
|
||
|
/**
|
||
|
* Email address of the grantee.
|
||
|
*
|
||
|
* > Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:
|
||
|
* >
|
||
|
* > - US East (N. Virginia)
|
||
|
* > - US West (N. California)
|
||
|
* > - US West (Oregon)
|
||
|
* > - Asia Pacific (Singapore)
|
||
|
* > - Asia Pacific (Sydney)
|
||
|
* > - Asia Pacific (Tokyo)
|
||
|
* > - Europe (Ireland)
|
||
|
* > - South America (São Paulo)
|
||
|
* >
|
||
|
* > For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints [^1] in the Amazon Web
|
||
|
* > Services General Reference.
|
||
|
*
|
||
|
* [^1]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
|
||
|
*/
|
||
|
private $emailAddress;
|
||
|
|
||
|
/**
|
||
|
* The canonical user ID of the grantee.
|
||
|
*/
|
||
|
private $id;
|
||
|
|
||
|
/**
|
||
|
* Type of grantee.
|
||
|
*/
|
||
|
private $type;
|
||
|
|
||
|
/**
|
||
|
* URI of the grantee group.
|
||
|
*/
|
||
|
private $uri;
|
||
|
|
||
|
/**
|
||
|
* @param array{
|
||
|
* DisplayName?: null|string,
|
||
|
* EmailAddress?: null|string,
|
||
|
* ID?: null|string,
|
||
|
* Type: Type::*,
|
||
|
* URI?: null|string,
|
||
|
* } $input
|
||
|
*/
|
||
|
public function __construct(array $input)
|
||
|
{
|
||
|
$this->displayName = $input['DisplayName'] ?? null;
|
||
|
$this->emailAddress = $input['EmailAddress'] ?? null;
|
||
|
$this->id = $input['ID'] ?? null;
|
||
|
$this->type = $input['Type'] ?? null;
|
||
|
$this->uri = $input['URI'] ?? null;
|
||
|
}
|
||
|
|
||
|
public static function create($input): self
|
||
|
{
|
||
|
return $input instanceof self ? $input : new self($input);
|
||
|
}
|
||
|
|
||
|
public function getDisplayName(): ?string
|
||
|
{
|
||
|
return $this->displayName;
|
||
|
}
|
||
|
|
||
|
public function getEmailAddress(): ?string
|
||
|
{
|
||
|
return $this->emailAddress;
|
||
|
}
|
||
|
|
||
|
public function getId(): ?string
|
||
|
{
|
||
|
return $this->id;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return Type::*
|
||
|
*/
|
||
|
public function getType(): string
|
||
|
{
|
||
|
return $this->type;
|
||
|
}
|
||
|
|
||
|
public function getUri(): ?string
|
||
|
{
|
||
|
return $this->uri;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @internal
|
||
|
*/
|
||
|
public function requestBody(\DOMElement $node, \DOMDocument $document): void
|
||
|
{
|
||
|
if (null !== $v = $this->displayName) {
|
||
|
$node->appendChild($document->createElement('DisplayName', $v));
|
||
|
}
|
||
|
if (null !== $v = $this->emailAddress) {
|
||
|
$node->appendChild($document->createElement('EmailAddress', $v));
|
||
|
}
|
||
|
if (null !== $v = $this->id) {
|
||
|
$node->appendChild($document->createElement('ID', $v));
|
||
|
}
|
||
|
if (null === $v = $this->type) {
|
||
|
throw new InvalidArgument(sprintf('Missing parameter "Type" for "%s". The value cannot be null.', __CLASS__));
|
||
|
}
|
||
|
if (!Type::exists($v)) {
|
||
|
throw new InvalidArgument(sprintf('Invalid parameter "xsi:type" for "%s". The value "%s" is not a valid "Type".', __CLASS__, $v));
|
||
|
}
|
||
|
$node->setAttribute('xsi:type', $v);
|
||
|
if (null !== $v = $this->uri) {
|
||
|
$node->appendChild($document->createElement('URI', $v));
|
||
|
}
|
||
|
}
|
||
|
}
|