Skip to content

Commit

Permalink
object lifecycle archive ir (#423)
Browse files Browse the repository at this point in the history
  • Loading branch information
lihsai0 authored Dec 6, 2023
1 parent 9ee81f0 commit fd5a85c
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 38 deletions.
4 changes: 3 additions & 1 deletion examples/bucket_lifecycleRule.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
$prefix = 'test'; // 规则策略中的前缀
$delete_after_days = 80; // 用户新创建的文件将在该设定时间之后自动删除
$to_line_after_days = 70; // 用户新创建的文件将在该设定的时间之后自动转为低频存储
$to_archive_ir_after_days = 71; // 用户新创建的文件将在该设定的时间之后自动转为归档直读存储
$to_archive_after_days = 72; // 用户新创建的文件将在该设定的时间之后自动转为归档存储
$to_deep_archive_after_days = 74; // 用户新创建的文件将在该设定的时间之后自动转为深度归档存储

Expand All @@ -31,7 +32,8 @@
$delete_after_days,
$to_line_after_days,
$to_archive_after_days,
$to_deep_archive_after_days
$to_deep_archive_after_days,
$to_archive_ir_after_days
);
if ($err != null) {
var_dump($err);
Expand Down
1 change: 1 addition & 0 deletions examples/rs_batch_change_type.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
// 1 表示低频存储
// 2 表示归档存储
// 3 表示深度归档存储
// 4 表示归档直读存储
foreach ($keys as $key) {
$keyTypePairs[$key] = 1;
}
Expand Down
2 changes: 1 addition & 1 deletion examples/rs_change_type.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
// 参考文档:https://developer.qiniu.com/kodo/api/3710/chtype

$key = "qiniu.mp4";
$fileType = 1; // 0 表示标准存储;1 表示低频存储;2 表示归档存储;3 表示深度归档存储
$fileType = 1; // 0 表示标准存储;1 表示低频存储;2 表示归档存储;3 表示深度归档存储;4 表示归档直读存储;

list($ret, $err) = $bucketManager->changeType($bucket, $key, $fileType);
if ($err != null) {
Expand Down
96 changes: 65 additions & 31 deletions src/Qiniu/Storage/BucketManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -215,18 +215,23 @@ public function listFilesv2(
/**
* 增加bucket生命规则
*
* @param string $bucket 空间名
* @param string $name 规则名称 bucket 内唯一,长度小于50,不能为空,只能为
* 字母、数字、下划线
* @param string $prefix 同一个 bucket 里面前缀不能重复
* @param int $delete_after_days 指定上传文件多少天后删除,指定为0表示不删除,
* 大于0表示多少天后删除,需大于 to_line_after_days
* @param int $to_line_after_days 指定文件上传多少天后转低频存储。指定为0表示
* 不转低频存储,小于0表示上传的文件立即变低频存储
* @param int $to_archive_after_days 指定文件上传多少天后转归档存储。指定为0表示
* 不转归档存储,小于0表示上传的文件立即变归档存储
* @param int $to_deep_archive_after_days 指定文件上传多少天后转深度归档存储。指定为0表示
* 不转深度归档存储,小于0表示上传的文件立即变深度归档存储
* @param string $bucket
* 空间名
* @param string $name
* 规则名称 bucket 内唯一,长度小于50,不能为空,只能为字母、数字、下划线
* @param string $prefix
* 同一个 bucket 里面前缀不能重复
* @param int $delete_after_days
* 指定上传文件多少天后删除,指定为0表示不删除,大于0表示多少天后删除。
* 需大于 to_line_after_days
* @param int $to_line_after_days
* 指定文件上传多少天后转低频存储。指定为0表示不转低频存储
* @param int $to_archive_ir_after_days
* 指定文件上传多少天后转归档直读。指定为0表示不转归档直读
* @param int $to_archive_after_days
* 指定文件上传多少天后转归档存储。指定为0表示不转归档存储
* @param int $to_deep_archive_after_days
* 指定文件上传多少天后转深度归档存储。指定为0表示不转深度归档存储
* @return array
*/
public function bucketLifecycleRule(
Expand All @@ -236,7 +241,8 @@ public function bucketLifecycleRule(
$delete_after_days = null,
$to_line_after_days = null,
$to_archive_after_days = null,
$to_deep_archive_after_days = null
$to_deep_archive_after_days = null,
$to_archive_ir_after_days = null
) {
$path = '/rules/add';
$params = array();
Expand All @@ -255,6 +261,9 @@ public function bucketLifecycleRule(
if ($to_line_after_days) {
$params['to_line_after_days'] = $to_line_after_days;
}
if ($to_archive_ir_after_days) {
$params['to_archive_ir_after_days'] = $to_archive_ir_after_days;
}
if ($to_archive_after_days) {
$params['to_archive_after_days'] = $to_archive_after_days;
}
Expand All @@ -269,18 +278,23 @@ public function bucketLifecycleRule(
/**
* 更新bucket生命规则
*
* @param string $bucket 空间名
* @param string $name 规则名称 bucket 内唯一,长度小于50,不能为空,只能为字母、
* 数字、下划线
* @param string $prefix 同一个 bucket 里面前缀不能重复
* @param int $delete_after_days 指定上传文件多少天后删除,指定为0表示不删除,
* 大于0表示多少天后删除,需大于 to_line_after_days
* @param int $to_line_after_days 指定文件上传多少天后转低频存储。指定为0表示不
* 转低频存储,小于0表示上传的文件立即变低频存储
* @param int $to_archive_after_days 指定文件上传多少天后转归档存储。指定为0表示
* 不转归档存储,小于0表示上传的文件立即变归档存储
* @param int $to_deep_archive_after_days 指定文件上传多少天后转深度归档存储。指定为0表示
* 不转深度归档存储,小于0表示上传的文件立即变深度归档存储
* @param string $bucket
* 空间名
* @param string $name
* 规则名称 bucket 内唯一,长度小于50,不能为空,只能为字母、数字、下划线
* @param string $prefix
* 同一个 bucket 里面前缀不能重复
* @param int $delete_after_days
* 指定上传文件多少天后删除,指定为0表示不删除,大于0表示多少天后删除
* 需大于 to_line_after_days
* @param int $to_line_after_days
* 指定文件上传多少天后转低频存储。指定为0表示不转低频存储
* @param int $to_archive_ir_after_days
* 指定文件上传多少天后转归档只读。指定为0表示不转归档只读
* @param int $to_archive_after_days
* 指定文件上传多少天后转归档存储。指定为0表示不转归档存储
* @param int $to_deep_archive_after_days
* 指定文件上传多少天后转深度归档存储。指定为0表示不转深度归档存储
* @return array
*/
public function updateBucketLifecycleRule(
Expand All @@ -290,7 +304,8 @@ public function updateBucketLifecycleRule(
$delete_after_days = null,
$to_line_after_days = null,
$to_archive_after_days = null,
$to_deep_archive_after_days = null
$to_deep_archive_after_days = null,
$to_archive_ir_after_days = null
) {
$path = '/rules/update';
$params = array();
Expand All @@ -309,6 +324,9 @@ public function updateBucketLifecycleRule(
if ($to_line_after_days) {
$params['to_line_after_days'] = $to_line_after_days;
}
if ($to_archive_ir_after_days) {
$params['to_archive_ir_after_days'] = $to_archive_ir_after_days;
}
if ($to_archive_after_days) {
$params['to_archive_after_days'] = $to_archive_after_days;
}
Expand Down Expand Up @@ -724,6 +742,7 @@ public function changeMime($bucket, $key, $mime)
* 1 表示低频存储;
* 2 表示归档存储;
* 3 表示深度归档存储;
* 4 表示归档直读存储;
*
* @return array
* @link https://developer.qiniu.com/kodo/api/3710/chtype
Expand Down Expand Up @@ -811,7 +830,7 @@ public function fetch($url, $bucket, $key = null)
* @param string $callbackbody 回调Body
* @param string $callbackbodytype 回调Body内容类型,默认为"application/x-www-form-urlencoded"
* @param string $callbackhost 回调时使用的Host
* @param int $file_type 存储文件类型 0:标准存储(默认),1:低频存储,2:归档存储
* @param int $file_type 存储文件类型 0:标准存储(默认),1:低频存储,2:归档存储,3:深度归档存储,4:归档直读存储
* @param bool $ignore_same_key 如果空间中已经存在同名文件则放弃本次抓取
* @return array
* @link https://developer.qiniu.com/kodo/api/4097/asynch-fetch
Expand Down Expand Up @@ -952,6 +971,9 @@ public function deleteAfterDays($bucket, $key, $days)
* @param int $to_line_after_days 多少天后将文件转为低频存储。
* -1 表示取消已设置的转低频存储的生命周期规则;
* 0 表示不修改转低频生命周期规则。
* @param int $to_archive_ir_after_days 多少天后转为归档直读存储。
* -1 表示取消已设置的转归档直读存储的生命周期规则;
* 0 表示不修改转归档直读生命周期规则。
* @param int $to_archive_after_days 多少天后将文件转为归档存储。
* -1 表示取消已设置的转归档存储的生命周期规则;
* 0 表示不修改转归档生命周期规则。
Expand All @@ -969,7 +991,8 @@ public function setObjectLifecycle(
$to_line_after_days = 0,
$to_archive_after_days = 0,
$to_deep_archive_after_days = 0,
$delete_after_days = 0
$delete_after_days = 0,
$to_archive_ir_after_days = 0
) {
return $this->setObjectLifecycleWithCond(
$bucket,
Expand All @@ -978,7 +1001,8 @@ public function setObjectLifecycle(
$to_line_after_days,
$to_archive_after_days,
$to_deep_archive_after_days,
$delete_after_days
$delete_after_days,
$to_archive_ir_after_days
);
}

Expand All @@ -990,6 +1014,9 @@ public function setObjectLifecycle(
* @param int $to_line_after_days 多少天后将文件转为低频存储。
* 设置为 -1 表示取消已设置的转低频存储的生命周期规则;
* 0 表示不修改转低频生命周期规则。
* @param int $to_archive_ir_after_days 多少天后将文件转为归档直读存储。
* 设置为 -1 表示取消已设置的转归档直读存储的生命周期规则;
* 0 表示不修改转归档直读生命周期规则。
* @param int $to_archive_after_days 多少天后将文件转为归档存储。
* -1 表示取消已设置的转归档存储的生命周期规则;
* 0 表示不修改转归档生命周期规则。
Expand All @@ -1010,11 +1037,13 @@ public function setObjectLifecycleWithCond(
$to_line_after_days = 0,
$to_archive_after_days = 0,
$to_deep_archive_after_days = 0,
$delete_after_days = 0
$delete_after_days = 0,
$to_archive_ir_after_days = 0
) {
$encodedEntry = \Qiniu\entry($bucket, $key);
$path = '/lifecycle/' . $encodedEntry .
'/toIAAfterDays/' . $to_line_after_days .
'/toArchiveIRAfterDays/' . $to_archive_ir_after_days .
'/toArchiveAfterDays/' . $to_archive_after_days .
'/toDeepArchiveAfterDays/' . $to_deep_archive_after_days .
'/deleteAfterDays/' . $delete_after_days;
Expand Down Expand Up @@ -1182,6 +1211,9 @@ public static function buildBatchDeleteAfterDays($bucket, $key_day_pairs)
* @param int $to_line_after_days 多少天后将文件转为低频存储。
* -1 表示取消已设置的转低频存储的生命周期规则;
* 0 表示不修改转低频生命周期规则。
* @param int $to_archive_ir_after_days 多少天后将文件转为归档直读。
* -1 表示取消已设置的转归档只读的生命周期规则;
* 0 表示不修改转归档只读周期规则。
* @param int $to_archive_after_days 多少天后将文件转为归档存储。
* -1 表示取消已设置的转归档存储的生命周期规则;
* 0 表示不修改转归档生命周期规则。
Expand All @@ -1200,13 +1232,15 @@ public static function buildBatchSetObjectLifecycle(
$to_line_after_days,
$to_archive_after_days,
$to_deep_archive_after_days,
$delete_after_days
$delete_after_days,
$to_archive_ir_after_days = 0
) {
$result = array();
foreach ($keys as $key) {
$encodedEntry = \Qiniu\entry($bucket, $key);
$op = '/lifecycle/' . $encodedEntry .
'/toIAAfterDays/' . $to_line_after_days .
'/toArchiveIRAfterDays/' . $to_archive_ir_after_days .
'/toArchiveAfterDays/' . $to_archive_after_days .
'/toDeepArchiveAfterDays/' . $to_deep_archive_after_days .
'/deleteAfterDays/' . $delete_after_days;
Expand Down
19 changes: 14 additions & 5 deletions tests/Qiniu/Tests/BucketTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,8 @@ public function testBucketLifecycleRule()
80,
70,
72,
74
74,
71
);
$this->assertNull($error);
$this->assertNotNull($ret);
Expand All @@ -192,6 +193,7 @@ public function testBucketLifecycleRule()
$this->assertEquals(self::$bucketLifeRulePrefix, $rule["prefix"]);
$this->assertEquals(80, $rule["delete_after_days"]);
$this->assertEquals(70, $rule["to_line_after_days"]);
//$this->assertEquals(71, $rule["to_archive_ir_after_days"]);
$this->assertEquals(72, $rule["to_archive_after_days"]);
$this->assertEquals(74, $rule["to_deep_archive_after_days"]);

Expand All @@ -203,7 +205,8 @@ public function testBucketLifecycleRule()
90,
75,
80,
85
85,
78
);
$this->assertNull($error);
$this->assertNotNull($ret);
Expand All @@ -223,6 +226,7 @@ public function testBucketLifecycleRule()
$this->assertEquals('update-' . self::$bucketLifeRulePrefix, $rule["prefix"]);
$this->assertEquals(90, $rule["delete_after_days"]);
$this->assertEquals(75, $rule["to_line_after_days"]);
//$this->assertEquals(78, $rule["to_archive_ir_after_days"]);
$this->assertEquals(80, $rule["to_archive_after_days"]);
$this->assertEquals(85, $rule["to_deep_archive_after_days"]);

Expand Down Expand Up @@ -549,13 +553,15 @@ public function testSetObjectLifecycle()
10,
20,
30,
40
40,
15
);
$this->assertNull($err);

list($ret, $error) = self::$bucketManager->stat(self::$bucketName, $key);
$this->assertNull($error);
$this->assertNotNull($ret['transitionToIA']);
//$this->assertNotNull($ret['transitionToArchiveIR']);
$this->assertNotNull($ret['transitionToARCHIVE']);
$this->assertNotNull($ret['transitionToDeepArchive']);
$this->assertNotNull($ret['expiration']);
Expand All @@ -580,13 +586,15 @@ public function testSetObjectLifecycleWithCond()
10,
20,
30,
40
40,
15
);
$this->assertNull($err);

list($ret, $error) = self::$bucketManager->stat(self::$bucketName, $key);
$this->assertNull($error);
$this->assertNotNull($ret['transitionToIA']);
//$this->assertNotNull($ret['transitionToArchiveIR']);
$this->assertNotNull($ret['transitionToARCHIVE']);
$this->assertNotNull($ret['transitionToDeepArchive']);
$this->assertNotNull($ret['expiration']);
Expand All @@ -602,7 +610,8 @@ public function testBatchSetObjectLifecycle()
10,
20,
30,
40
40,
15
);
list($ret, $err) = self::$bucketManager->batch($ops);
$this->assertNull($err);
Expand Down

0 comments on commit fd5a85c

Please sign in to comment.