private function resolveCloudBox()

in src/ClientImpl.php [286:314]


    private function resolveCloudBox(Config &$config, array &$options)
    {
        if ($config->getCloudBoxId() !== null) {
            $options['region'] = $config->getCloudBoxId();
            $options['product'] = Defaults::CLOUD_BOX_PRODUCT;
            return;
        }
        if ($config->getEnableAutoDetectCloudBoxId() == false) {
            return;
        }
        if ($config->getEndpoint() == null) {
            return;
        }
        //cb-***.{region}.oss-cloudbox-control.aliyuncs.com
        //cb-***.{region}.oss-cloudbox.aliyuncs.com
        $uri = new GuzzleHttp\Psr7\Uri($config->getEndpoint());
        $path = !empty($uri->getHost()) ? $uri->getHost() : $uri->getPath();
        if (!(substr($path, -strlen('.oss-cloudbox.aliyuncs.com')) === '.oss-cloudbox.aliyuncs.com' || substr($path, -strlen('.oss-cloudbox-control.aliyuncs.com')) === '.oss-cloudbox-control.aliyuncs.com')) {
            return;
        }
        $keys = explode('.', $path);
        if ($keys == false ||
            count($keys) !== 5 ||
            substr($keys[0], 0, strlen('cb-')) !== 'cb-') {
            return;
        }
        $options['region'] = $keys[0];
        $options['product'] = Defaults::CLOUD_BOX_PRODUCT;
    }