updated-packages
This commit is contained in:
66
vendor/aws/aws-sdk-php/src/Arn/AccessPointArn.php
vendored
Normal file
66
vendor/aws/aws-sdk-php/src/Arn/AccessPointArn.php
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
namespace Aws\Arn;
|
||||
|
||||
use Aws\Arn\Exception\InvalidArnException;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class AccessPointArn extends Arn implements AccessPointArnInterface
|
||||
{
|
||||
use ResourceTypeAndIdTrait;
|
||||
|
||||
/**
|
||||
* AccessPointArn constructor
|
||||
*
|
||||
* @param $data
|
||||
*/
|
||||
public function __construct($data)
|
||||
{
|
||||
parent::__construct($data);
|
||||
static::validate($this->data);
|
||||
}
|
||||
|
||||
public static function parse($string)
|
||||
{
|
||||
$data = parent::parse($string);
|
||||
$data = self::parseResourceTypeAndId($data);
|
||||
$data['accesspoint_name'] = $data['resource_id'];
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function getAccesspointName()
|
||||
{
|
||||
return $this->data['accesspoint_name'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Validation specific to AccessPointArn
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
protected static function validate(array $data)
|
||||
{
|
||||
self::validateRegion($data, 'access point ARN');
|
||||
self::validateAccountId($data, 'access point ARN');
|
||||
|
||||
if ($data['resource_type'] !== 'accesspoint') {
|
||||
throw new InvalidArnException("The 6th component of an access point ARN"
|
||||
. " represents the resource type and must be 'accesspoint'.");
|
||||
}
|
||||
|
||||
if (empty($data['resource_id'])) {
|
||||
throw new InvalidArnException("The 7th component of an access point ARN"
|
||||
. " represents the resource ID and must not be empty.");
|
||||
}
|
||||
if (strpos($data['resource_id'], ':') !== false) {
|
||||
throw new InvalidArnException("The resource ID component of an access"
|
||||
. " point ARN must not contain additional components"
|
||||
. " (delimited by ':').");
|
||||
}
|
||||
if (!self::isValidHostLabel($data['resource_id'])) {
|
||||
throw new InvalidArnException("The resource ID in an access point ARN"
|
||||
. " must be a valid host label value.");
|
||||
}
|
||||
}
|
||||
}
|
||||
10
vendor/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php
vendored
Normal file
10
vendor/aws/aws-sdk-php/src/Arn/AccessPointArnInterface.php
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
namespace Aws\Arn;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
interface AccessPointArnInterface extends ArnInterface
|
||||
{
|
||||
public function getAccesspointName();
|
||||
}
|
||||
188
vendor/aws/aws-sdk-php/src/Arn/Arn.php
vendored
Normal file
188
vendor/aws/aws-sdk-php/src/Arn/Arn.php
vendored
Normal file
@@ -0,0 +1,188 @@
|
||||
<?php
|
||||
namespace Aws\Arn;
|
||||
|
||||
use Aws\Arn\Exception\InvalidArnException;
|
||||
|
||||
/**
|
||||
* Amazon Resource Names (ARNs) uniquely identify AWS resources. The Arn class
|
||||
* parses and stores a generic ARN object representation that can apply to any
|
||||
* service resource.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class Arn implements ArnInterface
|
||||
{
|
||||
protected $data;
|
||||
protected $string;
|
||||
|
||||
public static function parse($string)
|
||||
{
|
||||
$data = [
|
||||
'arn' => null,
|
||||
'partition' => null,
|
||||
'service' => null,
|
||||
'region' => null,
|
||||
'account_id' => null,
|
||||
'resource' => null,
|
||||
];
|
||||
|
||||
$length = strlen($string);
|
||||
$lastDelim = 0;
|
||||
$numComponents = 0;
|
||||
for ($i = 0; $i < $length; $i++) {
|
||||
|
||||
if (($numComponents < 5 && $string[$i] === ':')) {
|
||||
// Split components between delimiters
|
||||
$data[key($data)] = substr($string, $lastDelim, $i - $lastDelim);
|
||||
|
||||
// Do not include delimiter character itself
|
||||
$lastDelim = $i + 1;
|
||||
next($data);
|
||||
$numComponents++;
|
||||
}
|
||||
|
||||
if ($i === $length - 1) {
|
||||
// Put the remainder in the last component.
|
||||
if (in_array($numComponents, [5])) {
|
||||
$data['resource'] = substr($string, $lastDelim);
|
||||
} else {
|
||||
// If there are < 5 components, put remainder in current
|
||||
// component.
|
||||
$data[key($data)] = substr($string, $lastDelim);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function __construct($data)
|
||||
{
|
||||
if (is_array($data)) {
|
||||
$this->data = $data;
|
||||
} elseif (is_string($data)) {
|
||||
$this->data = static::parse($data);
|
||||
} else {
|
||||
throw new InvalidArnException('Constructor accepts a string or an'
|
||||
. ' array as an argument.');
|
||||
}
|
||||
|
||||
static::validate($this->data);
|
||||
}
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
if (!isset($this->string)) {
|
||||
$components = [
|
||||
$this->getPrefix(),
|
||||
$this->getPartition(),
|
||||
$this->getService(),
|
||||
$this->getRegion(),
|
||||
$this->getAccountId(),
|
||||
$this->getResource(),
|
||||
];
|
||||
|
||||
$this->string = implode(':', $components);
|
||||
}
|
||||
return $this->string;
|
||||
}
|
||||
|
||||
public function getPrefix()
|
||||
{
|
||||
return $this->data['arn'];
|
||||
}
|
||||
|
||||
public function getPartition()
|
||||
{
|
||||
return $this->data['partition'];
|
||||
}
|
||||
|
||||
public function getService()
|
||||
{
|
||||
return $this->data['service'];
|
||||
}
|
||||
|
||||
public function getRegion()
|
||||
{
|
||||
return $this->data['region'];
|
||||
}
|
||||
|
||||
public function getAccountId()
|
||||
{
|
||||
return $this->data['account_id'];
|
||||
}
|
||||
|
||||
public function getResource()
|
||||
{
|
||||
return $this->data['resource'];
|
||||
}
|
||||
|
||||
public function toArray()
|
||||
{
|
||||
return $this->data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Minimally restrictive generic ARN validation
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
protected static function validate(array $data)
|
||||
{
|
||||
if ($data['arn'] !== 'arn') {
|
||||
throw new InvalidArnException("The 1st component of an ARN must be"
|
||||
. " 'arn'.");
|
||||
}
|
||||
|
||||
if (empty($data['partition'])) {
|
||||
throw new InvalidArnException("The 2nd component of an ARN"
|
||||
. " represents the partition and must not be empty.");
|
||||
}
|
||||
|
||||
if (empty($data['service'])) {
|
||||
throw new InvalidArnException("The 3rd component of an ARN"
|
||||
. " represents the service and must not be empty.");
|
||||
}
|
||||
|
||||
if (empty($data['resource'])) {
|
||||
throw new InvalidArnException("The 6th component of an ARN"
|
||||
. " represents the resource information and must not be empty."
|
||||
. " Individual service ARNs may include additional delimiters"
|
||||
. " to further qualify resources.");
|
||||
}
|
||||
}
|
||||
|
||||
protected static function validateAccountId($data, $arnName)
|
||||
{
|
||||
if (!self::isValidHostLabel($data['account_id'])) {
|
||||
throw new InvalidArnException("The 5th component of a {$arnName}"
|
||||
. " is required, represents the account ID, and"
|
||||
. " must be a valid host label.");
|
||||
}
|
||||
}
|
||||
|
||||
protected static function validateRegion($data, $arnName)
|
||||
{
|
||||
if (empty($data['region'])) {
|
||||
throw new InvalidArnException("The 4th component of a {$arnName}"
|
||||
. " represents the region and must not be empty.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates whether a string component is a valid host label
|
||||
*
|
||||
* @param $string
|
||||
* @return bool
|
||||
*/
|
||||
protected static function isValidHostLabel($string)
|
||||
{
|
||||
if (empty($string) || strlen($string) > 63) {
|
||||
return false;
|
||||
}
|
||||
if ($value = preg_match("/^[a-zA-Z0-9-]+$/", $string)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
37
vendor/aws/aws-sdk-php/src/Arn/ArnInterface.php
vendored
Normal file
37
vendor/aws/aws-sdk-php/src/Arn/ArnInterface.php
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
namespace Aws\Arn;
|
||||
|
||||
/**
|
||||
* Amazon Resource Names (ARNs) uniquely identify AWS resources. Classes
|
||||
* implementing ArnInterface parse and store an ARN object representation.
|
||||
*
|
||||
* Valid ARN formats include:
|
||||
*
|
||||
* arn:partition:service:region:account-id:resource-id
|
||||
* arn:partition:service:region:account-id:resource-type/resource-id
|
||||
* arn:partition:service:region:account-id:resource-type:resource-id
|
||||
*
|
||||
* Some components may be omitted, depending on the service and resource type.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
interface ArnInterface
|
||||
{
|
||||
public static function parse($string);
|
||||
|
||||
public function __toString();
|
||||
|
||||
public function getPrefix();
|
||||
|
||||
public function getPartition();
|
||||
|
||||
public function getService();
|
||||
|
||||
public function getRegion();
|
||||
|
||||
public function getAccountId();
|
||||
|
||||
public function getResource();
|
||||
|
||||
public function toArray();
|
||||
}
|
||||
69
vendor/aws/aws-sdk-php/src/Arn/ArnParser.php
vendored
Normal file
69
vendor/aws/aws-sdk-php/src/Arn/ArnParser.php
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
namespace Aws\Arn;
|
||||
|
||||
use Aws\Arn\S3\AccessPointArn as S3AccessPointArn;
|
||||
use Aws\Arn\ObjectLambdaAccessPointArn;
|
||||
use Aws\Arn\S3\MultiRegionAccessPointArn;
|
||||
use Aws\Arn\S3\OutpostsBucketArn;
|
||||
use Aws\Arn\S3\RegionalBucketArn;
|
||||
use Aws\Arn\S3\OutpostsAccessPointArn;
|
||||
|
||||
/**
|
||||
* This class provides functionality to parse ARN strings and return a
|
||||
* corresponding ARN object. ARN-parsing logic may be subject to change in the
|
||||
* future, so this should not be relied upon for external customer usage.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class ArnParser
|
||||
{
|
||||
/**
|
||||
* @param $string
|
||||
* @return bool
|
||||
*/
|
||||
public static function isArn($string)
|
||||
{
|
||||
return $string !== null && strpos($string, 'arn:') === 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a string and returns an instance of ArnInterface. Returns a
|
||||
* specific type of Arn object if it has a specific class representation
|
||||
* or a generic Arn object if not.
|
||||
*
|
||||
* @param $string
|
||||
* @return ArnInterface
|
||||
*/
|
||||
public static function parse($string)
|
||||
{
|
||||
$data = Arn::parse($string);
|
||||
if ($data['service'] === 's3-object-lambda') {
|
||||
return new ObjectLambdaAccessPointArn($string);
|
||||
}
|
||||
$resource = self::explodeResourceComponent($data['resource']);
|
||||
if ($resource[0] === 'outpost') {
|
||||
if (isset($resource[2]) && $resource[2] === 'bucket') {
|
||||
return new OutpostsBucketArn($string);
|
||||
}
|
||||
if (isset($resource[2]) && $resource[2] === 'accesspoint') {
|
||||
return new OutpostsAccessPointArn($string);
|
||||
}
|
||||
}
|
||||
if (empty($data['region'])) {
|
||||
return new MultiRegionAccessPointArn($string);
|
||||
}
|
||||
if ($resource[0] === 'accesspoint') {
|
||||
if ($data['service'] === 's3') {
|
||||
return new S3AccessPointArn($string);
|
||||
}
|
||||
return new AccessPointArn($string);
|
||||
}
|
||||
|
||||
return new Arn($data);
|
||||
}
|
||||
|
||||
private static function explodeResourceComponent($resource)
|
||||
{
|
||||
return preg_split("/[\/:]/", $resource);
|
||||
}
|
||||
}
|
||||
7
vendor/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php
vendored
Normal file
7
vendor/aws/aws-sdk-php/src/Arn/Exception/InvalidArnException.php
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
namespace Aws\Arn\Exception;
|
||||
|
||||
/**
|
||||
* Represents a failed attempt to construct an Arn
|
||||
*/
|
||||
class InvalidArnException extends \RuntimeException {}
|
||||
35
vendor/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php
vendored
Normal file
35
vendor/aws/aws-sdk-php/src/Arn/ObjectLambdaAccessPointArn.php
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
namespace Aws\Arn;
|
||||
|
||||
/**
|
||||
* This class represents an S3 Object bucket ARN, which is in the
|
||||
* following format:
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class ObjectLambdaAccessPointArn extends AccessPointArn
|
||||
{
|
||||
/**
|
||||
* Parses a string into an associative array of components that represent
|
||||
* a ObjectLambdaAccessPointArn
|
||||
*
|
||||
* @param $string
|
||||
* @return array
|
||||
*/
|
||||
public static function parse($string)
|
||||
{
|
||||
$data = parent::parse($string);
|
||||
return parent::parseResourceTypeAndId($data);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
protected static function validate(array $data)
|
||||
{
|
||||
parent::validate($data);
|
||||
self::validateRegion($data, 'S3 Object Lambda ARN');
|
||||
self::validateAccountId($data, 'S3 Object Lambda ARN');
|
||||
}
|
||||
}
|
||||
30
vendor/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php
vendored
Normal file
30
vendor/aws/aws-sdk-php/src/Arn/ResourceTypeAndIdTrait.php
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
namespace Aws\Arn;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
trait ResourceTypeAndIdTrait
|
||||
{
|
||||
public function getResourceType()
|
||||
{
|
||||
return $this->data['resource_type'];
|
||||
}
|
||||
|
||||
public function getResourceId()
|
||||
{
|
||||
return $this->data['resource_id'];
|
||||
}
|
||||
|
||||
protected static function parseResourceTypeAndId(array $data)
|
||||
{
|
||||
$resourceData = preg_split("/[\/:]/", $data['resource'], 2);
|
||||
$data['resource_type'] = isset($resourceData[0])
|
||||
? $resourceData[0]
|
||||
: null;
|
||||
$data['resource_id'] = isset($resourceData[1])
|
||||
? $resourceData[1]
|
||||
: null;
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
27
vendor/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php
vendored
Normal file
27
vendor/aws/aws-sdk-php/src/Arn/S3/AccessPointArn.php
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
namespace Aws\Arn\S3;
|
||||
|
||||
use Aws\Arn\AccessPointArn as BaseAccessPointArn;
|
||||
use Aws\Arn\AccessPointArnInterface;
|
||||
use Aws\Arn\ArnInterface;
|
||||
use Aws\Arn\Exception\InvalidArnException;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class AccessPointArn extends BaseAccessPointArn implements AccessPointArnInterface
|
||||
{
|
||||
/**
|
||||
* Validation specific to AccessPointArn
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public static function validate(array $data)
|
||||
{
|
||||
parent::validate($data);
|
||||
if ($data['service'] !== 's3') {
|
||||
throw new InvalidArnException("The 3rd component of an S3 access"
|
||||
. " point ARN represents the region and must be 's3'.");
|
||||
}
|
||||
}
|
||||
}
|
||||
12
vendor/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php
vendored
Normal file
12
vendor/aws/aws-sdk-php/src/Arn/S3/BucketArnInterface.php
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace Aws\Arn\S3;
|
||||
|
||||
use Aws\Arn\ArnInterface;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
interface BucketArnInterface extends ArnInterface
|
||||
{
|
||||
public function getBucketName();
|
||||
}
|
||||
38
vendor/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php
vendored
Normal file
38
vendor/aws/aws-sdk-php/src/Arn/S3/MultiRegionAccessPointArn.php
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
namespace Aws\Arn\S3;
|
||||
|
||||
use Aws\Arn\Arn;
|
||||
use Aws\Arn\ResourceTypeAndIdTrait;
|
||||
|
||||
/**
|
||||
* This class represents an S3 multi-region bucket ARN, which is in the
|
||||
* following format:
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class MultiRegionAccessPointArn extends AccessPointArn
|
||||
{
|
||||
use ResourceTypeAndIdTrait;
|
||||
|
||||
/**
|
||||
* Parses a string into an associative array of components that represent
|
||||
* a MultiRegionArn
|
||||
*
|
||||
* @param $string
|
||||
* @return array
|
||||
*/
|
||||
public static function parse($string)
|
||||
{
|
||||
return parent::parse($string);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public static function validate(array $data)
|
||||
{
|
||||
Arn::validate($data);
|
||||
}
|
||||
|
||||
}
|
||||
110
vendor/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php
vendored
Normal file
110
vendor/aws/aws-sdk-php/src/Arn/S3/OutpostsAccessPointArn.php
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
namespace Aws\Arn\S3;
|
||||
|
||||
use Aws\Arn\AccessPointArn as BaseAccessPointArn;
|
||||
use Aws\Arn\AccessPointArnInterface;
|
||||
use Aws\Arn\Arn;
|
||||
use Aws\Arn\Exception\InvalidArnException;
|
||||
|
||||
/**
|
||||
* This class represents an S3 Outposts access point ARN, which is in the
|
||||
* following format:
|
||||
*
|
||||
* arn:{partition}:s3-outposts:{region}:{accountId}:outpost:{outpostId}:accesspoint:{accesspointName}
|
||||
*
|
||||
* ':' and '/' can be used interchangeably as delimiters for components after
|
||||
* the account ID.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class OutpostsAccessPointArn extends BaseAccessPointArn implements
|
||||
AccessPointArnInterface,
|
||||
OutpostsArnInterface
|
||||
{
|
||||
public static function parse($string)
|
||||
{
|
||||
$data = parent::parse($string);
|
||||
return self::parseOutpostData($data);
|
||||
}
|
||||
|
||||
public function getOutpostId()
|
||||
{
|
||||
return $this->data['outpost_id'];
|
||||
}
|
||||
|
||||
public function getAccesspointName()
|
||||
{
|
||||
return $this->data['accesspoint_name'];
|
||||
}
|
||||
|
||||
private static function parseOutpostData(array $data)
|
||||
{
|
||||
$resourceData = preg_split("/[\/:]/", $data['resource_id']);
|
||||
|
||||
$data['outpost_id'] = isset($resourceData[0])
|
||||
? $resourceData[0]
|
||||
: null;
|
||||
$data['accesspoint_type'] = isset($resourceData[1])
|
||||
? $resourceData[1]
|
||||
: null;
|
||||
$data['accesspoint_name'] = isset($resourceData[2])
|
||||
? $resourceData[2]
|
||||
: null;
|
||||
if (isset($resourceData[3])) {
|
||||
$data['resource_extra'] = implode(':', array_slice($resourceData, 3));
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validation specific to OutpostsAccessPointArn. Note this uses the base Arn
|
||||
* class validation instead of the direct parent due to it having slightly
|
||||
* differing requirements from its parent.
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public static function validate(array $data)
|
||||
{
|
||||
Arn::validate($data);
|
||||
|
||||
if (($data['service'] !== 's3-outposts')) {
|
||||
throw new InvalidArnException("The 3rd component of an S3 Outposts"
|
||||
. " access point ARN represents the service and must be"
|
||||
. " 's3-outposts'.");
|
||||
}
|
||||
|
||||
self::validateRegion($data, 'S3 Outposts access point ARN');
|
||||
self::validateAccountId($data, 'S3 Outposts access point ARN');
|
||||
|
||||
if (($data['resource_type'] !== 'outpost')) {
|
||||
throw new InvalidArnException("The 6th component of an S3 Outposts"
|
||||
. " access point ARN represents the resource type and must be"
|
||||
. " 'outpost'.");
|
||||
}
|
||||
|
||||
if (!self::isValidHostLabel($data['outpost_id'])) {
|
||||
throw new InvalidArnException("The 7th component of an S3 Outposts"
|
||||
. " access point ARN is required, represents the outpost ID, and"
|
||||
. " must be a valid host label.");
|
||||
}
|
||||
|
||||
if ($data['accesspoint_type'] !== 'accesspoint') {
|
||||
throw new InvalidArnException("The 8th component of an S3 Outposts"
|
||||
. " access point ARN must be 'accesspoint'");
|
||||
}
|
||||
|
||||
if (!self::isValidHostLabel($data['accesspoint_name'])) {
|
||||
throw new InvalidArnException("The 9th component of an S3 Outposts"
|
||||
. " access point ARN is required, represents the accesspoint name,"
|
||||
. " and must be a valid host label.");
|
||||
}
|
||||
|
||||
if (!empty($data['resource_extra'])) {
|
||||
throw new InvalidArnException("An S3 Outposts access point ARN"
|
||||
. " should only have 9 components, delimited by the characters"
|
||||
. " ':' and '/'. '{$data['resource_extra']}' was found after the"
|
||||
. " 9th component.");
|
||||
}
|
||||
}
|
||||
}
|
||||
12
vendor/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php
vendored
Normal file
12
vendor/aws/aws-sdk-php/src/Arn/S3/OutpostsArnInterface.php
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
namespace Aws\Arn\S3;
|
||||
|
||||
use Aws\Arn\ArnInterface;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
interface OutpostsArnInterface extends ArnInterface
|
||||
{
|
||||
public function getOutpostId();
|
||||
}
|
||||
99
vendor/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php
vendored
Normal file
99
vendor/aws/aws-sdk-php/src/Arn/S3/OutpostsBucketArn.php
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
namespace Aws\Arn\S3;
|
||||
|
||||
use Aws\Arn\Arn;
|
||||
use Aws\Arn\Exception\InvalidArnException;
|
||||
use Aws\Arn\ResourceTypeAndIdTrait;
|
||||
|
||||
/**
|
||||
* This class represents an S3 Outposts bucket ARN, which is in the
|
||||
* following format:
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
class OutpostsBucketArn extends Arn implements
|
||||
BucketArnInterface,
|
||||
OutpostsArnInterface
|
||||
{
|
||||
use ResourceTypeAndIdTrait;
|
||||
|
||||
/**
|
||||
* Parses a string into an associative array of components that represent
|
||||
* a OutpostsBucketArn
|
||||
*
|
||||
* @param $string
|
||||
* @return array
|
||||
*/
|
||||
public static function parse($string)
|
||||
{
|
||||
$data = parent::parse($string);
|
||||
$data = self::parseResourceTypeAndId($data);
|
||||
return self::parseOutpostData($data);
|
||||
}
|
||||
|
||||
public function getBucketName()
|
||||
{
|
||||
return $this->data['bucket_name'];
|
||||
}
|
||||
|
||||
public function getOutpostId()
|
||||
{
|
||||
return $this->data['outpost_id'];
|
||||
}
|
||||
|
||||
private static function parseOutpostData(array $data)
|
||||
{
|
||||
$resourceData = preg_split("/[\/:]/", $data['resource_id'], 3);
|
||||
|
||||
$data['outpost_id'] = isset($resourceData[0])
|
||||
? $resourceData[0]
|
||||
: null;
|
||||
$data['bucket_label'] = isset($resourceData[1])
|
||||
? $resourceData[1]
|
||||
: null;
|
||||
$data['bucket_name'] = isset($resourceData[2])
|
||||
? $resourceData[2]
|
||||
: null;
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param array $data
|
||||
*/
|
||||
public static function validate(array $data)
|
||||
{
|
||||
Arn::validate($data);
|
||||
|
||||
if (($data['service'] !== 's3-outposts')) {
|
||||
throw new InvalidArnException("The 3rd component of an S3 Outposts"
|
||||
. " bucket ARN represents the service and must be 's3-outposts'.");
|
||||
}
|
||||
|
||||
self::validateRegion($data, 'S3 Outposts bucket ARN');
|
||||
self::validateAccountId($data, 'S3 Outposts bucket ARN');
|
||||
|
||||
if (($data['resource_type'] !== 'outpost')) {
|
||||
throw new InvalidArnException("The 6th component of an S3 Outposts"
|
||||
. " bucket ARN represents the resource type and must be"
|
||||
. " 'outpost'.");
|
||||
}
|
||||
|
||||
if (!self::isValidHostLabel($data['outpost_id'])) {
|
||||
throw new InvalidArnException("The 7th component of an S3 Outposts"
|
||||
. " bucket ARN is required, represents the outpost ID, and"
|
||||
. " must be a valid host label.");
|
||||
}
|
||||
|
||||
if ($data['bucket_label'] !== 'bucket') {
|
||||
throw new InvalidArnException("The 8th component of an S3 Outposts"
|
||||
. " bucket ARN must be 'bucket'");
|
||||
}
|
||||
|
||||
if (empty($data['bucket_name'])) {
|
||||
throw new InvalidArnException("The 9th component of an S3 Outposts"
|
||||
. " bucket ARN represents the bucket name and must not be empty.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user