Blame view

sources/apps/files_external/3rdparty/aws-sdk-php/Aws/Common/HostNameUtils.php 2.43 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  <?php
  /**
   * Copyright 2010-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   *
   * Licensed under the Apache License, Version 2.0 (the "License").
   * You may not use this file except in compliance with the License.
   * A copy of the License is located at
   *
   * http://aws.amazon.com/apache2.0
   *
   * or in the "license" file accompanying this file. This file is distributed
   * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
   * express or implied. See the License for the specific language governing
   * permissions and limitations under the License.
   */
  
  namespace Aws\Common;
  
  use Guzzle\Http\Url;
  
  /**
   * Utility class for parsing regions and services from URLs
   */
  class HostNameUtils
  {
      const DEFAULT_REGION = 'us-east-1';
      const DEFAULT_GOV_REGION = 'us-gov-west-1';
  
      /**
       * Parse the AWS region name from a URL
       *
       *
       * @param Url $url HTTP URL
       *
       * @return string
       * @link http://docs.amazonwebservices.com/general/latest/gr/rande.html
       */
      public static function parseRegionName(Url $url)
      {
          // If we don't recognize the domain, just return the default
          if (substr($url->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.amazonwebservices.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];
      }
  }