in src/S3/S3Client.php [412:497]
public function __construct(array $args)
{
if (
!isset($args['s3_us_east_1_regional_endpoint'])
|| $args['s3_us_east_1_regional_endpoint'] instanceof CacheInterface
) {
$args['s3_us_east_1_regional_endpoint'] = ConfigurationProvider::defaultProvider($args);
}
$this->addBuiltIns($args);
parent::__construct($args);
$stack = $this->getHandlerList();
$stack->appendInit(SSECMiddleware::wrap($this->getEndpoint()->getScheme()), 's3.ssec');
$stack->appendBuild(
ApplyChecksumMiddleware::wrap($this->getApi(), $this->getConfig()),
's3.checksum'
);
$stack->appendBuild(
Middleware::contentType(['PutObject', 'UploadPart']),
's3.content_type'
);
if ($this->getConfig('bucket_endpoint')) {
$stack->appendBuild(BucketEndpointMiddleware::wrap(), 's3.bucket_endpoint');
} elseif (!$this->isUseEndpointV2()) {
$stack->appendBuild(
S3EndpointMiddleware::wrap(
$this->getRegion(),
$this->getConfig('endpoint_provider'),
[
'accelerate' => $this->getConfig('use_accelerate_endpoint'),
'path_style' => $this->getConfig('use_path_style_endpoint'),
'use_fips_endpoint' => $this->getConfig('use_fips_endpoint'),
'dual_stack' =>
$this->getConfig('use_dual_stack_endpoint')->isUseDualStackEndpoint(),
]
),
's3.endpoint_middleware'
);
}
$stack->appendBuild(
BucketEndpointArnMiddleware::wrap(
$this->getApi(),
$this->getRegion(),
[
'use_arn_region' => $this->getConfig('use_arn_region'),
'accelerate' => $this->getConfig('use_accelerate_endpoint'),
'path_style' => $this->getConfig('use_path_style_endpoint'),
'dual_stack' =>
$this->getConfig('use_dual_stack_endpoint')->isUseDualStackEndpoint(),
'use_fips_endpoint' => $this->getConfig('use_fips_endpoint'),
'disable_multiregion_access_points' =>
$this->getConfig('disable_multiregion_access_points'),
'endpoint' => $args['endpoint'] ?? null
],
$this->isUseEndpointV2()
),
's3.bucket_endpoint_arn'
);
if ($this->getConfig('disable_express_session_auth')) {
$stack->prependSign(
$this->getDisableExpressSessionAuthMiddleware(),
's3.disable_express_session_auth'
);
}
$stack->appendValidate(
InputValidationMiddleware::wrap($this->getApi(), self::$mandatoryAttributes),
'input_validation_middleware'
);
$stack->appendSign(ExpiresParsingMiddleware::wrap(), 's3.expires_parsing');
$stack->appendSign(PutObjectUrlMiddleware::wrap(), 's3.put_object_url');
$stack->appendSign(PermanentRedirectMiddleware::wrap(), 's3.permanent_redirect');
$stack->appendInit(Middleware::sourceFile($this->getApi()), 's3.source_file');
$stack->appendInit($this->getSaveAsParameter(), 's3.save_as');
$stack->appendInit($this->getLocationConstraintMiddleware(), 's3.location');
$stack->appendInit($this->getEncodingTypeMiddleware(), 's3.auto_encode');
$stack->appendInit($this->getHeadObjectMiddleware(), 's3.head_object');
$this->processModel($this->isUseEndpointV2());
if ($this->isUseEndpointV2()) {
$stack->after('builder',
's3.check_empty_path_with_query',
$this->getEmptyPathWithQuery());
}
}