# media-cloud-sync/1.2.12/includes/sdk/s3/Aws/DefaultsMode/Configuration.php

Media Cloud Sync, version 1.2.12. 103 lines.

- Page: https://pluginprobe.com/plugins/media-cloud-sync/1.2.12/code/includes/sdk/s3/Aws/DefaultsMode/Configuration.php
- Raw: https://pluginprobe.com/plugins/media-cloud-sync/1.2.12/raw/includes/sdk/s3/Aws/DefaultsMode/Configuration.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.2.12/code/includes/sdk/s3/Aws/DefaultsMode/Configuration.php#L10-L20`.

```php
<?php

namespace Dudlewebs\WPMCS\s3\Aws\DefaultsMode;

use Dudlewebs\WPMCS\s3\Aws\DefaultsMode\Exception\ConfigurationException;
class Configuration implements ConfigurationInterface
{
    private $mode;
    private $retryMode;
    private $stsRegionalEndpoints;
    private $s3UsEast1RegionalEndpoints;
    private $connectTimeoutInMillis;
    private $httpRequestTimeoutInMillis;
    private $validModes = ['legacy', 'standard', 'cross-region', 'in-region', 'mobile', 'auto'];
    public function __construct($mode = 'legacy')
    {
        $mode = \strtolower($mode);
        if (!\in_array($mode, $this->validModes)) {
            throw new \InvalidArgumentException("'{$mode}' is not a valid mode." . " The mode has to be 'legacy', 'standard', 'cross-region', 'in-region'," . " 'mobile', or 'auto'.");
        }
        $this->mode = $mode;
        if ($this->mode == 'legacy') {
            return;
        }
        $data = \Dudlewebs\WPMCS\s3\Aws\load_compiled_json(__DIR__ . '/../data/sdk-default-configuration.json');
        $this->retryMode = $data['base']['retryMode'];
        $this->stsRegionalEndpoints = $data['base']['stsRegionalEndpoints'];
        $this->s3UsEast1RegionalEndpoints = $data['base']['s3UsEast1RegionalEndpoints'];
        $this->connectTimeoutInMillis = $data['base']['connectTimeoutInMillis'];
        if (isset($data['modes'][$mode])) {
            $modeData = $data['modes'][$mode];
            foreach ($modeData as $settingName => $settingValue) {
                if (isset($this->{$settingName})) {
                    if (isset($settingValue['override'])) {
                        $this->{$settingName} = $settingValue['override'];
                    } else {
                        if (isset($settingValue['multiply'])) {
                            $this->{$settingName} *= $settingValue['multiply'];
                        } else {
                            if (isset($settingValue['add'])) {
                                $this->{$settingName} += $settingValue['add'];
                            }
                        }
                    }
                } else {
                    if (isset($settingValue['override'])) {
                        $this->{$settingName} = $settingValue['override'];
                    }
                }
            }
        }
    }
    /**
     * {@inheritdoc}
     */
    public function getMode()
    {
        return $this->mode;
    }
    /**
     * {@inheritdoc}
     */
    public function getRetryMode()
    {
        return $this->retryMode;
    }
    /**
     * {@inheritdoc}
     */
    public function getStsRegionalEndpoints()
    {
        return $this->stsRegionalEndpoints;
    }
    /**
     * {@inheritdoc}
     */
    public function getS3UsEast1RegionalEndpoints()
    {
        return $this->s3UsEast1RegionalEndpoints;
    }
    /**
     * {@inheritdoc}
     */
    public function getConnectTimeoutInMillis()
    {
        return $this->connectTimeoutInMillis;
    }
    /**
     * {@inheritdoc}
     */
    public function getHttpRequestTimeoutInMillis()
    {
        return $this->httpRequestTimeoutInMillis;
    }
    /**
     * {@inheritdoc}
     */
    public function toArray()
    {
        return ['mode' => $this->getMode(), 'retry_mode' => $this->getRetryMode(), 'sts_regional_endpoints' => $this->getStsRegionalEndpoints(), 's3_us_east_1_regional_endpoint' => $this->getS3UsEast1RegionalEndpoints(), 'connect_timeout_in_milliseconds' => $this->getConnectTimeoutInMillis(), 'http_request_timeout_in_milliseconds' => $this->getHttpRequestTimeoutInMillis()];
    }
}

```
