getHost(), -14) != '.amazonaws.com') { return self::DEFAULT_REGION; } $serviceAndRegion = substr($url->getHost(), 0, -14); // Special handling for S3 regions $separator = strpos($serviceAndRegion, 's3') === 0 ? '-' : '.'; $separatorPos = strpos($serviceAndRegion, $separator); // If don't detect a separator, then return the default region if ($separatorPos === false) { return self::DEFAULT_REGION; } $region = substr($serviceAndRegion, $separatorPos + 1); // All GOV regions currently use the default GOV region if ($region == 'us-gov') { return self::DEFAULT_GOV_REGION; } return $region; } /** * Parse the AWS service name from a URL * * @param Url $url HTTP URL * * @return string Returns a service name (or empty string) * @link http://docs.aws.amazon.com/general/latest/gr/rande.html */ public static function parseServiceName(Url $url) { // The service name is the first part of the host $parts = explode('.', $url->getHost(), 2); // Special handling for S3 if (stripos($parts[0], 's3') === 0) { return 's3'; } return $parts[0]; } }