diff options
Diffstat (limited to 'vendor/aws/aws-sdk-php/src/EndpointV2/EndpointProviderV2.php')
-rw-r--r-- | vendor/aws/aws-sdk-php/src/EndpointV2/EndpointProviderV2.php | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/vendor/aws/aws-sdk-php/src/EndpointV2/EndpointProviderV2.php b/vendor/aws/aws-sdk-php/src/EndpointV2/EndpointProviderV2.php new file mode 100644 index 0000000..bd57494 --- /dev/null +++ b/vendor/aws/aws-sdk-php/src/EndpointV2/EndpointProviderV2.php @@ -0,0 +1,68 @@ +<?php + +namespace Aws\EndpointV2; + +use Aws\EndpointV2\Ruleset\Ruleset; +use Aws\Exception\UnresolvedEndpointException; +use Aws\LruArrayCache; + +/** + * Given a service's Ruleset and client-provided input parameters, provides + * either an object reflecting the properties of a resolved endpoint, + * or throws an error. + */ +class EndpointProviderV2 +{ + /** @var Ruleset */ + private $ruleset; + + /** @var LruArrayCache */ + private $cache; + + public function __construct(array $ruleset, array $partitions) + { + $this->ruleset = new Ruleset($ruleset, $partitions); + $this->cache = new LruArrayCache(100); + } + + /** + * @return Ruleset + */ + public function getRuleset() + { + return $this->ruleset; + } + + /** + * Given a Ruleset and input parameters, determines the correct endpoint + * or an error to be thrown for a given request. + * + * @return RulesetEndpoint + * @throws UnresolvedEndpointException + */ + public function resolveEndpoint(array $inputParameters) + { + $hashedParams = $this->hashInputParameters($inputParameters); + $match = $this->cache->get($hashedParams); + + if (!is_null($match)) { + return $match; + } + + $endpoint = $this->ruleset->evaluate($inputParameters); + if ($endpoint === false) { + throw new UnresolvedEndpointException( + 'Unable to resolve an endpoint using the provider arguments: ' + . json_encode($inputParameters) + ); + } + $this->cache->set($hashedParams, $endpoint); + + return $endpoint; + } + + private function hashInputParameters($inputParameters) + { + return md5(serialize($inputParameters)); + } +} |