public static function _apply_endpoint_provider()

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'];
            }
        }
    }