github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/obs/const.go (about)

     1  // Copyright 2019 Huawei Technologies Co.,Ltd.
     2  // Licensed under the Apache License, Version 2.0 (the "License"); you may not use
     3  // this file except in compliance with the License.  You may obtain a copy of the
     4  // License at
     5  //
     6  // http://www.apache.org/licenses/LICENSE-2.0
     7  //
     8  // Unless required by applicable law or agreed to in writing, software distributed
     9  // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
    10  // CONDITIONS OF ANY KIND, either express or implied.  See the License for the
    11  // specific language governing permissions and limitations under the License.
    12  
    13  package obs
    14  
    15  const (
    16  	OBS_SDK_VERSION        = "3.23.12"
    17  	USER_AGENT             = "obs-sdk-go/" + OBS_SDK_VERSION
    18  	HEADER_PREFIX          = "x-amz-"
    19  	HEADER_PREFIX_META     = "x-amz-meta-"
    20  	HEADER_PREFIX_OBS      = "x-obs-"
    21  	HEADER_PREFIX_META_OBS = "x-obs-meta-"
    22  	HEADER_DATE_AMZ        = "x-amz-date"
    23  	HEADER_DATE_OBS        = "x-obs-date"
    24  	HEADER_STS_TOKEN_AMZ   = "x-amz-security-token"
    25  	HEADER_STS_TOKEN_OBS   = "x-obs-security-token"
    26  	HEADER_ACCESSS_KEY_AMZ = "AWSAccessKeyId"
    27  	PREFIX_META            = "meta-"
    28  
    29  	HEADER_CONTENT_SHA256_AMZ               = "x-amz-content-sha256"
    30  	HEADER_ACL_AMZ                          = "x-amz-acl"
    31  	HEADER_ACL_OBS                          = "x-obs-acl"
    32  	HEADER_ACL                              = "acl"
    33  	HEADER_LOCATION_AMZ                     = "location"
    34  	HEADER_BUCKET_LOCATION_OBS              = "bucket-location"
    35  	HEADER_COPY_SOURCE                      = "copy-source"
    36  	HEADER_COPY_SOURCE_RANGE                = "copy-source-range"
    37  	HEADER_RANGE                            = "Range"
    38  	HEADER_STORAGE_CLASS                    = "x-default-storage-class"
    39  	HEADER_STORAGE_CLASS_OBS                = "x-obs-storage-class"
    40  	HEADER_FS_FILE_INTERFACE_OBS            = "x-obs-fs-file-interface"
    41  	HEADER_MODE                             = "mode"
    42  	HEADER_VERSION_OBS                      = "version"
    43  	HEADER_REQUEST_PAYER                    = "x-amz-request-payer"
    44  	HEADER_GRANT_READ_OBS                   = "grant-read"
    45  	HEADER_GRANT_WRITE_OBS                  = "grant-write"
    46  	HEADER_GRANT_READ_ACP_OBS               = "grant-read-acp"
    47  	HEADER_GRANT_WRITE_ACP_OBS              = "grant-write-acp"
    48  	HEADER_GRANT_FULL_CONTROL_OBS           = "grant-full-control"
    49  	HEADER_GRANT_READ_DELIVERED_OBS         = "grant-read-delivered"
    50  	HEADER_GRANT_FULL_CONTROL_DELIVERED_OBS = "grant-full-control-delivered"
    51  	HEADER_REQUEST_ID                       = "request-id"
    52  	HEADER_ERROR_CODE                       = "error-code"
    53  	HEADER_ERROR_MESSAGE                    = "error-message"
    54  	HEADER_BUCKET_REGION                    = "bucket-region"
    55  	HEADER_ACCESS_CONRTOL_ALLOW_ORIGIN      = "access-control-allow-origin"
    56  	HEADER_ACCESS_CONRTOL_ALLOW_HEADERS     = "access-control-allow-headers"
    57  	HEADER_ACCESS_CONRTOL_MAX_AGE           = "access-control-max-age"
    58  	HEADER_ACCESS_CONRTOL_ALLOW_METHODS     = "access-control-allow-methods"
    59  	HEADER_ACCESS_CONRTOL_EXPOSE_HEADERS    = "access-control-expose-headers"
    60  	HEADER_EPID_HEADERS                     = "epid"
    61  	HEADER_VERSION_ID                       = "version-id"
    62  	HEADER_COPY_SOURCE_VERSION_ID           = "copy-source-version-id"
    63  	HEADER_DELETE_MARKER                    = "delete-marker"
    64  	HEADER_WEBSITE_REDIRECT_LOCATION        = "website-redirect-location"
    65  	HEADER_METADATA_DIRECTIVE               = "metadata-directive"
    66  	HEADER_EXPIRATION                       = "expiration"
    67  	HEADER_EXPIRES_OBS                      = "x-obs-expires"
    68  	HEADER_RESTORE                          = "restore"
    69  	HEADER_OBJECT_TYPE                      = "object-type"
    70  	HEADER_NEXT_APPEND_POSITION             = "next-append-position"
    71  	HEADER_STORAGE_CLASS2                   = "storage-class"
    72  	HEADER_CONTENT_LENGTH                   = "content-length"
    73  	HEADER_CONTENT_TYPE                     = "content-type"
    74  	HEADER_CONTENT_LANGUAGE                 = "content-language"
    75  	HEADER_EXPIRES                          = "expires"
    76  	HEADER_CACHE_CONTROL                    = "cache-control"
    77  	HEADER_CONTENT_DISPOSITION              = "content-disposition"
    78  	HEADER_CONTENT_ENCODING                 = "content-encoding"
    79  	HEADER_AZ_REDUNDANCY                    = "az-redundancy"
    80  	HEADER_BUCKET_TYPE                      = "bucket-type"
    81  	HEADER_BUCKET_REDUNDANCY                = "bucket-redundancy"
    82  	HEADER_FUSION_ALLOW_UPGRADE             = "fusion-allow-upgrade"
    83  	HEADER_FUSION_ALLOW_ALT                 = "fusion-allow-alternative"
    84  	headerOefMarker                         = "oef-marker"
    85  
    86  	HEADER_ETAG         = "etag"
    87  	HEADER_LASTMODIFIED = "last-modified"
    88  
    89  	HEADER_COPY_SOURCE_IF_MATCH            = "copy-source-if-match"
    90  	HEADER_COPY_SOURCE_IF_NONE_MATCH       = "copy-source-if-none-match"
    91  	HEADER_COPY_SOURCE_IF_MODIFIED_SINCE   = "copy-source-if-modified-since"
    92  	HEADER_COPY_SOURCE_IF_UNMODIFIED_SINCE = "copy-source-if-unmodified-since"
    93  
    94  	HEADER_IF_MATCH            = "If-Match"
    95  	HEADER_IF_NONE_MATCH       = "If-None-Match"
    96  	HEADER_IF_MODIFIED_SINCE   = "If-Modified-Since"
    97  	HEADER_IF_UNMODIFIED_SINCE = "If-Unmodified-Since"
    98  
    99  	HEADER_SSEC_ENCRYPTION = "server-side-encryption-customer-algorithm"
   100  	HEADER_SSEC_KEY        = "server-side-encryption-customer-key"
   101  	HEADER_SSEC_KEY_MD5    = "server-side-encryption-customer-key-MD5"
   102  
   103  	HEADER_SSEKMS_ENCRYPTION      = "server-side-encryption"
   104  	HEADER_SSEKMS_KEY             = "server-side-encryption-aws-kms-key-id"
   105  	HEADER_SSEKMS_ENCRYPT_KEY_OBS = "server-side-encryption-kms-key-id"
   106  
   107  	HEADER_SSEC_COPY_SOURCE_ENCRYPTION = "copy-source-server-side-encryption-customer-algorithm"
   108  	HEADER_SSEC_COPY_SOURCE_KEY        = "copy-source-server-side-encryption-customer-key"
   109  	HEADER_SSEC_COPY_SOURCE_KEY_MD5    = "copy-source-server-side-encryption-customer-key-MD5"
   110  
   111  	HEADER_SSEKMS_KEY_AMZ = "x-amz-server-side-encryption-aws-kms-key-id"
   112  
   113  	HEADER_SSEKMS_KEY_OBS = "x-obs-server-side-encryption-kms-key-id"
   114  
   115  	HEADER_SUCCESS_ACTION_REDIRECT = "success_action_redirect"
   116  
   117  	headerFSFileInterface = "fs-file-interface"
   118  
   119  	HEADER_DATE_CAMEL                          = "Date"
   120  	HEADER_HOST_CAMEL                          = "Host"
   121  	HEADER_HOST                                = "host"
   122  	HEADER_AUTH_CAMEL                          = "Authorization"
   123  	HEADER_MD5_CAMEL                           = "Content-MD5"
   124  	HEADER_LOCATION_CAMEL                      = "Location"
   125  	HEADER_CONTENT_LENGTH_CAMEL                = "Content-Length"
   126  	HEADER_CONTENT_TYPE_CAML                   = "Content-Type"
   127  	HEADER_USER_AGENT_CAMEL                    = "User-Agent"
   128  	HEADER_ORIGIN_CAMEL                        = "Origin"
   129  	HEADER_ACCESS_CONTROL_REQUEST_HEADER_CAMEL = "Access-Control-Request-Headers"
   130  	HEADER_CACHE_CONTROL_CAMEL                 = "Cache-Control"
   131  	HEADER_CONTENT_DISPOSITION_CAMEL           = "Content-Disposition"
   132  	HEADER_CONTENT_ENCODING_CAMEL              = "Content-Encoding"
   133  	HEADER_CONTENT_LANGUAGE_CAMEL              = "Content-Language"
   134  	HEADER_EXPIRES_CAMEL                       = "Expires"
   135  	HEADER_ACCEPT_ENCODING                     = "Accept-Encoding"
   136  
   137  	PARAM_VERSION_ID                   = "versionId"
   138  	PARAM_RESPONSE_CONTENT_TYPE        = "response-content-type"
   139  	PARAM_RESPONSE_CONTENT_LANGUAGE    = "response-content-language"
   140  	PARAM_RESPONSE_EXPIRES             = "response-expires"
   141  	PARAM_RESPONSE_CACHE_CONTROL       = "response-cache-control"
   142  	PARAM_RESPONSE_CONTENT_DISPOSITION = "response-content-disposition"
   143  	PARAM_RESPONSE_CONTENT_ENCODING    = "response-content-encoding"
   144  	PARAM_IMAGE_PROCESS                = "x-image-process"
   145  
   146  	PARAM_ALGORITHM_AMZ_CAMEL     = "X-Amz-Algorithm"
   147  	PARAM_CREDENTIAL_AMZ_CAMEL    = "X-Amz-Credential"
   148  	PARAM_DATE_AMZ_CAMEL          = "X-Amz-Date"
   149  	PARAM_DATE_OBS_CAMEL          = "X-Obs-Date"
   150  	PARAM_EXPIRES_AMZ_CAMEL       = "X-Amz-Expires"
   151  	PARAM_SIGNEDHEADERS_AMZ_CAMEL = "X-Amz-SignedHeaders"
   152  	PARAM_SIGNATURE_AMZ_CAMEL     = "X-Amz-Signature"
   153  
   154  	DEFAULT_SIGNATURE            = SignatureV2
   155  	DEFAULT_REGION               = "region"
   156  	DEFAULT_CONNECT_TIMEOUT      = 60
   157  	DEFAULT_SOCKET_TIMEOUT       = 60
   158  	DEFAULT_HEADER_TIMEOUT       = 60
   159  	DEFAULT_IDLE_CONN_TIMEOUT    = 30
   160  	DEFAULT_MAX_RETRY_COUNT      = 3
   161  	DEFAULT_MAX_REDIRECT_COUNT   = 3
   162  	DEFAULT_MAX_CONN_PER_HOST    = 1000
   163  	UNSIGNED_PAYLOAD             = "UNSIGNED-PAYLOAD"
   164  	LONG_DATE_FORMAT             = "20060102T150405Z"
   165  	SHORT_DATE_FORMAT            = "20060102"
   166  	ISO8601_DATE_FORMAT          = "2006-01-02T15:04:05Z"
   167  	ISO8601_MIDNIGHT_DATE_FORMAT = "2006-01-02T00:00:00Z"
   168  	RFC1123_FORMAT               = "Mon, 02 Jan 2006 15:04:05 GMT"
   169  
   170  	V4_SERVICE_NAME   = "s3"
   171  	V4_SERVICE_SUFFIX = "aws4_request"
   172  
   173  	V2_HASH_PREFIX  = "AWS"
   174  	OBS_HASH_PREFIX = "OBS"
   175  
   176  	V4_HASH_PREFIX = "AWS4-HMAC-SHA256"
   177  	V4_HASH_PRE    = "AWS4"
   178  
   179  	DEFAULT_SSE_KMS_ENCRYPTION     = "aws:kms"
   180  	DEFAULT_SSE_KMS_ENCRYPTION_OBS = "kms"
   181  
   182  	DEFAULT_SSE_C_ENCRYPTION = "AES256"
   183  
   184  	HTTP_GET     = "GET"
   185  	HTTP_POST    = "POST"
   186  	HTTP_PUT     = "PUT"
   187  	HTTP_DELETE  = "DELETE"
   188  	HTTP_HEAD    = "HEAD"
   189  	HTTP_OPTIONS = "OPTIONS"
   190  
   191  	REQUEST_PAYER = "request-payer"
   192  	TRAFFIC_LIMIT = "traffic-limit"
   193  	CALLBACK      = "callback"
   194  	MULTI_AZ      = "3az"
   195  
   196  	MAX_PART_SIZE     = 5 * 1024 * 1024 * 1024
   197  	MIN_PART_SIZE     = 100 * 1024
   198  	DEFAULT_PART_SIZE = 9 * 1024 * 1024
   199  	MAX_PART_NUM      = 10000
   200  
   201  	GET_OBJECT    = "GetObject"
   202  	PUT_OBJECT    = "PutObject"
   203  	PUT_FILE      = "PutFile"
   204  	APPEND_OBJECT = "AppendObject"
   205  )
   206  
   207  var (
   208  	interestedHeaders = []string{"content-md5", "content-type", "date"}
   209  
   210  	allowedRequestHTTPHeaderMetadataNames = map[string]bool{
   211  		"content-type":                   true,
   212  		"content-md5":                    true,
   213  		"content-length":                 true,
   214  		"content-language":               true,
   215  		"expires":                        true,
   216  		"origin":                         true,
   217  		"cache-control":                  true,
   218  		"content-disposition":            true,
   219  		"content-encoding":               true,
   220  		"access-control-request-method":  true,
   221  		"access-control-request-headers": true,
   222  		"x-default-storage-class":        true,
   223  		"location":                       true,
   224  		"date":                           true,
   225  		"etag":                           true,
   226  		"range":                          true,
   227  		"host":                           true,
   228  		"if-modified-since":              true,
   229  		"if-unmodified-since":            true,
   230  		"if-match":                       true,
   231  		"if-none-match":                  true,
   232  		"last-modified":                  true,
   233  		"content-range":                  true,
   234  		"accept-encoding":                true,
   235  	}
   236  
   237  	allowedLogResponseHTTPHeaderNames = map[string]bool{
   238  		"content-type":   true,
   239  		"etag":           true,
   240  		"connection":     true,
   241  		"content-length": true,
   242  		"date":           true,
   243  		"server":         true,
   244  	}
   245  
   246  	allowedResourceParameterNames = map[string]bool{
   247  		"acl":                          true,
   248  		"backtosource":                 true,
   249  		"metadata":                     true,
   250  		"policy":                       true,
   251  		"torrent":                      true,
   252  		"logging":                      true,
   253  		"location":                     true,
   254  		"storageinfo":                  true,
   255  		"quota":                        true,
   256  		"storageclass":                 true,
   257  		"storagepolicy":                true,
   258  		"requestpayment":               true,
   259  		"versions":                     true,
   260  		"versioning":                   true,
   261  		"versionid":                    true,
   262  		"uploads":                      true,
   263  		"uploadid":                     true,
   264  		"partnumber":                   true,
   265  		"website":                      true,
   266  		"notification":                 true,
   267  		"lifecycle":                    true,
   268  		"deletebucket":                 true,
   269  		"delete":                       true,
   270  		"cors":                         true,
   271  		"restore":                      true,
   272  		"encryption":                   true,
   273  		"tagging":                      true,
   274  		"append":                       true,
   275  		"modify":                       true,
   276  		"position":                     true,
   277  		"replication":                  true,
   278  		"response-content-type":        true,
   279  		"response-content-language":    true,
   280  		"response-expires":             true,
   281  		"response-cache-control":       true,
   282  		"response-content-disposition": true,
   283  		"response-content-encoding":    true,
   284  		"x-image-process":              true,
   285  		"x-oss-process":                true,
   286  		"x-image-save-bucket":          true,
   287  		"x-image-save-object":          true,
   288  		"ignore-sign-in-query":         true,
   289  		"name":                         true,
   290  		"rename":                       true,
   291  		"customdomain":                 true,
   292  		"mirrorbacktosource":           true,
   293  	}
   294  
   295  	obsStorageClasses = []string{
   296  		string(StorageClassStandard),
   297  		string(StorageClassWarm),
   298  		string(StorageClassCold),
   299  		string(StorageClassDeepArchive),
   300  	}
   301  )