in src/ClientResolver.php [769:834]
public static function _apply_endpoint_provider($value, array &$args)
{
if (!isset($args['endpoint'])) {
if ($value instanceof \Aws\EndpointV2\EndpointProviderV2) {
$options = self::getEndpointProviderOptions($args);
$value = PartitionEndpointProvider::defaultProvider($options)
->getPartition($args['region'], $args['service']);
}
$endpointPrefix = $args['api']['metadata']['endpointPrefix'] ?? $args['service'];
// Check region is a valid host label when it is being used to
// generate an endpoint
if (!self::isValidRegion($args['region'])) {
throw new InvalidRegionException('Region must be a valid RFC'
. ' host label.');
}
$serviceEndpoints =
is_array($value) && isset($value['services'][$args['service']]['endpoints'])
? $value['services'][$args['service']]['endpoints']
: null;
if (isset($serviceEndpoints[$args['region']]['deprecated'])) {
trigger_error("The service " . $args['service'] . "has "
. " deprecated the region " . $args['region'] . ".",
E_USER_WARNING
);
}
$args['region'] = \Aws\strip_fips_pseudo_regions($args['region']);
// Invoke the endpoint provider and throw if it does not resolve.
$result = EndpointProvider::resolve($value, [
'service' => $endpointPrefix,
'region' => $args['region'],
'scheme' => $args['scheme'],
'options' => self::getEndpointProviderOptions($args),
]);
$args['endpoint'] = $result['endpoint'];
if (empty($args['config']['signature_version'])) {
if (
isset($args['api'])
&& $args['api']->getSignatureVersion() == 'bearer'
) {
$args['config']['signature_version'] = 'bearer';
} elseif (isset($result['signatureVersion'])) {
$args['config']['signature_version'] = $result['signatureVersion'];
}
}
if (
empty($args['config']['signing_region'])
&& isset($result['signingRegion'])
) {
$args['config']['signing_region'] = $result['signingRegion'];
}
if (
empty($args['config']['signing_name'])
&& isset($result['signingName'])
) {
$args['config']['signing_name'] = $result['signingName'];
}
}
}