123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <?php
- namespace Aws\Endpoint;
- /**
- * Provides endpoints based on an endpoint pattern configuration array.
- */
- class PatternEndpointProvider
- {
- /** @var array */
- private $patterns;
- /**
- * @param array $patterns Hash of endpoint patterns mapping to endpoint
- * configurations.
- */
- public function __construct(array $patterns)
- {
- $this->patterns = $patterns;
- }
- public function __invoke(array $args = [])
- {
- $service = isset($args['service']) ? $args['service'] : '';
- $region = isset($args['region']) ? $args['region'] : '';
- $keys = ["{$region}/{$service}", "{$region}/*", "*/{$service}", "*/*"];
- foreach ($keys as $key) {
- if (isset($this->patterns[$key])) {
- return $this->expand(
- $this->patterns[$key],
- isset($args['scheme']) ? $args['scheme'] : 'https',
- $service,
- $region
- );
- }
- }
- return null;
- }
- private function expand(array $config, $scheme, $service, $region)
- {
- $config['endpoint'] = $scheme . '://'
- . strtr($config['endpoint'], [
- '{service}' => $service,
- '{region}' => $region
- ]);
- return $config;
- }
- }
|