# media-cloud-sync/1.1.1/includes/sdk/s3/Aws/Endpoint/PatternEndpointProvider.php

Media Cloud Sync, version 1.1.1. 38 lines.

- Page: https://pluginprobe.com/plugins/media-cloud-sync/1.1.1/code/includes/sdk/s3/Aws/Endpoint/PatternEndpointProvider.php
- Raw: https://pluginprobe.com/plugins/media-cloud-sync/1.1.1/raw/includes/sdk/s3/Aws/Endpoint/PatternEndpointProvider.php
- Modified: 2024-10-27T10:40:38+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/media-cloud-sync/1.1.1/code/includes/sdk/s3/Aws/Endpoint/PatternEndpointProvider.php#L10-L20`.

```php
<?php

namespace Dudlewebs\WPMCS\s3\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;
    }
}

```
