From ae53c293ca5bab7bb83c5042841792749ac151a2 Mon Sep 17 00:00:00 2001 From: lewzylu <327874225@qq.com> Date: Thu, 26 Apr 2018 15:24:47 +0800 Subject: [PATCH] Fix lifecycle --- sample.php | 29 +- src/Qcloud/Cos/Service.php | 7550 +++++++++++++++++---------------- src/Qcloud/Cos/Tests/Test.php | 80 +- 3 files changed, 3853 insertions(+), 3806 deletions(-) diff --git a/sample.php b/sample.php index b2c94755..f5d9d207 100644 --- a/sample.php +++ b/sample.php @@ -424,21 +424,30 @@ 'Bucket' => $bucket, 'Rules' => array( array( - 'Expiration' => array( - 'Days' => 1000, - ), - 'ID' => 'id1', + 'Status' => 'Enabled', 'Filter' => array( - 'Prefix' => 'documents/' + 'Tag' => array( + 'Key' => 'datalevel', + 'Value' => 'backup' + ) ), - 'Status' => 'Enabled', 'Transitions' => array( array( - 'Days' => 200, - 'StorageClass' => 'NEARLINE'), + # 30天后转换为Standard_IA + 'Days' => 30, + 'StorageClass' => 'Standard_IA'), + array( + # 365天后转换为Archive + 'Days' => 365, + 'StorageClass' => 'Archive') ), - ), - ))); + 'Expiration' => array( + # 3650天后过期删除 + 'Days' => 3650, + ) + ) + ) + )); print_r($result); } catch (\Exception $e) { echo "$e\n"; diff --git a/src/Qcloud/Cos/Service.php b/src/Qcloud/Cos/Service.php index 3f0e82f1..bae144fc 100644 --- a/src/Qcloud/Cos/Service.php +++ b/src/Qcloud/Cos/Service.php @@ -6,3005 +6,3017 @@ class Service { public static function getService() { return array( - 'name' => 'Cos Service', - 'apiVersion' => 'V5', - 'description' => 'Cos V5 API Service', + 'name' => 'Cos Service', + 'apiVersion' => 'V5', + 'description' => 'Cos V5 API Service', + + 'operations' => array( + /** + 舍弃一个分块上传且删除已上传的分片块的方法. + + COS 支持舍弃一个分块上传且删除已上传的分片块. 注意,已上传但是未终止的分片块会占用存储空间进 而产生存储费用.因此,建议及时完成分块上传 或者舍弃分块上传. + + 关于分块上传的具体描述,请查看 https://cloud.tencent.com/document/product/436/14112. + + 关于舍弃一个分块上传且删除已上传的分片块接口的描述,请查看 https://cloud.tencent.com/document/product/436/7740. + + cos php SDK 中舍弃一个分块上传且删除已上传的分片块请求的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 AbortMultipfartUpload 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,则操作成功。 + */ + 'AbortMultipartUpload' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'AbortMultipartUploadOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId')), + 'errorResponses' => array( + array( + 'reason' => 'The specified multipart upload does not exist.', + 'class' => 'NoSuchUploadException'))), + /** + 创建存储桶(Bucket)的方法. + + 在开始使用 COS 时,需要在指定的账号下先创建一个 Bucket 以便于对象的使用和管理. 并指定 Bucket 所属的地域.创建 Bucket 的用户默认成为 Bucket 的持有者.若创建 Bucket 时没有指定访问权限,则默认 为私有读写(private)权限. + + 可用地域,可以查看https://cloud.tencent.com/document/product/436/6224. + + 关于创建 Bucket 描述,请查看 https://cloud.tencent.com/document/product/436/14106. + + 关于创建存储桶(Bucket)接口的具体 描述,请查看 https://cloud.tencent.com/document/product/436/7738. + + cos php SDK 中创建 Bucket的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 CreateBucket 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,则创建成功。 + + 示例: + $result = $cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); + */ + 'CreateBucket' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'CreateBucketOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CreateBucketConfiguration')), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-acl'), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri')), + 'errorResponses' => array( + array( + 'reason' => 'The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.', + 'class' => 'BucketAlreadyExistsException'))), + /** + 完成整个分块上传的方法. + + 当使用分块上传(uploadPart(UploadPartRequest))完对象的所有块以后,必须调用该 completeMultiUpload(CompleteMultiUploadRequest) 或者 completeMultiUploadAsync(CompleteMultiUploadRequest, CosXmlResultListener) 来完成整个文件的分块上传.且在该请求的 Body 中需要给出每一个块的 PartNumber 和 ETag,用来校验块的准 确性. + + 分块上传适合于在弱网络或高带宽环境下上传较大的对象.SDK 支持自行切分对象并分别调用uploadPart(UploadPartRequest)上传各 个分块. + + 关于分块上传的描述,请查看 https://cloud.tencent.com/document/product/436/14112. + + 关于完成整个分片上传接口的描述,请查看 https://cloud.tencent.com/document/product/436/7742. + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 CompleteMultipartUpload 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,则操作成功。 + + */ + 'CompleteMultipartUpload' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'CompleteMultipartUploadOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CompleteMultipartUpload')), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1), + 'Parts' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true), + 'items' => array( + 'name' => 'CompletedPart', + 'type' => 'object', + 'sentAs' => 'Part', + 'properties' => array( + 'ETag' => array( + 'type' => 'string'), + 'PartNumber' => array( + 'type' => 'numeric')))), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId'), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml'))), + 'CreateMultipartUpload' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}{/Key*}?uploads', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'CreateMultipartUploadOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CreateMultipartUploadRequest')), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-acl', + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'Expires' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-read-acp', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-write-acp', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + ), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-cos-meta-', + 'additionalProperties' => array( + 'type' => 'string', + ), + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-storage-class', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-website-redirect-location', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ))), + 'CopyObject' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'CopyObjectOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CopyObjectRequest', + ), + ), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-acl', + ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'CopySource' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source', + ), + 'CopySourceIfMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-if-match', + ), + 'CopySourceIfModifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-if-modified-since', + ), + 'CopySourceIfNoneMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-if-none-match', + ), + 'CopySourceIfUnmodifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-if-unmodified-since', + ), + 'Expires' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-read-acp', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-write-acp', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + ), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-cos-meta-', + 'additionalProperties' => array( + 'type' => 'string', + ), + ), + 'MetadataDirective' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-metadata-directive', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-storage-class', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-website-redirect-location', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key', + ), + 'CopySourceSSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-algorithm', + ), + 'CopySourceSSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-key', + ), + 'CopySourceSSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-key-MD5', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The source object of the COPY operation is not in the active tier.', + 'class' => 'ObjectNotInActiveTierErrorException', + ), + ), + ), + /** + 删除存储桶 (Bucket)的方法. + + COS 目前仅支持删除已经清空的 Bucket,如果 Bucket 中仍有对象,将会删除失败. 因此,在执行删除 Bucket 前,需确保 Bucket 内已经没有对象. 删除 Bucket 时,还需要确保操作的身份已被授权该操作,并确认 传入了正确的存储桶名称和地域参数, 请参阅 putBucket(PutBucketRequest). + + 关于删除 Bucket 的描述,请查看 https://cloud.tencent.com/document/product/436/14105. + + 关于删除 Bucket 接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7732. + + cos php SDK 中删除 Bucket 的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 DeleteBucket 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,删除成功。 + + 示例: + $result = $cosClient->deleteBucket(array( + 'Bucket' => 'testbucket-1252448703')); + print_r($result); + */ + 'DeleteBucket' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DeleteBucketOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'))), + /** + 删除跨域访问配置信息的方法. + + 若是 Bucket 不需要支持跨域访问配置,可以调用此接口删除已配置的跨域访问信息. 跨域访问配置可以通过 putBucketCORS(PutBucketCORSRequest) 或者 putBucketCORSAsync(PutBucketCORSRequest, CosXmlResultListener) 方法来开启 Bucket 的跨域访问 支持. + + 关于删除跨域访问配置信息接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8283. + + cos php SDK 中删除跨域访问配置信息的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 DeleteBucketCORS 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,删除成功。 + + 示例: + $result = $cosClient->deleteBucketCors(array( + // Bucket is required + 'Bucket' => 'testbucket-1252448703', + )); + */ + 'DeleteBucketCors' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}?cors', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DeleteBucketCorsOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + /** + 删除 COS 上单个对象的方法. + + COS 支持直接删除一个或多个对象,当仅需要删除一个对象时,只需要提供对象的名称(即对象键)即可. + + 关于删除 COS 上单个对象的具体描述,请查看 https://cloud.tencent.com/document/product/436/14119. + + 关于删除 COS 上单个对象接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7743. + + cos php SDK 中删除 COS 上单个对象请求的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 DeleteObject 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,则删除成功。 + + 示例: + $result = $cosClient->deleteObject(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '111.txt', + 'VersionId' => 'string')); + */ + 'DeleteObject' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DeleteObjectOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1), + 'MFA' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-mfa', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ),)), + /** + 批量删除 COS 对象的方法. - 'operations' => array( - /** - 舍弃一个分块上传且删除已上传的分片块的方法. + COS 支持批量删除指定 Bucket 中 对象,单次请求最大支持批量删除 1000 个 对象. 请求中删除一个不存在的对象,仍然认为是成功的. 对于响应结果,COS提供 Verbose 和 Quiet 两种模式:Verbose 模式将返回每个对象的删除结果;Quiet 模式只返回删除报错的对象信息. 请求必须携带 Content-MD5 用来校验请求Body 的完整性. - COS 支持舍弃一个分块上传且删除已上传的分片块. 注意,已上传但是未终止的分片块会占用存储空间进 而产生存储费用.因此,建议及时完成分块上传 或者舍弃分块上传. + 关于批量删除 COS 对象接口的描述,请查看https://cloud.tencent.com/document/product/436/8289. - 关于分块上传的具体描述,请查看 https://cloud.tencent.com/document/product/436/14112. + cos php SDK 中批量删除 COS 对象的方法具体步骤如下: - 关于舍弃一个分块上传且删除已上传的分片块接口的描述,请查看 https://cloud.tencent.com/document/product/436/7740. + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - cos php SDK 中舍弃一个分块上传且删除已上传的分片块请求的方法具体步骤如下: + 2. 调用 DeleteObjects 接口发出请求。 - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + 3. 接收该接口的返回数据,若没有抛出异常,则删除成功。 - 2. 调用 AbortMultipfartUpload 接口发出请求。 + 示例: + $result = $cosClient->deleteObjects(array( + // Bucket is required + 'Bucket' => 'testbucket-1252448703', + // Objects is required + 'Objects' => array( + array( + // Key is required + 'Key' => 'string', + 'VersionId' => 'string', + ), + // ... repeated + ), + )); + */ + 'DeleteObjects' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}?delete', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DeleteObjectsOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'Delete', + ), + 'contentMd5' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Objects' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ObjectIdentifier', + 'type' => 'object', + 'sentAs' => 'Object', + 'properties' => array( + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'minLength' => 1, + ), + 'VersionId' => array( + 'type' => 'string', + ), + ), + ), + ), + 'Quiet' => array( + 'type' => 'boolean', + 'format' => 'boolean-string', + 'location' => 'xml', + ), + 'MFA' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-mfa', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + /** + 删除存储桶(Bucket) 的生命周期配置的方法. + + COS 支持删除已配置的 Bucket 的生命周期列表. COS 支持以生命周期配置的方式来管理 Bucket 中 对象的生命周期,生命周期配置包含一个或多个将 应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作),请参阅 putBucketLifecycle(PutBucketLifecycleRequest). + + 关于删除 Bucket 的生命周期配置接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8284. + + cos php SDK 中删除 Bucket 的生命周期配置的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 DeleteBucketLifeCycle 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,删除成功。 + + 示例: + $result = $cosClient->deleteBucketLifecycle(array( + // Bucket is required + 'Bucket' =>'testbucket-1252448703', + )); + */ + 'DeleteBucketLifecycle' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}?lifecycle', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DeleteBucketLifecycleOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + /** + 删除跨区域复制配置的方法. - 3. 接收该接口的返回数据,若没有抛出异常,则操作成功。 - */ - 'AbortMultipartUpload' => array( - 'httpMethod' => 'DELETE', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'AbortMultipartUploadOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1), - 'UploadId' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId')), - 'errorResponses' => array( - array( - 'reason' => 'The specified multipart upload does not exist.', - 'class' => 'NoSuchUploadException'))), - /** - 创建存储桶(Bucket)的方法. + 当不需要进行跨区域复制时,可以删除 Bucket 的跨区域复制配置. 跨区域复制,可以查阅putBucketReplication(PutBucketReplicationRequest) - 在开始使用 COS 时,需要在指定的账号下先创建一个 Bucket 以便于对象的使用和管理. 并指定 Bucket 所属的地域.创建 Bucket 的用户默认成为 Bucket 的持有者.若创建 Bucket 时没有指定访问权限,则默认 为私有读写(private)权限. + cos php SDK 中删除跨区域复制配置的方法具体步骤如下: - 可用地域,可以查看https://cloud.tencent.com/document/product/436/6224. + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 关于创建 Bucket 描述,请查看 https://cloud.tencent.com/document/product/436/14106. + 2. 调用 DeleteBucketReplication 接口发出请求。 - 关于创建存储桶(Bucket)接口的具体 描述,请查看 https://cloud.tencent.com/document/product/436/7738. + 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 - cos php SDK 中创建 Bucket的方法具体步骤如下: + */ + 'DeleteBucketReplication' => array( + 'httpMethod' => 'DELETE', + 'uri' => '/{Bucket}?replication', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'DeleteBucketReplicationOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'GetObject' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetObjectOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'), + 'IfMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'If-Match'), + 'IfModifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer'), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'If-Modified-Since'), + 'IfNoneMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'If-None-Match'), + 'IfUnmodifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer'), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'If-Unmodified-Since'), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1), + 'Range' => array( + 'type' => 'string', + 'location' => 'header'), + 'ResponseCacheControl' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-cache-control'), + 'ResponseContentDisposition' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-content-disposition'), + 'ResponseContentEncoding' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-content-encoding'), + 'ResponseContentLanguage' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-content-language'), + 'ResponseContentType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'response-content-type'), + 'ResponseExpires' => array( + 'type' => array( + 'object', + 'string', + 'integer'), + 'format' => 'date-time-http', + 'location' => 'query', + 'sentAs' => 'response-expires'), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'SaveAs' => array( + 'location' => 'response_body')), + 'errorResponses' => array( + array( + 'reason' => 'The specified key does not exist.', + 'class' => 'NoSuchKeyException'))), + /** + 获取 COS 对象的访问权限信息(Access Control List, ACL)的方法. + + Bucket 的持有者可获取该 Bucket 下的某个对象的 ACL 信息,如被授权者以及被授权的信息. ACL 权限包括读、写、读写权限. + + 关于获取 COS 对象的 ACL 接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7744. + + cos php SDK 中获取 COS 对象的 ACL 的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 GetObjectAcl 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 + + 示例: + $result = $cosClient->getObjectAcl(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '11')); + */ + 'GetObjectAcl' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}?acl', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetObjectAclOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + 'errorResponses' => array( + array( + 'reason' => 'The specified key does not exist.', + 'class' => 'NoSuchKeyException', + ), + ), + ), + /** + 获取存储桶(Bucket) 的访问权限信息(Access Control List, ACL)的方法. - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + ACL 权限包括读、写、读写权限. COS 中 Bucket 是有访问权限控制的.可以通过获取 Bucket 的 ACL 表(putBucketACL(PutBucketACLRequest)),来查看那些用户拥有 Bucket 访 问权限. - 2. 调用 CreateBucket 接口发出请求。 + 关于获取 Bucket 的 ACL 接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7733. - 3. 接收该接口的返回数据,若没有抛出异常,则创建成功。 + cos php SDK 中获取 Bucket 的 ACL 的方法具体步骤如下: - 示例: - $result = $cosClient->createBucket(array('Bucket' => 'testbucket-1252448703')); - */ - 'CreateBucket' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'CreateBucketOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'CreateBucketConfiguration')), - 'parameters' => array( - 'ACL' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-acl'), - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri')), - 'errorResponses' => array( - array( - 'reason' => 'The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.', - 'class' => 'BucketAlreadyExistsException'))), - /** - 完成整个分块上传的方法. + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 当使用分块上传(uploadPart(UploadPartRequest))完对象的所有块以后,必须调用该 completeMultiUpload(CompleteMultiUploadRequest) 或者 completeMultiUploadAsync(CompleteMultiUploadRequest, CosXmlResultListener) 来完成整个文件的分块上传.且在该请求的 Body 中需要给出每一个块的 PartNumber 和 ETag,用来校验块的准 确性. + 2. 调用 GetBucketACL 接口发出请求。 - 分块上传适合于在弱网络或高带宽环境下上传较大的对象.SDK 支持自行切分对象并分别调用uploadPart(UploadPartRequest)上传各 个分块. + 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 - 关于分块上传的描述,请查看 https://cloud.tencent.com/document/product/436/14112. - 关于完成整个分片上传接口的描述,请查看 https://cloud.tencent.com/document/product/436/7742. + 示例: + $result = $cosClient->GetBucketAcl(array( + 'Bucket' => 'testbucket-1252448703',)); + */ + 'GetBucketAcl' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?acl', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetBucketAclOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml'))), + /** + 查询存储桶(Bucket) 跨域访问配置信息的方法. - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + COS 支持查询当前 Bucket 跨域访问配置信息,以确定是否配置跨域信息.当跨域访问配置不存在时,请求 返回403 Forbidden. 跨域访问配置可以通过 putBucketCORS(PutBucketCORSRequest) 或者 putBucketCORSAsync(PutBucketCORSRequest, CosXmlResultListener) 方法来开启 Bucket 的跨域访问 支持. - 2. 调用 CompleteMultipartUpload 接口发出请求。 + 关于查询 Bucket 跨域访问配置信息接口的具体描述, 请查看 https://cloud.tencent.com/document/product/436/8274. - 3. 接收该接口的返回数据,若没有抛出异常,则操作成功。 + cos php SDK 中查询 Bucket 跨域访问配置信息的方法具体步骤如下: - */ - 'CompleteMultipartUpload' => array( - 'httpMethod' => 'POST', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'CompleteMultipartUploadOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'CompleteMultipartUpload')), - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1), - 'Parts' => array( - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true), - 'items' => array( - 'name' => 'CompletedPart', - 'type' => 'object', - 'sentAs' => 'Part', - 'properties' => array( - 'ETag' => array( - 'type' => 'string'), - 'PartNumber' => array( - 'type' => 'numeric')))), - 'UploadId' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId'), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml'))), - 'CreateMultipartUpload' => array( - 'httpMethod' => 'POST', - 'uri' => '/{Bucket}{/Key*}?uploads', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'CreateMultipartUploadOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'CreateMultipartUploadRequest')), - 'parameters' => array( - 'ACL' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-acl', - ), - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'CacheControl' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Cache-Control', - ), - 'ContentDisposition' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Disposition', - ), - 'ContentEncoding' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Encoding', - ), - 'ContentLanguage' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Language', - ), - 'ContentType' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type', - ), - 'Expires' => array( - 'type' => array( - 'object', - 'string', - 'integer', - ), - 'format' => 'date-time-http', - 'location' => 'header', - ), - 'GrantFullControl' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-full-control', - ), - 'GrantRead' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-read', - ), - 'GrantReadACP' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-read-acp', - ), - 'GrantWriteACP' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-write-acp', - ), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1, - ), - 'Metadata' => array( - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-cos-meta-', - 'additionalProperties' => array( - 'type' => 'string', - ), - ), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'StorageClass' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-storage-class', - ), - 'WebsiteRedirectLocation' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-website-redirect-location', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKey' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'SSEKMSKeyId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ), - 'ACP' => array( - 'type' => 'object', - 'additionalProperties' => true, - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', - ))), - 'CopyObject' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'CopyObjectOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'CopyObjectRequest', - ), - ), - 'parameters' => array( - 'ACL' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-acl', - ), - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'CacheControl' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Cache-Control', - ), - 'ContentDisposition' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Disposition', - ), - 'ContentEncoding' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Encoding', - ), - 'ContentLanguage' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Language', - ), - 'ContentType' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type', - ), - 'CopySource' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source', - ), - 'CopySourceIfMatch' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-if-match', - ), - 'CopySourceIfModifiedSince' => array( - 'type' => array( - 'object', - 'string', - 'integer', - ), - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-if-modified-since', - ), - 'CopySourceIfNoneMatch' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-if-none-match', - ), - 'CopySourceIfUnmodifiedSince' => array( - 'type' => array( - 'object', - 'string', - 'integer', - ), - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-if-unmodified-since', - ), - 'Expires' => array( - 'type' => array( - 'object', - 'string', - 'integer', - ), - 'format' => 'date-time-http', - 'location' => 'header', - ), - 'GrantFullControl' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-full-control', - ), - 'GrantRead' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-read', - ), - 'GrantReadACP' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-read-acp', - ), - 'GrantWriteACP' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-write-acp', - ), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1, - ), - 'Metadata' => array( - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-cos-meta-', - 'additionalProperties' => array( - 'type' => 'string', - ), - ), - 'MetadataDirective' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-metadata-directive', - ), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'StorageClass' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-storage-class', - ), - 'WebsiteRedirectLocation' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-website-redirect-location', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKey' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key', - ), - 'CopySourceSSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-algorithm', - ), - 'CopySourceSSECustomerKey' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-key', - ), - 'CopySourceSSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-key-MD5', - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ), - 'ACP' => array( - 'type' => 'object', - 'additionalProperties' => true, - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', - ), + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 GetBucketCORS 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 + + + 示例: + $result = $cosClient->getBucketCors(array( + // Bucket is required + 'Bucket' => 'testbucket-1252448703', + )); + */ + 'GetBucketCors' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?cors', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetBucketCorsOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', ), - 'errorResponses' => array( - array( - 'reason' => 'The source object of the COPY operation is not in the active tier.', - 'class' => 'ObjectNotInActiveTierErrorException', - ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', ), ), - /** - 删除存储桶 (Bucket)的方法. - - COS 目前仅支持删除已经清空的 Bucket,如果 Bucket 中仍有对象,将会删除失败. 因此,在执行删除 Bucket 前,需确保 Bucket 内已经没有对象. 删除 Bucket 时,还需要确保操作的身份已被授权该操作,并确认 传入了正确的存储桶名称和地域参数, 请参阅 putBucket(PutBucketRequest). + ), + /** + 查询存储桶(Bucket) 的生命周期配置的方法. - 关于删除 Bucket 的描述,请查看 https://cloud.tencent.com/document/product/436/14105. + COS 支持以生命周期配置的方式来管理 Bucket 中对象的生命周期,生命周期配置包含一个或多个将 应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作),请参阅 putBucketLifecycle(PutBucketLifecycleRequest). - 关于删除 Bucket 接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7732. + 关于查询 Bucket 的生命周期配置接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8278. - cos php SDK 中删除 Bucket 的方法具体步骤如下: + cos php SDK 中查询 Bucket 的生命周期配置的方法具体步骤如下: - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 2. 调用 DeleteBucket 接口发出请求。 + 2. 调用 GetBucketLifecycle 接口发出请求。 - 3. 接收该接口的返回数据,若没有抛出异常,删除成功。 + 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 - 示例: - $result = $cosClient->deleteBucket(array( - 'Bucket' => 'testbucket-1252448703')); - print_r($result); - */ - 'DeleteBucket' => array( - 'httpMethod' => 'DELETE', - 'uri' => '/{Bucket}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'DeleteBucketOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'))), - /** - 删除跨域访问配置信息的方法. - 若是 Bucket 不需要支持跨域访问配置,可以调用此接口删除已配置的跨域访问信息. 跨域访问配置可以通过 putBucketCORS(PutBucketCORSRequest) 或者 putBucketCORSAsync(PutBucketCORSRequest, CosXmlResultListener) 方法来开启 Bucket 的跨域访问 支持. + 示例: + $result = $cosClient->getBucketLifecycle(array( + 'Bucket' => 'testbucket-1252448703', + )); + */ + 'GetBucketLifecycle' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?lifecycle', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetBucketLifecycleOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + /** + 获取存储桶(Bucket)版本控制信息的方法. + + 通过查询版本控制信息,可以得知该 Bucket 的版本控制功能是处于禁用状态还是启用状态(Enabled 或者 Suspended), 开启版本控制功能,可参考putBucketVersioning(PutBucketVersioningRequest). + + cos php SDK 中获取 Bucket 版本控制信息的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 GetBucketVersioning 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 + + 示例: + $result = $cosClient->getBucketVersioning( + array('Bucket' => 'lewzylu02-1252448703')); + */ + 'GetBucketVersioning' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?versioning', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetBucketVersioningOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ), + /** + 获取跨区域复制配置信息的方法. - 关于删除跨域访问配置信息接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8283. + 跨区域复制是支持不同区域 Bucket 自动复制对象, 请查阅putBucketReplication(PutBucketReplicationRequest). - cos php SDK 中删除跨域访问配置信息的方法具体步骤如下: + cos php SDK 中获取跨区域复制配置信息的方法具体步骤如下: - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 2. 调用 DeleteBucketCORS 接口发出请求。 + 2. 调用 GetBucketReplication 接口发出请求。 - 3. 接收该接口的返回数据,若没有抛出异常,删除成功。 + 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 - 示例: - $result = $cosClient->deleteBucketCors(array( - // Bucket is required - 'Bucket' => 'testbucket-1252448703', - )); - */ - 'DeleteBucketCors' => array( - 'httpMethod' => 'DELETE', - 'uri' => '/{Bucket}?cors', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'DeleteBucketCorsOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), + */ + 'GetBucketReplication' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?replication', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetBucketReplicationOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', ), ), - /** - 删除 COS 上单个对象的方法. + ), + /** + 获取存储桶(Bucket) 所在的地域信息的方法. - COS 支持直接删除一个或多个对象,当仅需要删除一个对象时,只需要提供对象的名称(即对象键)即可. + 在创建 Bucket 时,需要指定所属该 Bucket 所属地域信息. - 关于删除 COS 上单个对象的具体描述,请查看 https://cloud.tencent.com/document/product/436/14119. + COS 支持的地域信息,可查看https://cloud.tencent.com/document/product/436/6224. - 关于删除 COS 上单个对象接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7743. + 关于获取 Bucket 所在的地域信息接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8275. - cos php SDK 中删除 COS 上单个对象请求的方法具体步骤如下: + cos php SDK 中获取 Bucket 所在的地域信息的方法具体步骤如下: - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 2. 调用 DeleteObject 接口发出请求。 + 2. 调用 GetBucketLocation 接口发出请求。 - 3. 接收该接口的返回数据,若没有抛出异常,则删除成功。 + 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 - 示例: - $result = $cosClient->deleteObject(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '111.txt', - 'VersionId' => 'string')); - */ - 'DeleteObject' => array( - 'httpMethod' => 'DELETE', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'DeleteObjectOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1), - 'MFA' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-mfa', - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId', - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ),)), - /** - 批量删除 COS 对象的方法. - COS 支持批量删除指定 Bucket 中 对象,单次请求最大支持批量删除 1000 个 对象. 请求中删除一个不存在的对象,仍然认为是成功的. 对于响应结果,COS提供 Verbose 和 Quiet 两种模式:Verbose 模式将返回每个对象的删除结果;Quiet 模式只返回删除报错的对象信息. 请求必须携带 Content-MD5 用来校验请求Body 的完整性. + 示例: + $result = $cosClient->getBucketLocation(array( + 'Bucket' => 'testbucket-1252448703', + )); + */ + 'GetBucketLocation' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?location', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'GetBucketLocationOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + ), + ), + 'UploadPart' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'UploadPartOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'UploadPartRequest')), + 'parameters' => array( + 'Body' => array( + 'type' => array( + 'string', + 'object'), + 'location' => 'body'), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'), + 'ContentLength' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'Content-Length'), + 'ContentMD5' => array( + 'type' => array( + 'string', + 'boolean'), + 'location' => 'header', + 'sentAs' => 'Content-MD5'), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1), + 'PartNumber' => array( + 'required' => true, + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'partNumber'), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId'), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ))), + 'PutObject' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'PutObjectOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'PutObjectRequest')), + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-acl'), + 'Body' => array( + 'type' => array( + 'string', + 'object'), + 'location' => 'body'), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control'), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition'), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding'), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language'), + 'ContentLength' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'Content-Length'), + 'ContentMD5' => array( + 'type' => array( + 'string', + 'boolean'), + 'location' => 'header', + 'sentAs' => 'Content-MD5'), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type'), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-cos-meta-', + 'additionalProperties' => array( + 'type' => 'string') + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-storage-class', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-website-redirect-location', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ))), + /** + 设置 COS 对象的访问权限信息(Access Control List, ACL)的方法. + + ACL权限包括读、写、读写权限. COS 对象的 ACL 可以通过 header头部:"x-cos-acl","x-cos-grant-read","x-cos-grant-write", "x-cos-grant-full-control" 传入 ACL 信息,或者通过 Body 以 XML 格式传入 ACL 信息.这两种方式只 能选择其中一种,否则引起冲突. 传入新的 ACL 将覆盖原有 ACL信息.ACL策略数上限1000,建议用户不要每个上传文件都设置 ACL. - 关于批量删除 COS 对象接口的描述,请查看https://cloud.tencent.com/document/product/436/8289. + 关于设置 COS 对象的ACL接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7748. - cos php SDK 中批量删除 COS 对象的方法具体步骤如下: + cos PHP SDK 中设置 COS 对象的 ACL 的方法具体步骤如下: - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 2. 调用 DeleteObjects 接口发出请求。 + 2. 调用 PutObjectAcl 对象中的方法发出请求。 - 3. 接收该接口的返回数据,若没有抛出异常,则删除成功。 + 3. 接收该接口的返回数据,若没有抛出异常,则设置成功。 - 示例: - $result = $cosClient->deleteObjects(array( - // Bucket is required - 'Bucket' => 'testbucket-1252448703', - // Objects is required - 'Objects' => array( - array( - // Key is required - 'Key' => 'string', - 'VersionId' => 'string', - ), - // ... repeated + 示例: + $cosClient->PutObjectAcl(array( + 'Bucket' => $this->bucket, + 'Key' => '11', + 'Grants' => array( + array( + 'Grantee' => array( + 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', + 'ID' => 'qcs::cam::uin/327874225:uin/327874225', + 'Type' => 'CanonicalUser', + ), + 'Permission' => 'FULL_CONTROL', + ), + // ... repeated + ), + 'Owner' => array( + 'DisplayName' => 'qcs::cam::uin/2779643970:uin/2779643970', + 'ID' => 'qcs::cam::uin/2779643970:uin/2779643970', + ))); + */ + 'PutObjectAcl' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}?acl', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'PutObjectAclOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'AccessControlPolicy', + ), ), - )); - */ - 'DeleteObjects' => array( - 'httpMethod' => 'POST', - 'uri' => '/{Bucket}?delete', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'DeleteObjectsOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'Delete', - ), - 'contentMd5' => true, + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-acl', ), - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'Objects' => array( - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'ObjectIdentifier', - 'type' => 'object', - 'sentAs' => 'Object', - 'properties' => array( - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'minLength' => 1, - ), - 'VersionId' => array( - 'type' => 'string', - ), + 'Grants' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'AccessControlList', + 'items' => array( + 'name' => 'Grant', + 'type' => 'object', + 'properties' => array( + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string'), + 'ID' => array( + 'type' => 'string'), + 'Type' => array( + 'type' => 'string', + 'sentAs' => 'xsi:type', + 'data' => array( + 'xmlAttribute' => true, + 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance')), + 'URI' => array( + 'type' => 'string') )), + 'Permission' => array( + 'type' => 'string', ), ), ), - 'Quiet' => array( - 'type' => 'boolean', - 'format' => 'boolean-string', - 'location' => 'xml', - ), - 'MFA' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-mfa', - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', + ), + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), ), ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-read-acp', + ), + 'GrantWrite' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-write', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-write-acp', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), ), - /** - 删除存储桶(Bucket) 的生命周期配置的方法. - - COS 支持删除已配置的 Bucket 的生命周期列表. COS 支持以生命周期配置的方式来管理 Bucket 中 对象的生命周期,生命周期配置包含一个或多个将 应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作),请参阅 putBucketLifecycle(PutBucketLifecycleRequest). - - 关于删除 Bucket 的生命周期配置接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8284. - - cos php SDK 中删除 Bucket 的生命周期配置的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 DeleteBucketLifeCycle 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,删除成功。 - - 示例: - $result = $cosClient->deleteBucketLifecycle(array( - // Bucket is required - 'Bucket' =>'testbucket-1252448703', - )); - */ - 'DeleteBucketLifecycle' => array( - 'httpMethod' => 'DELETE', - 'uri' => '/{Bucket}?lifecycle', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'DeleteBucketLifecycleOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), + 'errorResponses' => array( + array( + 'reason' => 'The specified key does not exist.', + 'class' => 'NoSuchKeyException', ), ), - /** - 删除跨区域复制配置的方法. + ), + /** + 设置存储桶(Bucket) 的访问权限(Access Control List, ACL)的方法. - 当不需要进行跨区域复制时,可以删除 Bucket 的跨区域复制配置. 跨区域复制,可以查阅putBucketReplication(PutBucketReplicationRequest) + ACL 权限包括读、写、读写权限. 写入 Bucket 的 ACL 可以通过 header头部:"x-cos-acl","x-cos-grant-read","x-cos-grant-write", "x-cos-grant-full-control" 传入 ACL 信息,或者通过 Body 以 XML 格式传入 ACL 信息.这两种方式只 能选择其中一种,否则引起冲突. 传入新的 ACL 将覆盖原有 ACL信息. 私有 Bucket 可以下可以给某个文件夹设置成公有,那么该文件夹下的文件都是公有;但是把文件夹设置成私有后,在该文件夹下的文件设置 的公有属性,不会生效. - cos php SDK 中删除跨区域复制配置的方法具体步骤如下: + 关于设置 Bucket 的ACL接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7737. - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + cos php SDK 中设置 Bucket 的ACL的方法具体步骤如下: - 2. 调用 DeleteBucketReplication 接口发出请求。 + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 + 2. 调用 PutObjectAcl 接口发出请求。 - */ - 'DeleteBucketReplication' => array( - 'httpMethod' => 'DELETE', - 'uri' => '/{Bucket}?replication', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'DeleteBucketReplicationOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), + 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 + + + 示例: + $result = $cosClient->PutObjectAcl(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '111', + 'Grants' => array( + array( + 'Grantee' => array( + 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', + 'ID' => 'qcs::cam::uin/327874225:uin/327874225', + 'Type' => 'CanonicalUser', + ), + 'Permission' => 'FULL_CONTROL', + ), + // ... repeated + ), + 'Owner' => array( + 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', + 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', + ),)); + */ + 'PutBucketAcl' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?acl', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'PutBucketAclOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'AccessControlPolicy', ), ), - 'GetObject' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'GetObjectOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'), - 'IfMatch' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'If-Match'), - 'IfModifiedSince' => array( - 'type' => array( - 'object', - 'string', - 'integer'), - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'If-Modified-Since'), - 'IfNoneMatch' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'If-None-Match'), - 'IfUnmodifiedSince' => array( - 'type' => array( - 'object', - 'string', - 'integer'), - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'If-Unmodified-Since'), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1), - 'Range' => array( - 'type' => 'string', - 'location' => 'header'), - 'ResponseCacheControl' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-cache-control'), - 'ResponseContentDisposition' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-disposition'), - 'ResponseContentEncoding' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-encoding'), - 'ResponseContentLanguage' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-language'), - 'ResponseContentType' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-type'), - 'ResponseExpires' => array( - 'type' => array( - 'object', - 'string', - 'integer'), - 'format' => 'date-time-http', - 'location' => 'query', - 'sentAs' => 'response-expires'), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId', - ), - 'SaveAs' => array( - 'location' => 'response_body')), - 'errorResponses' => array( - array( - 'reason' => 'The specified key does not exist.', - 'class' => 'NoSuchKeyException'))), - /** - 获取 COS 对象的访问权限信息(Access Control List, ACL)的方法. - - Bucket 的持有者可获取该 Bucket 下的某个对象的 ACL 信息,如被授权者以及被授权的信息. ACL 权限包括读、写、读写权限. - - 关于获取 COS 对象的 ACL 接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7744. - - cos php SDK 中获取 COS 对象的 ACL 的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 GetObjectAcl 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 - - 示例: - $result = $cosClient->getObjectAcl(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '11')); - */ - 'GetObjectAcl' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}{/Key*}?acl', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'GetObjectAclOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1, - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId', - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', + 'parameters' => array( + 'ACL' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-acl', + ), + 'Grants' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'AccessControlList', + 'items' => array( + 'name' => 'Grant', + 'type' => 'object', + 'properties' => array( + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'EmailAddress' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + 'Type' => array( + 'required' => true, + 'type' => 'string', + 'sentAs' => 'xsi:type', + 'data' => array( + 'xmlAttribute' => true, + 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance', + ), + ), + 'URI' => array( + 'type' => 'string', + ), + ), + ), + 'Permission' => array( + 'type' => 'string', + ), + ), ), ), - 'errorResponses' => array( - array( - 'reason' => 'The specified key does not exist.', - 'class' => 'NoSuchKeyException', + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), ), ), + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'GrantFullControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-full-control', + ), + 'GrantRead' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-read', + ), + 'GrantReadACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-read-acp', + ), + 'GrantWrite' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-write', + ), + 'GrantWriteACP' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-grant-write-acp', + ), + 'ACP' => array( + 'type' => 'object', + 'additionalProperties' => true, + ), ), - /** - 获取存储桶(Bucket) 的访问权限信息(Access Control List, ACL)的方法. - - ACL 权限包括读、写、读写权限. COS 中 Bucket 是有访问权限控制的.可以通过获取 Bucket 的 ACL 表(putBucketACL(PutBucketACLRequest)),来查看那些用户拥有 Bucket 访 问权限. - - 关于获取 Bucket 的 ACL 接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7733. - - cos php SDK 中获取 Bucket 的 ACL 的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 GetBucketACL 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 - - - 示例: - $result = $cosClient->GetBucketAcl(array( - 'Bucket' => 'testbucket-1252448703',)); - */ - 'GetBucketAcl' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}?acl', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'GetBucketAclOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml'))), - /** - 查询存储桶(Bucket) 跨域访问配置信息的方法. + ), + /** + 设置存储桶(Bucket) 的跨域配置信息的方法. - COS 支持查询当前 Bucket 跨域访问配置信息,以确定是否配置跨域信息.当跨域访问配置不存在时,请求 返回403 Forbidden. 跨域访问配置可以通过 putBucketCORS(PutBucketCORSRequest) 或者 putBucketCORSAsync(PutBucketCORSRequest, CosXmlResultListener) 方法来开启 Bucket 的跨域访问 支持. + 跨域访问配置的预请求是指在发送跨域请求之前会发送一个 OPTIONS 请求并带上特定的来源域,HTTP 方 法和 header 信息等给 COS,以决定是否可以发送真正的跨域请求. 当跨域访问配置不存在时,请求返回403 Forbidden. - 关于查询 Bucket 跨域访问配置信息接口的具体描述, 请查看 https://cloud.tencent.com/document/product/436/8274. + 默认情况下,Bucket的持有者可以直接配置 Bucket的跨域信息 ,Bucket 持有者也可以将配置权限授予其他用户.新的配置是覆盖当前的所有配置信 息,而不是新增一条配置.可以通过传入 XML 格式的配置文件来实现配置,文件大小限制为64 KB. - cos php SDK 中查询 Bucket 跨域访问配置信息的方法具体步骤如下: + 关于设置 Bucket 的跨域配置信息接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/8279. - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + cos php SDK 中设置 Bucket 的跨域配置信息的方法具体步骤如下: - 2. 调用 GetBucketCORS 接口发出请求。 + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 + 2. 调用 PutBucketCORS 接口发出请求。 + 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 - 示例: - $result = $cosClient->getBucketCors(array( - // Bucket is required - 'Bucket' => 'testbucket-1252448703', - )); - */ - 'GetBucketCors' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}?cors', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'GetBucketCorsOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', + 示例: + $result = $cosClient->putBucketCors(array( + // Bucket is required + 'Bucket' => 'testbucket-1252448703', + // CORSRules is required + 'CORSRules' => array( + array( + 'ID' => '1234', + 'AllowedHeaders' => array('*'), + // AllowedMethods is required + 'AllowedMethods' => array('PUT'), + // AllowedOrigins is required + 'AllowedOrigins' => array('http://www.qq.com', ), + ), + // ... repeated + ), + )); + */ + 'PutBucketCors' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?cors', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'PutBucketCorsOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'CORSConfiguration', + ), + 'contentMd5' => true, + ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'CORSRules' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CORSRule', + 'type' => 'object', + 'sentAs' => 'CORSRule', + 'properties' => array( + 'ID' => array( + 'type' => 'string', + ), + 'AllowedHeaders' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedHeader', + 'type' => 'string', + 'sentAs' => 'AllowedHeader', + ), + ), + 'AllowedMethods' => array( + 'required' => true, + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedMethod', + 'type' => 'string', + 'sentAs' => 'AllowedMethod', + ), + ), + 'AllowedOrigins' => array( + 'required' => true, + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedOrigin', + 'type' => 'string', + 'sentAs' => 'AllowedOrigin', + ), + ), + 'ExposeHeaders' => array( + 'type' => 'array', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ExposeHeader', + 'type' => 'string', + 'sentAs' => 'ExposeHeader', + ), + ), + 'MaxAgeSeconds' => array( + 'type' => 'numeric', + ), + ), ), ), ), - /** - 查询存储桶(Bucket) 的生命周期配置的方法. + ), + /** + 设置存储桶(Bucket) 生命周期配置的方法. - COS 支持以生命周期配置的方式来管理 Bucket 中对象的生命周期,生命周期配置包含一个或多个将 应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作),请参阅 putBucketLifecycle(PutBucketLifecycleRequest). + COS 支持以生命周期配置的方式来管理 Bucket 中对象的生命周期. 如果该 Bucket 已配置生命周期,新的配置的同时则会覆盖原有的配置. 生命周期配置包含一个或多个将应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作)。这些操作分为以下两种:转换操作,过期操作. - 关于查询 Bucket 的生命周期配置接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8278. + 转换操作,定义对象转换为另一个存储类的时间(例如,您可以选择在对象创建 30 天后将其转换为低频存储类别,同 时也支持将数据沉降到归档存储类别. - cos php SDK 中查询 Bucket 的生命周期配置的方法具体步骤如下: + 过期操作,指定 Object 的过期时间,COS 将会自动为用户删除过期的 Object. - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + 关于Bucket 生命周期配置接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/8280 - 2. 调用 GetBucketLifecycle 接口发出请求。 + cos php SDK 中Bucket 生命周期配置的方法具体步骤如下: - 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + 2. 调用 PutBucketLifecycle 接口发出请求。 - 示例: - $result = $cosClient->getBucketLifecycle(array( - 'Bucket' => 'testbucket-1252448703', - )); - */ - 'GetBucketLifecycle' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}?lifecycle', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'GetBucketLifecycleOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', - ), + 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 + + 示例: + $result = $cosClient->putBucketLifecycle(array( + // Bucket is required + 'Bucket' => 'lewzylu06-1252448703', + // Rules is required + 'Rules' => array( + array( + 'Expiration' => array( + 'Days' => 1000, + ), + 'ID' => 'id1', + 'Filter' => array( + 'Prefix' => 'documents/' + ), + // Status is required + 'Status' => 'Enabled', + 'Transitions' => array( + array( + 'Days' => 200, + 'StorageClass' => 'NEARLINE'), + ), + // ... repeated + ), + ))); + */ + 'PutBucketLifecycle' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?lifecycle', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'PutBucketLifecycleOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'LifecycleConfiguration', ), + 'contentMd5' => true, ), - /** - 获取存储桶(Bucket)版本控制信息的方法. - - 通过查询版本控制信息,可以得知该 Bucket 的版本控制功能是处于禁用状态还是启用状态(Enabled 或者 Suspended), 开启版本控制功能,可参考putBucketVersioning(PutBucketVersioningRequest). - - cos php SDK 中获取 Bucket 版本控制信息的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 GetBucketVersioning 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 - - 示例: - $result = $cosClient->getBucketVersioning( - array('Bucket' => 'lewzylu02-1252448703')); - */ - 'GetBucketVersioning' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}?versioning', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'GetBucketVersioningOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'Rules' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Rule', + 'type' => 'object', + 'sentAs' => 'Rule', + 'properties' => array( + 'Expiration' => array( + 'type' => 'object', + 'properties' => array( + 'Date' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time', + ), + 'Days' => array( + 'type' => 'numeric', + ), + ), + ), + 'ID' => array( + 'type' => 'string', + ), + 'Filter' => array( + 'type' => 'object', + 'require' => true, + 'properties' => array( + 'Prefix' => array( + 'type' => 'string', + 'require' => true, + ), + 'Tag' => array( + 'type' => 'object', + 'require' => true, + 'properties' => array( + 'Key' => array( + 'type' => 'string' + ), + 'Value' => array( + 'type' => 'string' + ), + ) + ) + ), + ), + 'Status' => array( + 'required' => true, + 'type' => 'string', + ), + 'Transitions' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Transition', + 'type' => 'object', + 'sentAs' => 'Transition', + 'properties' => array( + 'Date' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time', + ), + 'Days' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + )))), + 'NoncurrentVersionTransition' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + ), + ), + 'NoncurrentVersionExpiration' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + ), + ), + ), ), ), ), - /** - 获取跨区域复制配置信息的方法. + ), + /** + 存储桶(Bucket)版本控制的方法. - 跨区域复制是支持不同区域 Bucket 自动复制对象, 请查阅putBucketReplication(PutBucketReplicationRequest). + 版本管理功能一经打开,只能暂停,不能关闭. 通过版本控制,可以在一个 Bucket 中保留一个对象的多个版本. 版本控制可以防止意外覆盖和删除对象,以便检索早期版本的对象. 默认情况下,版本控制功能处于禁用状态,需要主动去启用或者暂停(Enabled 或者 Suspended). - cos php SDK 中获取跨区域复制配置信息的方法具体步骤如下: + cos php SDK 中 Bucket 版本控制启用或者暂停的方法具体步骤如下: - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 2. 调用 GetBucketReplication 接口发出请求。 + 2. 调用 PutBucketVersioning 接口发出请求。 - 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 + 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 - */ - 'GetBucketReplication' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}?replication', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'GetBucketReplicationOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', - ), + 示例: + $result = $cosClient->putBucketVersioning( + array('Bucket' => 'testbucket-1252448703', + 'Status' => 'Enabled')); + */ + 'PutBucketVersioning' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?versioning', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'PutBucketVersioningOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'VersioningConfiguration', ), ), - /** - 获取存储桶(Bucket) 所在的地域信息的方法. - - 在创建 Bucket 时,需要指定所属该 Bucket 所属地域信息. - - COS 支持的地域信息,可查看https://cloud.tencent.com/document/product/436/6224. + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'MFA' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-mfa', + ), + 'MFADelete' => array( + 'type' => 'string', + 'location' => 'xml', + 'sentAs' => 'MfaDelete', + ), + 'Status' => array( + 'type' => 'string', + 'location' => 'xml', + ), + ), + ), + /** + 配置跨区域复制的方法. - 关于获取 Bucket 所在的地域信息接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8275. + 跨区域复制是支持不同区域 Bucket 自动异步复制对象.注意,不能是同区域的 Bucket, 且源 Bucket 和目 标 Bucket 必须已启用版本控制putBucketVersioning(PutBucketVersioningRequest). - cos php SDK 中获取 Bucket 所在的地域信息的方法具体步骤如下: + cos php SDK 中配置跨区域复制的方法具体步骤如下: - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - 2. 调用 GetBucketLocation 接口发出请求。 + 2. 调用 PutBucketRelication 接口发出请求。 - 3. 接收该接口的返回数据,若没有抛出异常,则获取成功。 + 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 + 示例: - 示例: - $result = $cosClient->getBucketLocation(array( - 'Bucket' => 'testbucket-1252448703', - )); - */ - 'GetBucketLocation' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}?location', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'GetBucketLocationOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), + */ + 'PutBucketReplication' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}?replication', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'PutBucketReplicationOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'ReplicationConfiguration', ), + 'contentMd5' => true, ), - 'UploadPart' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'UploadPartOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'UploadPartRequest')), - 'parameters' => array( - 'Body' => array( - 'type' => array( - 'string', - 'object'), - 'location' => 'body'), - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'), - 'ContentLength' => array( - 'type' => 'numeric', - 'location' => 'header', - 'sentAs' => 'Content-Length'), - 'ContentMD5' => array( - 'type' => array( - 'string', - 'boolean'), - 'location' => 'header', - 'sentAs' => 'Content-MD5'), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1), - 'PartNumber' => array( - 'required' => true, - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'partNumber'), - 'UploadId' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId'), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKey' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ))), - 'PutObject' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'PutObjectOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'PutObjectRequest')), - 'parameters' => array( - 'ACL' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-acl'), - 'Body' => array( - 'type' => array( - 'string', - 'object'), - 'location' => 'body'), - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'), - 'CacheControl' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Cache-Control'), - 'ContentDisposition' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Disposition'), - 'ContentEncoding' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Encoding'), - 'ContentLanguage' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Language'), - 'ContentLength' => array( - 'type' => 'numeric', - 'location' => 'header', - 'sentAs' => 'Content-Length'), - 'ContentMD5' => array( - 'type' => array( - 'string', - 'boolean'), - 'location' => 'header', - 'sentAs' => 'Content-MD5'), - 'ContentType' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type'), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1), - 'Metadata' => array( - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-cos-meta-', - 'additionalProperties' => array( - 'type' => 'string') - ), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'StorageClass' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-storage-class', - ), - 'WebsiteRedirectLocation' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-website-redirect-location', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKey' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'SSEKMSKeyId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ), - 'ACP' => array( - 'type' => 'object', - 'additionalProperties' => true, - ))), - /** - 设置 COS 对象的访问权限信息(Access Control List, ACL)的方法. - - ACL权限包括读、写、读写权限. COS 对象的 ACL 可以通过 header头部:"x-cos-acl","x-cos-grant-read","x-cos-grant-write", "x-cos-grant-full-control" 传入 ACL 信息,或者通过 Body 以 XML 格式传入 ACL 信息.这两种方式只 能选择其中一种,否则引起冲突. 传入新的 ACL 将覆盖原有 ACL信息.ACL策略数上限1000,建议用户不要每个上传文件都设置 ACL. - - 关于设置 COS 对象的ACL接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7748. - - cos PHP SDK 中设置 COS 对象的 ACL 的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 PutObjectAcl 对象中的方法发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,则设置成功。 - - 示例: - $cosClient->PutObjectAcl(array( - 'Bucket' => $this->bucket, - 'Key' => '11', - 'Grants' => array( - array( - 'Grantee' => array( - 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', - 'ID' => 'qcs::cam::uin/327874225:uin/327874225', - 'Type' => 'CanonicalUser', - ), - 'Permission' => 'FULL_CONTROL', - ), - // ... repeated - ), - 'Owner' => array( - 'DisplayName' => 'qcs::cam::uin/2779643970:uin/2779643970', - 'ID' => 'qcs::cam::uin/2779643970:uin/2779643970', - ))); - */ - 'PutObjectAcl' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}{/Key*}?acl', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'PutObjectAclOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'AccessControlPolicy', - ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', ), - 'parameters' => array( - 'ACL' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-acl', - ), - 'Grants' => array( - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => array( - 'name' => 'Grant', - 'type' => 'object', - 'properties' => array( - 'Grantee' => array( - 'type' => 'object', - 'properties' => array( - 'DisplayName' => array( - 'type' => 'string'), - 'ID' => array( - 'type' => 'string'), - 'Type' => array( - 'type' => 'string', - 'sentAs' => 'xsi:type', - 'data' => array( - 'xmlAttribute' => true, - 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance')), - 'URI' => array( - 'type' => 'string') )), - 'Permission' => array( - 'type' => 'string', - ), - ), - ), - ), - 'Owner' => array( + 'Role' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'xml', + ), + 'Rules' => array( + 'required' => true, + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ReplicationRule', 'type' => 'object', - 'location' => 'xml', + 'sentAs' => 'Rule', 'properties' => array( - 'DisplayName' => array( - 'type' => 'string', - ), 'ID' => array( 'type' => 'string', ), - ), - ), - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'GrantFullControl' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-full-control', - ), - 'GrantRead' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-read', - ), - 'GrantReadACP' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-read-acp', - ), - 'GrantWrite' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-write', - ), - 'GrantWriteACP' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-write-acp', - ), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1, - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ), - 'ACP' => array( - 'type' => 'object', - 'additionalProperties' => true, - ), - ), - 'errorResponses' => array( - array( - 'reason' => 'The specified key does not exist.', - 'class' => 'NoSuchKeyException', - ), - ), - ), - /** - 设置存储桶(Bucket) 的访问权限(Access Control List, ACL)的方法. - - ACL 权限包括读、写、读写权限. 写入 Bucket 的 ACL 可以通过 header头部:"x-cos-acl","x-cos-grant-read","x-cos-grant-write", "x-cos-grant-full-control" 传入 ACL 信息,或者通过 Body 以 XML 格式传入 ACL 信息.这两种方式只 能选择其中一种,否则引起冲突. 传入新的 ACL 将覆盖原有 ACL信息. 私有 Bucket 可以下可以给某个文件夹设置成公有,那么该文件夹下的文件都是公有;但是把文件夹设置成私有后,在该文件夹下的文件设置 的公有属性,不会生效. - - 关于设置 Bucket 的ACL接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7737. - - cos php SDK 中设置 Bucket 的ACL的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 PutObjectAcl 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 - - - 示例: - $result = $cosClient->PutObjectAcl(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '111', - 'Grants' => array( - array( - 'Grantee' => array( - 'DisplayName' => 'qcs::cam::uin/327874225:uin/327874225', - 'ID' => 'qcs::cam::uin/327874225:uin/327874225', - 'Type' => 'CanonicalUser', - ), - 'Permission' => 'FULL_CONTROL', - ), - // ... repeated - ), - 'Owner' => array( - 'DisplayName' => 'qcs::cam::uin/3210232098:uin/3210232098', - 'ID' => 'qcs::cam::uin/3210232098:uin/3210232098', - ),)); - */ - 'PutBucketAcl' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}?acl', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'PutBucketAclOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'AccessControlPolicy', - ), - ), - 'parameters' => array( - 'ACL' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-acl', - ), - 'Grants' => array( - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => array( - 'name' => 'Grant', - 'type' => 'object', - 'properties' => array( - 'Grantee' => array( - 'type' => 'object', - 'properties' => array( - 'DisplayName' => array( - 'type' => 'string', - ), - 'EmailAddress' => array( - 'type' => 'string', - ), - 'ID' => array( - 'type' => 'string', - ), - 'Type' => array( - 'required' => true, - 'type' => 'string', - 'sentAs' => 'xsi:type', - 'data' => array( - 'xmlAttribute' => true, - 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance', - ), - ), - 'URI' => array( - 'type' => 'string', - ), - ), - ), - 'Permission' => array( - 'type' => 'string', - ), - ), - ), - ), - 'Owner' => array( - 'type' => 'object', - 'location' => 'xml', - 'properties' => array( - 'DisplayName' => array( + 'Prefix' => array( + 'required' => true, 'type' => 'string', ), - 'ID' => array( + 'Status' => array( + 'required' => true, 'type' => 'string', ), - ), - ), - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'GrantFullControl' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-full-control', - ), - 'GrantRead' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-read', - ), - 'GrantReadACP' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-read-acp', - ), - 'GrantWrite' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-write', - ), - 'GrantWriteACP' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-grant-write-acp', - ), - 'ACP' => array( - 'type' => 'object', - 'additionalProperties' => true, - ), - ), - ), - /** - 设置存储桶(Bucket) 的跨域配置信息的方法. - - 跨域访问配置的预请求是指在发送跨域请求之前会发送一个 OPTIONS 请求并带上特定的来源域,HTTP 方 法和 header 信息等给 COS,以决定是否可以发送真正的跨域请求. 当跨域访问配置不存在时,请求返回403 Forbidden. - - 默认情况下,Bucket的持有者可以直接配置 Bucket的跨域信息 ,Bucket 持有者也可以将配置权限授予其他用户.新的配置是覆盖当前的所有配置信 息,而不是新增一条配置.可以通过传入 XML 格式的配置文件来实现配置,文件大小限制为64 KB. - - 关于设置 Bucket 的跨域配置信息接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/8279. - - cos php SDK 中设置 Bucket 的跨域配置信息的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 PutBucketCORS 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 - - 示例: - $result = $cosClient->putBucketCors(array( - // Bucket is required - 'Bucket' => 'testbucket-1252448703', - // CORSRules is required - 'CORSRules' => array( - array( - 'ID' => '1234', - 'AllowedHeaders' => array('*'), - // AllowedMethods is required - 'AllowedMethods' => array('PUT'), - // AllowedOrigins is required - 'AllowedOrigins' => array('http://www.qq.com', ), - ), - // ... repeated - ), - )); - */ - 'PutBucketCors' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}?cors', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'PutBucketCorsOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'CORSConfiguration', - ), - 'contentMd5' => true, - ), - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'CORSRules' => array( - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'CORSRule', - 'type' => 'object', - 'sentAs' => 'CORSRule', - 'properties' => array( - 'ID' => array( - 'type' => 'string', - ), - 'AllowedHeaders' => array( - 'type' => 'array', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'AllowedHeader', - 'type' => 'string', - 'sentAs' => 'AllowedHeader', - ), - ), - 'AllowedMethods' => array( - 'required' => true, - 'type' => 'array', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'AllowedMethod', - 'type' => 'string', - 'sentAs' => 'AllowedMethod', - ), - ), - 'AllowedOrigins' => array( - 'required' => true, - 'type' => 'array', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'AllowedOrigin', + 'Destination' => array( + 'required' => true, + 'type' => 'object', + 'properties' => array( + 'Bucket' => array( + 'required' => true, 'type' => 'string', - 'sentAs' => 'AllowedOrigin', ), - ), - 'ExposeHeaders' => array( - 'type' => 'array', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'ExposeHeader', + 'StorageClass' => array( 'type' => 'string', - 'sentAs' => 'ExposeHeader', ), ), - 'MaxAgeSeconds' => array( - 'type' => 'numeric', - ), ), ), ), ), ), - /** - 设置存储桶(Bucket) 生命周期配置的方法. - - COS 支持以生命周期配置的方式来管理 Bucket 中对象的生命周期. 如果该 Bucket 已配置生命周期,新的配置的同时则会覆盖原有的配置. 生命周期配置包含一个或多个将应用于一组对象规则的规则集 (其中每个规则为 COS 定义一个操作)。这些操作分为以下两种:转换操作,过期操作. - - 转换操作,定义对象转换为另一个存储类的时间(例如,您可以选择在对象创建 30 天后将其转换为低频存储类别,同 时也支持将数据沉降到归档存储类别. - - 过期操作,指定 Object 的过期时间,COS 将会自动为用户删除过期的 Object. - - 关于Bucket 生命周期配置接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/8280 - - cos php SDK 中Bucket 生命周期配置的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 PutBucketLifecycle 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 - - 示例: - $result = $cosClient->putBucketLifecycle(array( - // Bucket is required - 'Bucket' => 'lewzylu06-1252448703', - // Rules is required - 'Rules' => array( - array( - 'Expiration' => array( - 'Days' => 1000, - ), - 'ID' => 'id1', - 'Filter' => array( - 'Prefix' => 'documents/' - ), - // Status is required - 'Status' => 'Enabled', - 'Transitions' => array( - array( - 'Days' => 200, - 'StorageClass' => 'NEARLINE'), - ), - // ... repeated + ), + 'RestoreObject' => array( + 'httpMethod' => 'POST', + 'uri' => '/{Bucket}{/Key*}?restore', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'RestoreObjectOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'RestoreRequest', + ), ), - ))); - */ - 'PutBucketLifecycle' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}?lifecycle', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'PutBucketLifecycleOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'LifecycleConfiguration', - ), - 'contentMd5' => true, + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', ), - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'Rules' => array( - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'Rule', - 'type' => 'object', - 'sentAs' => 'Rule', - 'properties' => array( - 'Expiration' => array( - 'type' => 'object', - 'properties' => array( - 'Date' => array( - 'type' => array( - 'object', - 'string', - 'integer', - ), - 'format' => 'date-time', - ), - 'Days' => array( - 'type' => 'numeric', - ), - ), - ), - 'ID' => array( - 'type' => 'string', - ), - 'Filter' => array( - 'type' => 'object', - 'require' => true, - 'properties' => array( - 'Prefix' => array( - 'type' => 'string', - 'require' => true, - ), - ), - ), - 'Status' => array( - 'required' => true, - 'type' => 'string', - ), - 'Transitions' => array( - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'Transition', - 'type' => 'object', - 'sentAs' => 'Transition', - 'properties' => array( - 'Date' => array( - 'type' => array( - 'object', - 'string', - 'integer', - ), - 'format' => 'date-time', - ), - 'Days' => array( - 'type' => 'numeric', - ), - 'StorageClass' => array( - 'type' => 'string', - )))), - 'NoncurrentVersionTransition' => array( - 'type' => 'object', - 'properties' => array( - 'NoncurrentDays' => array( - 'type' => 'numeric', - ), - 'StorageClass' => array( - 'type' => 'string', - ), - ), - ), - 'NoncurrentVersionExpiration' => array( - 'type' => 'object', - 'properties' => array( - 'NoncurrentDays' => array( - 'type' => 'numeric', - ), - ), - ), - ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'Days' => array( + 'required' => true, + 'type' => 'numeric', + 'location' => 'xml', + ), + 'CASJobParameters' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'Tier' => array( + 'type' => 'string', + 'required' => true, ), ), ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ), ), - /** - 存储桶(Bucket)版本控制的方法. - - 版本管理功能一经打开,只能暂停,不能关闭. 通过版本控制,可以在一个 Bucket 中保留一个对象的多个版本. 版本控制可以防止意外覆盖和删除对象,以便检索早期版本的对象. 默认情况下,版本控制功能处于禁用状态,需要主动去启用或者暂停(Enabled 或者 Suspended). - - cos php SDK 中 Bucket 版本控制启用或者暂停的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 PutBucketVersioning 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 - - 示例: - $result = $cosClient->putBucketVersioning( - array('Bucket' => 'testbucket-1252448703', - 'Status' => 'Enabled')); - */ - 'PutBucketVersioning' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}?versioning', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'PutBucketVersioningOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'VersioningConfiguration', - ), + 'errorResponses' => array( + array( + 'reason' => 'This operation is not allowed against this storage tier', + 'class' => 'ObjectAlreadyInActiveTierErrorException', ), - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'MFA' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-mfa', - ), - 'MFADelete' => array( - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'MfaDelete', - ), - 'Status' => array( - 'type' => 'string', - 'location' => 'xml', - ), + ), + ), + /** + 查询存储桶(Bucket)中正在进行中的分块上传对象的方法. + + COS 支持查询 Bucket 中有哪些正在进行中的分块上传对象,单次请求操作最多列出 1000 个正在进行中的 分块上传对象. + + 关于查询 Bucket 中正在进行中的分块上传对象接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7736. + + cos php SDK 中查询 Bucket 中正在进行中的分块上传对象的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 ListParts 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 + + */ + 'ListParts' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'ListPartsOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1), + 'MaxParts' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'max-parts'), + 'PartNumberMarker' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'part-number-marker'), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId'), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml'))), + /** + 查询存储桶(Bucket) 下的部分或者全部对象的方法. + + COS 支持列出指定 Bucket 下的部分或者全部对象. + + 每次默认返回的最大条目数为 1000 条. + + 如果无法一次返回所有的对象,则返回结果中的 IsTruncated 为 true,同时会附加一个 NextMarker 字段,提示下 一个条目的起点. + + 若一次请求,已经返回了全部对象,则不会有 NextMarker 这个字段,同时 IsTruncated 为 false. + + 若把 prefix 设置为某个文件夹的全路径名,则可以列出以此 prefix 为开头的文件,即该文件 夹下递归的所有文件和子文件夹. + + 如果再设置 delimiter 定界符为 “/”,则只列出该文件夹下的文件,子文件夹下递归的文件和文件夹名 将不被列出.而子文件夹名将会以 CommonPrefix 的形式给出. + + 关于查询Bucket 下的部分或者全部对象接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7734. + + cos php SDK 中查询 Bucket 下的部分或者全部对象的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 ListObjects 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,则list成功。 + + 示例: + $result = $cosClient->ListObjects(array( + 'Bucket' => 'testbucket-1252448703')); + */ + 'ListObjects' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'ListObjectsOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri'), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'delimiter'), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'encoding-type'), + 'Marker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'marker'), + 'MaxKeys' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'max-keys'), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'prefix'), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml')), + 'errorResponses' => array( + array( + 'reason' => 'The specified bucket does not exist.', + 'class' => 'NoSuchBucketException'))), + /** + 获取所属账户的所有存储空间列表的方法. + + 通过使用帯 Authorization 签名认证的请求,可以获取签名中 APPID 所属账户的所有存储空间列表 (Bucket list). + + 关于获取所有存储空间列表接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8291. + + cos php SDK 中获取所属账户的所有存储空间列表的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 ListBuckets 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 + + 示例: + $result = $cosClient->listBuckets(); + print_r($result); + */ + 'ListBuckets' => array( + 'httpMethod' => 'GET', + 'uri' => '/', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'ListBucketsOutput', + 'responseType' => 'model', + 'parameters' => array( + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', ), ), - /** - 配置跨区域复制的方法. - - 跨区域复制是支持不同区域 Bucket 自动异步复制对象.注意,不能是同区域的 Bucket, 且源 Bucket 和目 标 Bucket 必须已启用版本控制putBucketVersioning(PutBucketVersioningRequest). - - cos php SDK 中配置跨区域复制的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 PutBucketRelication 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,设置成功。 - - 示例: - - */ - 'PutBucketReplication' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}?replication', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'PutBucketReplicationOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'ReplicationConfiguration', - ), - 'contentMd5' => true, + ), + 'ListObjectVersions' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?versions', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'ListObjectVersionsOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', ), - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'Role' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'xml', - ), - 'Rules' => array( - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'ReplicationRule', - 'type' => 'object', - 'sentAs' => 'Rule', - 'properties' => array( - 'ID' => array( - 'type' => 'string', - ), - 'Prefix' => array( - 'required' => true, - 'type' => 'string', - ), - 'Status' => array( - 'required' => true, - 'type' => 'string', - ), - 'Destination' => array( - 'required' => true, - 'type' => 'object', - 'properties' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - ), - 'StorageClass' => array( - 'type' => 'string', - ), - ), - ), - ), - ), - ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'delimiter', + ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'encoding-type', + ), + 'KeyMarker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'key-marker', + ), + 'MaxKeys' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'max-keys', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'prefix', + ), + 'VersionIdMarker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'version-id-marker', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', ), ), - 'RestoreObject' => array( - 'httpMethod' => 'POST', - 'uri' => '/{Bucket}{/Key*}?restore', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'RestoreObjectOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'RestoreRequest', - ), + ), + 'ListMultipartUploads' => array( + 'httpMethod' => 'GET', + 'uri' => '/{Bucket}?uploads', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'ListMultipartUploadsOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', ), - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1, - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId', - ), - 'Days' => array( - 'required' => true, - 'type' => 'numeric', - 'location' => 'xml', - ), - 'CASJobParameters' => array( - 'type' => 'object', - 'location' => 'xml', - 'properties' => array( - 'Tier' => array( - 'type' => 'string', - 'required' => true, - ), - ), - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'delimiter', ), - 'errorResponses' => array( - array( - 'reason' => 'This operation is not allowed against this storage tier', - 'class' => 'ObjectAlreadyInActiveTierErrorException', - ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'encoding-type', + ), + 'KeyMarker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'key-marker', + ), + 'MaxUploads' => array( + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'max-uploads', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'prefix', + ), + 'UploadIdMarker' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'upload-id-marker', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', ), ), - /** - 查询存储桶(Bucket)中正在进行中的分块上传对象的方法. - - COS 支持查询 Bucket 中有哪些正在进行中的分块上传对象,单次请求操作最多列出 1000 个正在进行中的 分块上传对象. - - 关于查询 Bucket 中正在进行中的分块上传对象接口的具体描述,请查看 https://cloud.tencent.com/document/product/436/7736. - - cos php SDK 中查询 Bucket 中正在进行中的分块上传对象的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 ListParts 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 - - */ - 'ListParts' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'ListPartsOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1), - 'MaxParts' => array( - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-parts'), - 'PartNumberMarker' => array( - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'part-number-marker'), - 'UploadId' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId'), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml'))), - /** - 查询存储桶(Bucket) 下的部分或者全部对象的方法. - - COS 支持列出指定 Bucket 下的部分或者全部对象. - - 每次默认返回的最大条目数为 1000 条. - - 如果无法一次返回所有的对象,则返回结果中的 IsTruncated 为 true,同时会附加一个 NextMarker 字段,提示下 一个条目的起点. - - 若一次请求,已经返回了全部对象,则不会有 NextMarker 这个字段,同时 IsTruncated 为 false. - - 若把 prefix 设置为某个文件夹的全路径名,则可以列出以此 prefix 为开头的文件,即该文件 夹下递归的所有文件和子文件夹. - - 如果再设置 delimiter 定界符为 “/”,则只列出该文件夹下的文件,子文件夹下递归的文件和文件夹名 将不被列出.而子文件夹名将会以 CommonPrefix 的形式给出. - - 关于查询Bucket 下的部分或者全部对象接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7734. - - cos php SDK 中查询 Bucket 下的部分或者全部对象的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 ListObjects 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,则list成功。 - - 示例: - $result = $cosClient->ListObjects(array( - 'Bucket' => 'testbucket-1252448703')); - */ - 'ListObjects' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'ListObjectsOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri'), - 'Delimiter' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'delimiter'), - 'EncodingType' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'encoding-type'), - 'Marker' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'marker'), - 'MaxKeys' => array( - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-keys'), - 'Prefix' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'prefix'), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml')), - 'errorResponses' => array( - array( - 'reason' => 'The specified bucket does not exist.', - 'class' => 'NoSuchBucketException'))), - /** - 获取所属账户的所有存储空间列表的方法. - - 通过使用帯 Authorization 签名认证的请求,可以获取签名中 APPID 所属账户的所有存储空间列表 (Bucket list). - - 关于获取所有存储空间列表接口的具体描述,请查看https://cloud.tencent.com/document/product/436/8291. - - cos php SDK 中获取所属账户的所有存储空间列表的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 ListBuckets 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 - - 示例: - $result = $cosClient->listBuckets(); - print_r($result); - */ - 'ListBuckets' => array( - 'httpMethod' => 'GET', - 'uri' => '/', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'ListBucketsOutput', - 'responseType' => 'model', - 'parameters' => array( - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', - ), + ), + 'HeadObject' => array( + 'httpMethod' => 'HEAD', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'HeadObjectOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'IfMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'If-Match', + ), + 'IfModifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'If-Modified-Since', + ), + 'IfNoneMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'If-None-Match', + ), + 'IfUnmodifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'If-Unmodified-Since', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + ), + 'Range' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'versionId', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', ), ), - 'ListObjectVersions' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}?versions', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'ListObjectVersionsOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'Delimiter' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'delimiter', - ), - 'EncodingType' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'encoding-type', - ), - 'KeyMarker' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'key-marker', - ), - 'MaxKeys' => array( - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-keys', - ), - 'Prefix' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'prefix', - ), - 'VersionIdMarker' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'version-id-marker', - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', - ), + 'errorResponses' => array( + array( + 'reason' => 'The specified key does not exist.', + 'class' => 'NoSuchKeyException', ), ), - 'ListMultipartUploads' => array( - 'httpMethod' => 'GET', - 'uri' => '/{Bucket}?uploads', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'ListMultipartUploadsOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'Delimiter' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'delimiter', - ), - 'EncodingType' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'encoding-type', - ), - 'KeyMarker' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'key-marker', - ), - 'MaxUploads' => array( - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-uploads', - ), - 'Prefix' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'prefix', - ), - 'UploadIdMarker' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'upload-id-marker', - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', - ), + ), + /** + 存储桶(Bucket) 是否存在的方法. + + 在开始使用 COS 时,需要确认该 Bucket 是否存在,是否有权限访问.若不存在,则可以调用putBucket(PutBucketRequest) 创建. + + 关于确认该 Bucket 是否存在,是否有权限访问接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7735. + + cos php SDK 中Bucket 是否存在的方法具体步骤如下: + + 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 + + 2. 调用 HeadBucket 接口发出请求。 + + 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 + + 示例: + $result = $cosClient->headObject(array( + 'Bucket' => 'testbucket-1252448703', + 'Key' => '11', + 'VersionId' =>'111', + 'ServerSideEncryption' => 'AES256')); + */ + 'HeadBucket' => array( + 'httpMethod' => 'HEAD', + 'uri' => '/{Bucket}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'HeadBucketOutput', + 'responseType' => 'model', + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', ), ), - 'HeadObject' => array( - 'httpMethod' => 'HEAD', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'HeadObjectOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'IfMatch' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'If-Match', - ), - 'IfModifiedSince' => array( - 'type' => array( - 'object', - 'string', - 'integer', - ), - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'If-Modified-Since', - ), - 'IfNoneMatch' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'If-None-Match', - ), - 'IfUnmodifiedSince' => array( - 'type' => array( - 'object', - 'string', - 'integer', - ), - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'If-Unmodified-Since', - ), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1, - ), - 'Range' => array( - 'type' => 'string', - 'location' => 'header', - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKey' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ), + 'errorResponses' => array( + array( + 'reason' => 'The specified bucket does not exist.', + 'class' => 'NoSuchBucketException', ), - 'errorResponses' => array( - array( - 'reason' => 'The specified key does not exist.', - 'class' => 'NoSuchKeyException', - ), + ), + ), + 'UploadPartCopy' => array( + 'httpMethod' => 'PUT', + 'uri' => '/{Bucket}{/Key*}', + 'class' => 'Qcloud\\Cos\\Command', + 'responseClass' => 'UploadPartCopyOutput', + 'responseType' => 'model', + 'data' => array( + 'xmlRoot' => array( + 'name' => 'UploadPartCopyRequest', ), ), - /** - 存储桶(Bucket) 是否存在的方法. - - 在开始使用 COS 时,需要确认该 Bucket 是否存在,是否有权限访问.若不存在,则可以调用putBucket(PutBucketRequest) 创建. - - 关于确认该 Bucket 是否存在,是否有权限访问接口的具体描述,请查看https://cloud.tencent.com/document/product/436/7735. - - cos php SDK 中Bucket 是否存在的方法具体步骤如下: - - 1. 初始化客户端cosClient,填入存储桶名,和一些额外需要的参数,如授权的具体信息等。 - - 2. 调用 HeadBucket 接口发出请求。 - - 3. 接收该接口的返回数据,若没有抛出异常,获取成功。 - - 示例: - $result = $cosClient->headObject(array( - 'Bucket' => 'testbucket-1252448703', - 'Key' => '11', - 'VersionId' =>'111', - 'ServerSideEncryption' => 'AES256')); - */ - 'HeadBucket' => array( - 'httpMethod' => 'HEAD', - 'uri' => '/{Bucket}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'HeadBucketOutput', - 'responseType' => 'model', - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), + 'parameters' => array( + 'Bucket' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + ), + 'CopySource' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source', + ), + 'CopySourceIfMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-if-match', + ), + 'CopySourceIfModifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-if-modified-since', + ), + 'CopySourceIfNoneMatch' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-if-none-match', + ), + 'CopySourceIfUnmodifiedSince' => array( + 'type' => array( + 'object', + 'string', + 'integer', + ), + 'format' => 'date-time-http', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-if-unmodified-since', + ), + 'CopySourceRange' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-range', + ), + 'Key' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'uri', + 'minLength' => 1, + ), + 'PartNumber' => array( + 'required' => true, + 'type' => 'numeric', + 'location' => 'query', + 'sentAs' => 'partNumber', + ), + 'UploadId' => array( + 'required' => true, + 'type' => 'string', + 'location' => 'query', + 'sentAs' => 'uploadId', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'CopySourceSSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-algorithm', + ), + 'CopySourceSSECustomerKey' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-key', + ), + 'CopySourceSSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-key-MD5', + ), + 'RequestPayer' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-payer', + ), + 'command.expects' => array( + 'static' => true, + 'default' => 'application/xml', + ), + ), + ),), + 'models' => array( + 'AbortMultipartUploadOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id'))), + 'CreateBucketOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Location' => array( + 'type' => 'string', + 'location' => 'header'), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id'))), + 'CompleteMultipartUploadOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Location' => array( + 'type' => 'string', + 'location' => 'xml', ), - 'errorResponses' => array( - array( - 'reason' => 'The specified bucket does not exist.', - 'class' => 'NoSuchBucketException', - ), + 'Bucket' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Key' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-expiration', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-version-id', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'UploadPartCopy' => array( - 'httpMethod' => 'PUT', - 'uri' => '/{Bucket}{/Key*}', - 'class' => 'Qcloud\\Cos\\Command', - 'responseClass' => 'UploadPartCopyOutput', - 'responseType' => 'model', - 'data' => array( - 'xmlRoot' => array( - 'name' => 'UploadPartCopyRequest', - ), - ), - 'parameters' => array( - 'Bucket' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - ), - 'CopySource' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source', ), - 'CopySourceIfMatch' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-if-match', - ), - 'CopySourceIfModifiedSince' => array( - 'type' => array( - 'object', - 'string', - 'integer', + 'CreateMultipartUploadOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Bucket' => array( + 'type' => 'string', + 'location' => 'xml', + 'sentAs' => 'Bucket'), + 'Key' => array( + 'type' => 'string', + 'location' => 'xml'), + 'UploadId' => array( + 'type' => 'string', + 'location' => 'xml'), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ))), + 'CopyObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ETag' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'LastModified' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-expiration', + ), + 'CopySourceVersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-version-id', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-version-id', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), ), - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-if-modified-since', - ), - 'CopySourceIfNoneMatch' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-if-none-match', ), - 'CopySourceIfUnmodifiedSince' => array( - 'type' => array( - 'object', - 'string', - 'integer', + 'DeleteBucketOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id'))), + 'DeleteBucketCorsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), ), - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-if-unmodified-since', - ), - 'CopySourceRange' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-range', - ), - 'Key' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'uri', - 'minLength' => 1, - ), - 'PartNumber' => array( - 'required' => true, - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'partNumber', ), - 'UploadId' => array( - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKey' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'CopySourceSSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-algorithm', - ), - 'CopySourceSSECustomerKey' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-key', - ), - 'CopySourceSSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-server-side-encryption-customer-key-MD5', - ), - 'RequestPayer' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-payer', - ), - 'command.expects' => array( - 'static' => true, - 'default' => 'application/xml', - ), - ), - ),), - 'models' => array( - 'AbortMultipartUploadOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id'))), - 'CreateBucketOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Location' => array( - 'type' => 'string', - 'location' => 'header'), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id'))), - 'CompleteMultipartUploadOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Location' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Bucket' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Key' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Expiration' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-expiration', - ), - 'ETag' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-version-id', - ), - 'SSEKMSKeyId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', - ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + 'DeleteObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'DeleteMarker' => array( + 'type' => 'boolean', + 'location' => 'header', + 'sentAs' => 'x-cos-delete-marker', ), - ), - 'CreateMultipartUploadOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Bucket' => array( - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'Bucket'), - 'Key' => array( - 'type' => 'string', - 'location' => 'xml'), - 'UploadId' => array( - 'type' => 'string', - 'location' => 'xml'), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'SSEKMSKeyId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', - ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ))), - 'CopyObjectOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'ETag' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'LastModified' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Expiration' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-expiration', - ), - 'CopySourceVersionId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-version-id', - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-version-id', - ), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-version-id', ), - ), - 'DeleteBucketOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id'))), - 'DeleteBucketCorsOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', ), - ), - 'DeleteObjectOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'DeleteMarker' => array( - 'type' => 'boolean', - 'location' => 'header', - 'sentAs' => 'x-cos-delete-marker', - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-version-id', - ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'DeleteObjectsOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Deleted' => array( - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'DeletedObject', - 'type' => 'object', - 'properties' => array( - 'Key' => array( - 'type' => 'string', - ), - 'VersionId' => array( - 'type' => 'string', - ), - 'DeleteMarker' => array( - 'type' => 'boolean', - ), - 'DeleteMarkerVersionId' => array( - 'type' => 'string', - ), + ), + 'DeleteObjectsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Deleted' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'DeletedObject', + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'DeleteMarker' => array( + 'type' => 'boolean', + ), + 'DeleteMarkerVersionId' => array( + 'type' => 'string', ), ), ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'Errors' => array( - 'type' => 'array', - 'location' => 'xml', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'Errors' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Error', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Error', + 'type' => 'object', 'sentAs' => 'Error', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'Error', - 'type' => 'object', - 'sentAs' => 'Error', - 'properties' => array( - 'Key' => array( - 'type' => 'string', - ), - 'VersionId' => array( - 'type' => 'string', - ), - 'Code' => array( - 'type' => 'string', - ), - 'Message' => array( - 'type' => 'string', - ), + 'properties' => array( + 'Key' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'Code' => array( + 'type' => 'string', + ), + 'Message' => array( + 'type' => 'string', ), ), ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'DeleteBucketLifecycleOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'DeleteBucketLifecycleOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'DeleteBucketReplicationOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'DeleteBucketReplicationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'GetObjectOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Body' => array( - 'type' => 'string', - 'instanceOf' => 'Guzzle\\Http\\EntityBody', - 'location' => 'body', - ), - 'DeleteMarker' => array( - 'type' => 'boolean', - 'location' => 'header', - 'sentAs' => 'x-cos-delete-marker', - ), - 'AcceptRanges' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'accept-ranges', - ), - 'Expiration' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-expiration', - ), - 'Restore' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-restore', - ), - 'LastModified' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Last-Modified', - ), - 'ContentLength' => array( - 'type' => 'numeric', - 'location' => 'header', - 'sentAs' => 'Content-Length', - ), - 'ETag' => array( - 'type' => 'string', - 'location' => 'header', - ), - 'MissingMeta' => array( - 'type' => 'numeric', - 'location' => 'header', - 'sentAs' => 'x-cos-missing-meta', - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-version-id', - ), - 'CacheControl' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Cache-Control', - ), - 'ContentDisposition' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Disposition', - ), - 'ContentEncoding' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Encoding', - ), - 'ContentLanguage' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Language', - ), - 'ContentRange' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Range', - ), - 'ContentType' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type', - ), - 'Expires' => array( - 'type' => 'string', - 'location' => 'header', - ), - 'WebsiteRedirectLocation' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-website-redirect-location', - ), - 'ServerSideEncryption' => array( + ), + 'GetObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Body' => array( + 'type' => 'string', + 'instanceOf' => 'Guzzle\\Http\\EntityBody', + 'location' => 'body', + ), + 'DeleteMarker' => array( + 'type' => 'boolean', + 'location' => 'header', + 'sentAs' => 'x-cos-delete-marker', + ), + 'AcceptRanges' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'accept-ranges', + ), + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-expiration', + ), + 'Restore' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-restore', + ), + 'LastModified' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Last-Modified', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'MissingMeta' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'x-cos-missing-meta', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-version-id', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentRange' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Range', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'Expires' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-website-redirect-location', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-cos-meta-', + 'additionalProperties' => array( 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', ), - 'Metadata' => array( - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-cos-meta-', - 'additionalProperties' => array( + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-storage-class', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'ReplicationStatus' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-replication-status', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), + ), + ), + 'GetObjectAclOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( 'type' => 'string', ), - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'SSEKMSKeyId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', - ), - 'StorageClass' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-storage-class', - ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'ReplicationStatus' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-replication-status', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', ), ), - ), - 'GetObjectAclOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Owner' => array( + 'Grants' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'AccessControlList', + 'items' => array( + 'name' => 'Grant', 'type' => 'object', - 'location' => 'xml', + 'sentAs' => 'Grant', 'properties' => array( - 'DisplayName' => array( - 'type' => 'string', - ), - 'ID' => array( - 'type' => 'string', - ), - ), - ), - 'Grants' => array( - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => array( - 'name' => 'Grant', - 'type' => 'object', - 'sentAs' => 'Grant', - 'properties' => array( - 'Grantee' => array( - 'type' => 'object', - 'properties' => array( - 'DisplayName' => array( - 'type' => 'string'), - /* + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string'), + /* 'EmailAddress' => array( 'type' => 'string'), */ - 'ID' => array( - 'type' => 'string'), - /* + 'ID' => array( + 'type' => 'string'), + /* 'Type' => array( 'type' => 'string', 'sentAs' => 'xsi:type', @@ -3012,58 +3024,58 @@ public static function getService() { 'xmlAttribute' => true, 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance')), */ - /*'URI' => array( + /*'URI' => array( 'type' => 'string') */)), - 'Permission' => array( - 'type' => 'string', - ), + 'Permission' => array( + 'type' => 'string', ), ), ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'GetBucketAclOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Owner' => array( + ), + 'GetBucketAclOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string'), + 'ID' => array( + 'type' => 'string'))), + 'Grants' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'AccessControlList', + 'items' => array( + 'name' => 'Grant', 'type' => 'object', - 'location' => 'xml', + 'sentAs' => 'Grant', 'properties' => array( - 'DisplayName' => array( - 'type' => 'string'), - 'ID' => array( - 'type' => 'string'))), - 'Grants' => array( - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => array( - 'name' => 'Grant', - 'type' => 'object', - 'sentAs' => 'Grant', - 'properties' => array( - 'Grantee' => array( - 'type' => 'object', - 'properties' => array( - 'DisplayName' => array( - 'type' => 'string'), - /* + 'Grantee' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string'), + /* 'EmailAddress' => array( 'type' => 'string'), */ - 'ID' => array( - 'type' => 'string'), - /* + 'ID' => array( + 'type' => 'string'), + /* 'Type' => array( 'type' => 'string', 'sentAs' => 'xsi:type', @@ -3071,1042 +3083,1058 @@ public static function getService() { 'xmlAttribute' => true, 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance')), */ - /*'URI' => array( + /*'URI' => array( 'type' => 'string') */)), - 'Permission' => array( - 'type' => 'string')))), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id'))), - 'GetBucketCorsOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'CORSRules' => array( - 'type' => 'array', - 'location' => 'xml', + 'Permission' => array( + 'type' => 'string')))), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id'))), + 'GetBucketCorsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'CORSRules' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'CORSRule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CORSRule', + 'type' => 'object', 'sentAs' => 'CORSRule', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'CORSRule', - 'type' => 'object', - 'sentAs' => 'CORSRule', - 'properties' => array( - 'ID' => array( - 'type' => 'string'), - 'AllowedHeaders' => array( - 'type' => 'array', + 'properties' => array( + 'ID' => array( + 'type' => 'string'), + 'AllowedHeaders' => array( + 'type' => 'array', + 'sentAs' => 'AllowedHeader', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedHeader', + 'type' => 'string', 'sentAs' => 'AllowedHeader', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'AllowedHeader', - 'type' => 'string', - 'sentAs' => 'AllowedHeader', - ), ), - 'AllowedMethods' => array( - 'type' => 'array', + ), + 'AllowedMethods' => array( + 'type' => 'array', + 'sentAs' => 'AllowedMethod', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedMethod', + 'type' => 'string', 'sentAs' => 'AllowedMethod', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'AllowedMethod', - 'type' => 'string', - 'sentAs' => 'AllowedMethod', - ), ), - 'AllowedOrigins' => array( - 'type' => 'array', + ), + 'AllowedOrigins' => array( + 'type' => 'array', + 'sentAs' => 'AllowedOrigin', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'AllowedOrigin', + 'type' => 'string', 'sentAs' => 'AllowedOrigin', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'AllowedOrigin', - 'type' => 'string', - 'sentAs' => 'AllowedOrigin', - ), ), - 'ExposeHeaders' => array( - 'type' => 'array', - 'sentAs' => 'ExposeHeader', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'ExposeHeader', - 'type' => 'string', - 'sentAs' => 'ExposeHeader', - ), + ), + 'ExposeHeaders' => array( + 'type' => 'array', + 'sentAs' => 'ExposeHeader', + 'data' => array( + 'xmlFlattened' => true, ), - 'MaxAgeSeconds' => array( - 'type' => 'numeric', + 'items' => array( + 'name' => 'ExposeHeader', + 'type' => 'string', + 'sentAs' => 'ExposeHeader', ), ), + 'MaxAgeSeconds' => array( + 'type' => 'numeric', + ), ), ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'GetBucketLifecycleOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Rules' => array( - 'type' => 'array', - 'location' => 'xml', + ), + 'GetBucketLifecycleOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Rules' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Rule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'Rule', + 'type' => 'object', 'sentAs' => 'Rule', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'Rule', - 'type' => 'object', - 'sentAs' => 'Rule', - 'properties' => array( - 'Expiration' => array( - 'type' => 'object', - 'properties' => array( - 'Date' => array( - 'type' => 'string', - ), - 'Days' => array( - 'type' => 'numeric', - ), + 'properties' => array( + 'Expiration' => array( + 'type' => 'object', + 'properties' => array( + 'Date' => array( + 'type' => 'string', + ), + 'Days' => array( + 'type' => 'numeric', ), ), - 'ID' => array( - 'type' => 'string', - ), - 'Prefix' => array( - 'type' => 'string', - ), - 'Status' => array( - 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), + 'Filter' => array( + 'type' => 'object', + 'properties' => array( + 'Prefix' => array( + 'type' => 'string', + ), + 'Tag' => array( + 'type' => 'object', + 'properties' => array( + 'Key' => array( + 'type' => 'string' + ), + 'Value' => array( + 'type' => 'string' + ), + ) + ) ), - 'Transition' => array( - 'type' => 'object', - 'properties' => array( - 'Date' => array( - 'type' => 'string', - ), - 'Days' => array( - 'type' => 'numeric', - ), - 'StorageClass' => array( - 'type' => 'string', - ), + ), + 'Status' => array( + 'type' => 'string', + ), + 'Transition' => array( + 'type' => 'object', + 'properties' => array( + 'Date' => array( + 'type' => 'string', + ), + 'Days' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', ), ), - 'NoncurrentVersionTransition' => array( - 'type' => 'object', - 'properties' => array( - 'NoncurrentDays' => array( - 'type' => 'numeric', - ), - 'StorageClass' => array( - 'type' => 'string', - ), + ), + 'NoncurrentVersionTransition' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', ), ), - 'NoncurrentVersionExpiration' => array( - 'type' => 'object', - 'properties' => array( - 'NoncurrentDays' => array( - 'type' => 'numeric', - ), + ), + 'NoncurrentVersionExpiration' => array( + 'type' => 'object', + 'properties' => array( + 'NoncurrentDays' => array( + 'type' => 'numeric', ), ), ), ), ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'GetBucketVersioningOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Status' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'MFADelete' => array( - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'MfaDelete', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'GetBucketVersioningOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Status' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'MFADelete' => array( + 'type' => 'string', + 'location' => 'xml', + 'sentAs' => 'MfaDelete', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'GetBucketReplicationOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Role' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Rules' => array( - 'type' => 'array', - 'location' => 'xml', + ), + 'GetBucketReplicationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Role' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Rules' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Rule', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ReplicationRule', + 'type' => 'object', 'sentAs' => 'Rule', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'ReplicationRule', - 'type' => 'object', - 'sentAs' => 'Rule', - 'properties' => array( - 'ID' => array( - 'type' => 'string', - ), - 'Prefix' => array( - 'type' => 'string', - ), - 'Status' => array( - 'type' => 'string', - ), - 'Destination' => array( - 'type' => 'object', - 'properties' => array( - 'Bucket' => array( - 'type' => 'string', - ), - 'StorageClass' => array( - 'type' => 'string', - ), + 'properties' => array( + 'ID' => array( + 'type' => 'string', + ), + 'Prefix' => array( + 'type' => 'string', + ), + 'Status' => array( + 'type' => 'string', + ), + 'Destination' => array( + 'type' => 'object', + 'properties' => array( + 'Bucket' => array( + 'type' => 'string', + ), + 'StorageClass' => array( + 'type' => 'string', ), ), ), ), ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'GetBucketLocationOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Location' => array( - 'type' => 'string', - 'location' => 'body', - 'filters' => array( - 'strval', - 'strip_tags', - 'trim', - ), + ), + 'GetBucketLocationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Location' => array( + 'type' => 'string', + 'location' => 'body', + 'filters' => array( + 'strval', + 'strip_tags', + 'trim', ), ), ), - 'UploadPartOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'ETag' => array( - 'type' => 'string', - 'location' => 'header', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'SSEKMSKeyId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', - ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'UploadPartOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'UploadPartCopyOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'CopySourceVersionId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-copy-source-version-id', - ), - 'ETag' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'LastModified' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'SSEKMSKeyId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', - ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'UploadPartCopyOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'CopySourceVersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-copy-source-version-id', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'LastModified' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'PutBucketAclOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id'))), - 'PutObjectOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Expiration' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-expiration', - ), - 'ETag' => array( - 'type' => 'string', - 'location' => 'header', - ), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-version-id', - ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'SSEKMSKeyId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', - ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'PutBucketAclOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id'))), + 'PutObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-expiration', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-version-id', + ), + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'PutObjectAclOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'PutObjectAclOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'PutBucketCorsOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'PutBucketCorsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'PutBucketLifecycleOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'PutBucketLifecycleOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'PutBucketVersioningOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'PutBucketVersioningOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'PutBucketReplicationOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'PutBucketReplicationOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'RestoreObjectOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'RestoreObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'ListPartsOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Bucket' => array( - 'type' => 'string', - 'location' => 'xml'), - 'Key' => array( - 'type' => 'string', - 'location' => 'xml'), - 'UploadId' => array( - 'type' => 'string', - 'location' => 'xml'), - 'PartNumberMarker' => array( - 'type' => 'numeric', - 'location' => 'xml'), - 'NextPartNumberMarker' => array( - 'type' => 'numeric', - 'location' => 'xml'), - 'MaxParts' => array( - 'type' => 'numeric', - 'location' => 'xml'), - 'IsTruncated' => array( - 'type' => 'boolean', - 'location' => 'xml'), - 'Parts' => array( - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Part', - 'data' => array( - 'xmlFlattened' => true), - 'items' => array( - 'name' => 'Part', - 'type' => 'object', - 'sentAs' => 'Part', - 'properties' => array( - 'PartNumber' => array( - 'type' => 'numeric'), - 'LastModified' => array( - 'type' => 'string'), - 'ETag' => array( - 'type' => 'string'), - 'Size' => array( - 'type' => 'numeric')))), - 'Initiator' => array( + ), + 'ListPartsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Bucket' => array( + 'type' => 'string', + 'location' => 'xml'), + 'Key' => array( + 'type' => 'string', + 'location' => 'xml'), + 'UploadId' => array( + 'type' => 'string', + 'location' => 'xml'), + 'PartNumberMarker' => array( + 'type' => 'numeric', + 'location' => 'xml'), + 'NextPartNumberMarker' => array( + 'type' => 'numeric', + 'location' => 'xml'), + 'MaxParts' => array( + 'type' => 'numeric', + 'location' => 'xml'), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml'), + 'Parts' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Part', + 'data' => array( + 'xmlFlattened' => true), + 'items' => array( + 'name' => 'Part', 'type' => 'object', - 'location' => 'xml', + 'sentAs' => 'Part', 'properties' => array( - 'ID' => array( + 'PartNumber' => array( + 'type' => 'numeric'), + 'LastModified' => array( 'type' => 'string'), - 'DisplayName' => array( - 'type' => 'string'))), - 'Owner' => array( + 'ETag' => array( + 'type' => 'string'), + 'Size' => array( + 'type' => 'numeric')))), + 'Initiator' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'ID' => array( + 'type' => 'string'), + 'DisplayName' => array( + 'type' => 'string'))), + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string'), + 'ID' => array( + 'type' => 'string'))), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'xml'), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id'))), + 'ListObjectsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml'), + 'Marker' => array( + 'type' => 'string', + 'location' => 'xml'), + 'NextMarker' => array( + 'type' => 'string', + 'location' => 'xml'), + 'Contents' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true), + 'items' => array( + 'name' => 'Object', 'type' => 'object', - 'location' => 'xml', 'properties' => array( - 'DisplayName' => array( + 'Key' => array( 'type' => 'string'), - 'ID' => array( - 'type' => 'string'))), - 'StorageClass' => array( - 'type' => 'string', - 'location' => 'xml'), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id'))), - 'ListObjectsOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'IsTruncated' => array( - 'type' => 'boolean', - 'location' => 'xml'), - 'Marker' => array( - 'type' => 'string', - 'location' => 'xml'), - 'NextMarker' => array( - 'type' => 'string', - 'location' => 'xml'), - 'Contents' => array( - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true), - 'items' => array( - 'name' => 'Object', - 'type' => 'object', - 'properties' => array( - 'Key' => array( - 'type' => 'string'), - 'LastModified' => array( - 'type' => 'string'), - 'ETag' => array( - 'type' => 'string'), - 'Size' => array( - 'type' => 'numeric'), - 'StorageClass' => array( - 'type' => 'string'), - 'Owner' => array( - 'type' => 'object', - 'properties' => array( - 'DisplayName' => array( - 'type' => 'string'), - 'ID' => array( - 'type' => 'string')))))), - 'Name' => array( - 'type' => 'string', - 'location' => 'xml'), - 'Prefix' => array( - 'type' => 'string', - 'location' => 'xml'), - 'Delimiter' => array( - 'type' => 'string', - 'location' => 'xml'), - 'MaxKeys' => array( - 'type' => 'numeric', - 'location' => 'xml'), - 'CommonPrefixes' => array( - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true), - 'items' => array( - 'name' => 'CommonPrefix', - 'type' => 'object', - 'properties' => array( - 'Prefix' => array( - 'type' => 'string')))), - 'EncodingType' => array( - 'type' => 'string', - 'location' => 'xml'), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id'))), - 'ListBucketsOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Buckets' => array( - 'type' => 'array', - 'location' => 'xml', - 'items' => array( - 'name' => 'Bucket', - 'type' => 'object', - 'sentAs' => 'Bucket', - 'properties' => array( - 'Name' => array( - 'type' => 'string', - ), - 'CreationDate' => array( - 'type' => 'string', - ), - ), - ), - ), - 'Owner' => array( + 'LastModified' => array( + 'type' => 'string'), + 'ETag' => array( + 'type' => 'string'), + 'Size' => array( + 'type' => 'numeric'), + 'StorageClass' => array( + 'type' => 'string'), + 'Owner' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string'), + 'ID' => array( + 'type' => 'string')))))), + 'Name' => array( + 'type' => 'string', + 'location' => 'xml'), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'xml'), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'xml'), + 'MaxKeys' => array( + 'type' => 'numeric', + 'location' => 'xml'), + 'CommonPrefixes' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true), + 'items' => array( + 'name' => 'CommonPrefix', + 'type' => 'object', + 'properties' => array( + 'Prefix' => array( + 'type' => 'string')))), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'xml'), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id'))), + 'ListBucketsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Buckets' => array( + 'type' => 'array', + 'location' => 'xml', + 'items' => array( + 'name' => 'Bucket', 'type' => 'object', - 'location' => 'xml', + 'sentAs' => 'Bucket', 'properties' => array( - 'DisplayName' => array( + 'Name' => array( 'type' => 'string', ), - 'ID' => array( + 'CreationDate' => array( 'type' => 'string', ), ), ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', + ), + 'Owner' => array( + 'type' => 'object', + 'location' => 'xml', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', + ), ), ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), ), - 'ListObjectVersionsOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'IsTruncated' => array( - 'type' => 'boolean', - 'location' => 'xml', - ), - 'KeyMarker' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'VersionIdMarker' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'NextKeyMarker' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'NextVersionIdMarker' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Versions' => array( - 'type' => 'array', - 'location' => 'xml', + ), + 'ListObjectVersionsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'KeyMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'VersionIdMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'NextKeyMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'NextVersionIdMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Versions' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Version', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'ObjectVersion', + 'type' => 'object', 'sentAs' => 'Version', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'ObjectVersion', - 'type' => 'object', - 'sentAs' => 'Version', - 'properties' => array( - 'ETag' => array( - 'type' => 'string', - ), - 'Size' => array( - 'type' => 'numeric', - ), - 'StorageClass' => array( - 'type' => 'string', - ), - 'Key' => array( - 'type' => 'string', - ), - 'VersionId' => array( - 'type' => 'string', - ), - 'IsLatest' => array( - 'type' => 'boolean', - ), - 'LastModified' => array( - 'type' => 'string', - ), - 'Owner' => array( - 'type' => 'object', - 'properties' => array( - 'DisplayName' => array( - 'type' => 'string', - ), - 'ID' => array( - 'type' => 'string', - ), + 'properties' => array( + 'ETag' => array( + 'type' => 'string', + ), + 'Size' => array( + 'type' => 'numeric', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + 'Key' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'IsLatest' => array( + 'type' => 'boolean', + ), + 'LastModified' => array( + 'type' => 'string', + ), + 'Owner' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', ), ), ), ), ), - 'DeleteMarkers' => array( - 'type' => 'array', - 'location' => 'xml', + ), + 'DeleteMarkers' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'DeleteMarker', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'DeleteMarkerEntry', + 'type' => 'object', 'sentAs' => 'DeleteMarker', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'DeleteMarkerEntry', - 'type' => 'object', - 'sentAs' => 'DeleteMarker', - 'properties' => array( - 'Owner' => array( - 'type' => 'object', - 'properties' => array( - 'DisplayName' => array( - 'type' => 'string', - ), - 'ID' => array( - 'type' => 'string', - ), + 'properties' => array( + 'Owner' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', + ), + 'ID' => array( + 'type' => 'string', ), ), - 'Key' => array( - 'type' => 'string', - ), - 'VersionId' => array( - 'type' => 'string', - ), - 'IsLatest' => array( - 'type' => 'boolean', - ), - 'LastModified' => array( - 'type' => 'string', - ), + ), + 'Key' => array( + 'type' => 'string', + ), + 'VersionId' => array( + 'type' => 'string', + ), + 'IsLatest' => array( + 'type' => 'boolean', + ), + 'LastModified' => array( + 'type' => 'string', ), ), ), - 'Name' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Prefix' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Delimiter' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'MaxKeys' => array( - 'type' => 'numeric', - 'location' => 'xml', - ), - 'CommonPrefixes' => array( - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'CommonPrefix', - 'type' => 'object', - 'properties' => array( - 'Prefix' => array( - 'type' => 'string', - ), + ), + 'Name' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'MaxKeys' => array( + 'type' => 'numeric', + 'location' => 'xml', + ), + 'CommonPrefixes' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CommonPrefix', + 'type' => 'object', + 'properties' => array( + 'Prefix' => array( + 'type' => 'string', ), ), ), - 'EncodingType' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), + ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', ), ), - 'ListMultipartUploadsOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'Bucket' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'KeyMarker' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'UploadIdMarker' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'NextKeyMarker' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Prefix' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'Delimiter' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'NextUploadIdMarker' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'MaxUploads' => array( - 'type' => 'numeric', - 'location' => 'xml', - ), - 'IsTruncated' => array( - 'type' => 'boolean', - 'location' => 'xml', - ), - 'Uploads' => array( - 'type' => 'array', - 'location' => 'xml', + ), + 'ListMultipartUploadsOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'Bucket' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'KeyMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'UploadIdMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'NextKeyMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Prefix' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'Delimiter' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'NextUploadIdMarker' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'MaxUploads' => array( + 'type' => 'numeric', + 'location' => 'xml', + ), + 'IsTruncated' => array( + 'type' => 'boolean', + 'location' => 'xml', + ), + 'Uploads' => array( + 'type' => 'array', + 'location' => 'xml', + 'sentAs' => 'Upload', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'MultipartUpload', + 'type' => 'object', 'sentAs' => 'Upload', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'MultipartUpload', - 'type' => 'object', - 'sentAs' => 'Upload', - 'properties' => array( - 'UploadId' => array( - 'type' => 'string', - ), - 'Key' => array( - 'type' => 'string', - ), - 'Initiated' => array( - 'type' => 'string', - ), - 'StorageClass' => array( - 'type' => 'string', - ), - 'Owner' => array( - 'type' => 'object', - 'properties' => array( - 'DisplayName' => array( - 'type' => 'string', - ), - 'ID' => array( - 'type' => 'string', - ), + 'properties' => array( + 'UploadId' => array( + 'type' => 'string', + ), + 'Key' => array( + 'type' => 'string', + ), + 'Initiated' => array( + 'type' => 'string', + ), + 'StorageClass' => array( + 'type' => 'string', + ), + 'Owner' => array( + 'type' => 'object', + 'properties' => array( + 'DisplayName' => array( + 'type' => 'string', ), - ), - 'Initiator' => array( - 'type' => 'object', - 'properties' => array( - 'ID' => array( - 'type' => 'string', - ), - 'DisplayName' => array( - 'type' => 'string', - ), + 'ID' => array( + 'type' => 'string', ), ), ), - ), - ), - 'CommonPrefixes' => array( - 'type' => 'array', - 'location' => 'xml', - 'data' => array( - 'xmlFlattened' => true, - ), - 'items' => array( - 'name' => 'CommonPrefix', - 'type' => 'object', - 'properties' => array( - 'Prefix' => array( - 'type' => 'string', + 'Initiator' => array( + 'type' => 'object', + 'properties' => array( + 'ID' => array( + 'type' => 'string', + ), + 'DisplayName' => array( + 'type' => 'string', + ), ), ), ), ), - 'EncodingType' => array( - 'type' => 'string', - 'location' => 'xml', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ), ), - ), - 'HeadObjectOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'DeleteMarker' => array( - 'type' => 'boolean', - 'location' => 'header', - 'sentAs' => 'x-cos-delete-marker', - ), - 'AcceptRanges' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'accept-ranges', - ), - 'Expiration' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-expiration', - ), - 'Restore' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-restore', - ), - 'LastModified' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Last-Modified', - ), - 'ContentLength' => array( - 'type' => 'numeric', - 'location' => 'header', - 'sentAs' => 'Content-Length', - ), - 'ETag' => array( - 'type' => 'string', - 'location' => 'header', - ), - 'MissingMeta' => array( - 'type' => 'numeric', - 'location' => 'header', - 'sentAs' => 'x-cos-missing-meta', - ), - 'VersionId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-version-id', - ), - 'CacheControl' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Cache-Control', - ), - 'ContentDisposition' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Disposition', - ), - 'ContentEncoding' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Encoding', - ), - 'ContentLanguage' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Language', - ), - 'ContentType' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type', - ), - 'Expires' => array( - 'type' => 'string', - 'location' => 'header', - ), - 'WebsiteRedirectLocation' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-website-redirect-location', - ), - 'ServerSideEncryption' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption', - ), - 'Metadata' => array( + 'CommonPrefixes' => array( + 'type' => 'array', + 'location' => 'xml', + 'data' => array( + 'xmlFlattened' => true, + ), + 'items' => array( + 'name' => 'CommonPrefix', 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-cos-meta-', - 'additionalProperties' => array( - 'type' => 'string', + 'properties' => array( + 'Prefix' => array( + 'type' => 'string', + ), ), ), - 'SSECustomerAlgorithm' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', - ), - 'SSECustomerKeyMD5' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', - ), - 'SSEKMSKeyId' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', - ), - 'StorageClass' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-storage-class', - ), - 'RequestCharged' => array( - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-request-charged', - ), - 'ReplicationStatus' => array( + ), + 'EncodingType' => array( + 'type' => 'string', + 'location' => 'xml', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), + ), + ), + 'HeadObjectOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'DeleteMarker' => array( + 'type' => 'boolean', + 'location' => 'header', + 'sentAs' => 'x-cos-delete-marker', + ), + 'AcceptRanges' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'accept-ranges', + ), + 'Expiration' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-expiration', + ), + 'Restore' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-restore', + ), + 'LastModified' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Last-Modified', + ), + 'ContentLength' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'Content-Length', + ), + 'ETag' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'MissingMeta' => array( + 'type' => 'numeric', + 'location' => 'header', + 'sentAs' => 'x-cos-missing-meta', + ), + 'VersionId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-version-id', + ), + 'CacheControl' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Cache-Control', + ), + 'ContentDisposition' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Disposition', + ), + 'ContentEncoding' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Encoding', + ), + 'ContentLanguage' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Language', + ), + 'ContentType' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'Content-Type', + ), + 'Expires' => array( + 'type' => 'string', + 'location' => 'header', + ), + 'WebsiteRedirectLocation' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-website-redirect-location', + ), + 'ServerSideEncryption' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption', + ), + 'Metadata' => array( + 'type' => 'object', + 'location' => 'header', + 'sentAs' => 'x-cos-meta-', + 'additionalProperties' => array( 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-cos-replication-status', - ), - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', - ))), - 'HeadBucketOutput' => array( - 'type' => 'object', - 'additionalProperties' => true, - 'properties' => array( - 'RequestId' => array( - 'location' => 'header', - 'sentAs' => 'x-cos-request-id', ), ), - ),)); + 'SSECustomerAlgorithm' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-algorithm', + ), + 'SSECustomerKeyMD5' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-customer-key-MD5', + ), + 'SSEKMSKeyId' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-server-side-encryption-aws-kms-key-id', + ), + 'StorageClass' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-storage-class', + ), + 'RequestCharged' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-request-charged', + ), + 'ReplicationStatus' => array( + 'type' => 'string', + 'location' => 'header', + 'sentAs' => 'x-cos-replication-status', + ), + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ))), + 'HeadBucketOutput' => array( + 'type' => 'object', + 'additionalProperties' => true, + 'properties' => array( + 'RequestId' => array( + 'location' => 'header', + 'sentAs' => 'x-cos-request-id', + ), + ), + ),)); } } diff --git a/src/Qcloud/Cos/Tests/Test.php b/src/Qcloud/Cos/Tests/Test.php index b74ebac0..0012d322 100644 --- a/src/Qcloud/Cos/Tests/Test.php +++ b/src/Qcloud/Cos/Tests/Test.php @@ -579,28 +579,33 @@ public function testGetBucketLifecycle() try { $result = $this->cosClient->createBucket(array('Bucket' => $this->bucket)); $result = $this->cosClient->putBucketLifecycle(array( - // Bucket is required - 'Bucket' => $this->bucket, - // Rules is required - 'Rules' => array( - array( - 'Expiration' => array( - 'Days' => 1000, - ), - 'ID' => 'id1', - 'Filter' => array( - 'Prefix' => 'documents/' - ), - // Status is required - 'Status' => 'Enabled', - 'Transitions' => array( - array( - 'Days' => 100, - 'StorageClass' => 'Standard_IA'), - ), - // ... repeated - ), - ))); + 'Bucket' => $this->bucket, + 'Rules' => array( + array( + 'Status' => 'Enabled', + 'Filter' => array( + 'Tag' => array( + 'Key' => 'datalevel', + 'Value' => 'backup' + ) + ), + 'Transitions' => array( + array( + # 30天后转换为Standard_IA + 'Days' => 30, + 'StorageClass' => 'Standard_IA'), + array( + # 365天后转换为Archive + 'Days' => 365, + 'StorageClass' => 'Archive') + ), + 'Expiration' => array( + # 3650天后过期删除 + 'Days' => 3650, + ) + ) + ) + )); $result = $this->cosClient->getBucketLifecycle(array( // Bucket is required 'Bucket' => $this->bucket, @@ -619,28 +624,33 @@ public function testDeleteBucketLifecycle() try { $result = $this->cosClient->createBucket(array('Bucket' => $this->bucket)); $result = $this->cosClient->putBucketLifecycle(array( - // Bucket is required 'Bucket' => $this->bucket, - // Rules is required 'Rules' => array( array( - 'Expiration' => array( - 'Days' => 1000, - ), - 'ID' => 'id1', + 'Status' => 'Enabled', 'Filter' => array( - 'Prefix' => 'documents/' + 'Tag' => array( + 'Key' => 'datalevel', + 'Value' => 'backup' + ) ), - // Status is required - 'Status' => 'Enabled', 'Transitions' => array( array( - 'Days' => 100, + # 30天后转换为Standard_IA + 'Days' => 30, 'StorageClass' => 'Standard_IA'), + array( + # 365天后转换为Archive + 'Days' => 365, + 'StorageClass' => 'Archive') ), - // ... repeated - ), - ))); + 'Expiration' => array( + # 3650天后过期删除 + 'Days' => 3650, + ) + ) + ) + )); $result = $this->cosClient->deleteBucketLifecycle(array( // Bucket is required 'Bucket' => $this->bucket,