QCloudCOSXMLCopyObjectRequest.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. //
  2. // QCloudCOSXMLCopyObjectRequest.h
  3. // QCloudCOSXML
  4. //
  5. // Created by erichmzhang(张恒铭) on 16/11/2017.
  6. //
  7. #import <Foundation/Foundation.h>
  8. #import <QCloudCore/QCloudCore.h>
  9. #import "QCloudCOSStorageClassEnum.h"
  10. #import "QCloudCopyObjectResult.h"
  11. #import "QCloudCOSTransferMangerService.h"
  12. typedef void(^CopyProgressBlock)(int64_t partsSent, int64_t totalPartsExpectedToSent) ;
  13. @interface QCloudCOSXMLCopyObjectRequest : QCloudAbstractRequest
  14. /**
  15. 对象名
  16. */
  17. @property (strong, nonatomic) NSString *object;
  18. /**
  19. 存储桶名
  20. */
  21. @property (strong, nonatomic) NSString *bucket;
  22. /**
  23. 复制的源文件所在Bucket
  24. */
  25. @property (nonatomic, copy) NSString* sourceBucket;
  26. /**
  27. 复制的源文件的对象名,key
  28. */
  29. @property (nonatomic, copy) NSString* sourceObject;
  30. /**
  31. 复制的源文件的appID
  32. */
  33. @property (nonatomic, copy) NSString* sourceAPPID;
  34. /**
  35. 复制的源文件所在的区域。
  36. */
  37. @property (nonatomic, copy) NSString* sourceRegion;
  38. /**
  39. 是否拷贝元数据,枚举值:Copy, Replaced,默认值 Copy。假如标记为 Copy,忽略 Header 中的用户元数据信息直接复制;假如标记为 Replaced,按 Header 信息修改元数据。当目标路径和原路径一致,即用户试图修改元数据时,必须为 Replaced
  40. */
  41. @property (strong, nonatomic) NSString *metadataDirective;
  42. /**
  43. 当 Object 在指定时间后被修改,则执行操作,否则返回 412。可与 x-cos-copy-source-If-None-Match 一起使用,与其他条件联合使用返回冲突。
  44. */
  45. @property (strong, nonatomic) NSString *objectCopyIfModifiedSince;
  46. /**
  47. 当 Object 在指定时间后未被修改,则执行操作,否则返回 412。可与 x-cos-copy-source-If-Match 一起使用,与其他条件联合使用返回冲突。
  48. */
  49. @property (strong, nonatomic) NSString *objectCopyIfUnmodifiedSince;
  50. /**
  51. 当 Object 的 Etag 和给定一致时,则执行操作,否则返回 412。可与x-cos-copy-source-If-Unmodified-Since 一起使用,与其他条件联合使用返回冲突。
  52. */
  53. @property (strong, nonatomic) NSString *objectCopyIfMatch;
  54. /**
  55. 当 Object 的 Etag 和给定不一致时,则执行操作,否则返回 412。可与 x-cos-copy-source-If-Modified-Since 一起使用,与其他条件联合使用返回冲突。
  56. */
  57. @property (strong, nonatomic) NSString *objectCopyIfNoneMatch;
  58. /**
  59. Object 的存储级别
  60. */
  61. @property (assign, nonatomic) QCloudCOSStorageClass storageClass;
  62. /**
  63. 定义 Object 的 ACL 属性。有效值:private,public-read-write,public-read;默认值:private
  64. */
  65. @property (strong, nonatomic) NSString *accessControlList;
  66. /**
  67. 赋予被授权者读的权限。格式:id=" ",id=" ";
  68. 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
  69. 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
  70. */
  71. @property (strong, nonatomic) NSString *grantRead;
  72. /**
  73. 赋予被授权者写的权限。格式:id=" ",id=" ";
  74. 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
  75. 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
  76. */
  77. @property (strong, nonatomic) NSString *grantWrite;
  78. /**
  79. 赋予被授权者读写权限。格式: id=" ",id=" " ;
  80. 当需要给子账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<SubUin>",
  81. 当需要给根账户授权时,id="qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>"
  82. */
  83. @property (strong, nonatomic) NSString *grantFullControl;
  84. @property (nonatomic, weak) QCloudCOSTransferMangerService* transferManager;
  85. /**
  86. 在对大文件进行复制的过程中,会通过分片的方式进行复制。从该进度回调里可以获取当前已经复制了多少分片。
  87. @param copyProgressBlock 进度回调block
  88. */
  89. - (void)setCopyProgressBlock:(void(^)(int64_t partsSent, int64_t totalPartsExpectedToSent))copyProgressBlock;
  90. /*
  91. 在进行HTTP请求的时候,可以通过设置该参数来设置自定义的一些头部信息。
  92. 通常情况下,携带特定的额外HTTP头部可以使用某项功能,如果是这类需求,可以通过设置该属性来实现。
  93. 例如使用加密等功能时,可以通过设置自定义头部来实现。对于小文件直接复制,该头文件将直接加载生成的 CopyObject 请求中。如果是大文件采用了分块复制的方式,那么该头部会加在 InitialMultipartUpload 和 UploadPartCopy 请求中。
  94. */
  95. @property (strong, nonatomic) NSDictionary* customHeaders;
  96. /**
  97. Copy操作完成后的回调
  98. @param QCloudRequestFinishBlock 完成回调
  99. */
  100. - (void) setFinishBlock:(void (^)(QCloudCopyObjectResult* result, NSError * error))QCloudRequestFinishBlock;
  101. @end