public static function getArguments()

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);
                    }
                ],
            ];
    }