PluginProbe ʕ •ᴥ•ʔ
Transferito: WP Migration / trunk
Transferito: WP Migration vtrunk
trunk 11.4.0 12.0.0 13.1.0 14.0.0 14.0.11 14.0.7 14.1.0 14.1.1 14.1.2 14.1.3 14.1.4
transferito / vendor / aws / aws-sdk-php / src / S3 / EndpointRegionHelperTrait.php
transferito / vendor / aws / aws-sdk-php / src / S3 Last commit date
Crypto 11 months ago Exception 11 months ago RegionalEndpoint 11 months ago UseArnRegion 11 months ago AmbiguousSuccessParser.php 11 months ago ApplyChecksumMiddleware.php 11 months ago BatchDelete.php 11 months ago BucketEndpointArnMiddleware.php 11 months ago BucketEndpointMiddleware.php 11 months ago CalculatesChecksumTrait.php 11 months ago EndpointRegionHelperTrait.php 11 months ago GetBucketLocationParser.php 11 months ago MultipartCopy.php 11 months ago MultipartUploader.php 11 months ago MultipartUploadingTrait.php 11 months ago ObjectCopier.php 11 months ago ObjectUploader.php 11 months ago PermanentRedirectMiddleware.php 11 months ago PostObject.php 11 months ago PostObjectV4.php 11 months ago PutObjectUrlMiddleware.php 11 months ago RetryableMalformedResponseParser.php 11 months ago S3Client.php 11 months ago S3ClientInterface.php 11 months ago S3ClientTrait.php 11 months ago S3EndpointMiddleware.php 11 months ago S3MultiRegionClient.php 11 months ago S3UriParser.php 11 months ago SSECMiddleware.php 11 months ago StreamWrapper.php 11 months ago Transfer.php 11 months ago ValidateResponseChecksumParser.php 11 months ago
EndpointRegionHelperTrait.php
107 lines
1 <?php
2 namespace Aws\S3;
3
4 use Aws\Api\Service;
5 use Aws\Arn\ArnInterface;
6 use Aws\Arn\S3\OutpostsArnInterface;
7 use Aws\Endpoint\PartitionEndpointProvider;
8 use Aws\Exception\InvalidRegionException;
9
10 /**
11 * @internal
12 */
13 trait EndpointRegionHelperTrait
14 {
15 /** @var array */
16 private $config;
17
18 /** @var PartitionEndpointProvider */
19 private $partitionProvider;
20
21 /** @var string */
22 private $region;
23
24 /** @var Service */
25 private $service;
26
27 private function getPartitionSuffix(
28 ArnInterface $arn,
29 PartitionEndpointProvider $provider
30 ) {
31 $partition = $provider->getPartition(
32 $arn->getRegion(),
33 $arn->getService()
34 );
35 return $partition->getDnsSuffix();
36 }
37
38 private function getSigningRegion(
39 $region,
40 $service,
41 PartitionEndpointProvider $provider
42 ) {
43 $partition = $provider->getPartition($region, $service);
44 $data = $partition->toArray();
45 if (isset($data['services'][$service]['endpoints'][$region]['credentialScope']['region'])) {
46 return $data['services'][$service]['endpoints'][$region]['credentialScope']['region'];
47 }
48 return $region;
49 }
50
51 private function isMatchingSigningRegion(
52 $arnRegion,
53 $clientRegion,
54 $service,
55 PartitionEndpointProvider $provider
56 ) {
57 $arnRegion = \Aws\strip_fips_pseudo_regions(strtolower($arnRegion));
58 $clientRegion = strtolower($clientRegion);
59 if ($arnRegion === $clientRegion) {
60 return true;
61 }
62 if ($this->getSigningRegion($clientRegion, $service, $provider) === $arnRegion) {
63 return true;
64 }
65 return false;
66 }
67
68 private function validateFipsConfigurations(ArnInterface $arn)
69 {
70 $useFipsEndpoint = !empty($this->config['use_fips_endpoint']);
71 if ($arn instanceof OutpostsArnInterface) {
72 if (empty($this->config['use_arn_region'])
73 || !($this->config['use_arn_region']->isUseArnRegion())
74 ) {
75 $region = $this->region;
76 } else {
77 $region = $arn->getRegion();
78 }
79 if (\Aws\is_fips_pseudo_region($region)) {
80 throw new InvalidRegionException(
81 'Fips is currently not supported with S3 Outposts access'
82 . ' points. Please provide a non-fips region or do not supply an'
83 . ' access point ARN.');
84 }
85 }
86 }
87
88 private function validateMatchingRegion(ArnInterface $arn)
89 {
90 if (!($this->isMatchingSigningRegion(
91 $arn->getRegion(),
92 $this->region,
93 $this->service->getEndpointPrefix(),
94 $this->partitionProvider)
95 )) {
96 if (empty($this->config['use_arn_region'])
97 || !($this->config['use_arn_region']->isUseArnRegion())
98 ) {
99 throw new InvalidRegionException('The region'
100 . " specified in the ARN (" . $arn->getRegion()
101 . ") does not match the client region ("
102 . "{$this->region}).");
103 }
104 }
105 }
106 }
107