in src/MultiRegionClient.php [30:96]
public static function getArguments()
{
$args = array_intersect_key(
ClientResolver::getDefaultArguments(),
['service' => true, 'region' => true]
);
$args['region']['required'] = false;
unset($args['region']['fn']);
unset($args['region']['default']);
return $args + [
'client_factory' => [
'type' => 'config',
'valid' => ['callable'],
'doc' => 'A callable that takes an array of client'
. ' configuration arguments and returns a regionalized'
. ' client.',
'required' => true,
'internal' => true,
'default' => function (array $args) {
$namespace = manifest($args['service'])['namespace'];
$klass = "Aws\\{$namespace}\\{$namespace}Client";
$region = isset($args['region']) ? $args['region'] : null;
return function (array $args) use ($klass, $region) {
if ($region && empty($args['region'])) {
$args['region'] = $region;
}
return new $klass($args);
};
},
],
'partition' => [
'type' => 'config',
'valid' => ['string', PartitionInterface::class],
'doc' => 'AWS partition to connect to. Valid partitions'
. ' include "aws," "aws-cn," and "aws-us-gov." Used to'
. ' restrict the scope of the mapRegions method.',
'default' => function (array $args) {
$region = isset($args['region']) ? $args['region'] : '';
return PartitionEndpointProvider::defaultProvider()
->getPartition($region, $args['service']);
},
'fn' => function ($value, array &$args) {
if (is_string($value)) {
$value = PartitionEndpointProvider::defaultProvider()
->getPartitionByName($value);
}
if (!$value instanceof PartitionInterface) {
throw new \InvalidArgumentException('No valid partition'
. ' was provided. Provide a concrete partition or'
. ' the name of a partition (e.g., "aws," "aws-cn,"'
. ' or "aws-us-gov").'
);
}
$ruleset = EndpointDefinitionProvider::getEndpointRuleset(
$args['service'],
isset($args['version']) ? $args['version'] : 'latest'
);
$partitions = EndpointDefinitionProvider::getPartitions();
$args['endpoint_provider'] = new EndpointProviderV2($ruleset, $partitions);
}
],
];
}