From fd5a85ca2fcc3f90a9d11cf8795cdd3fc1073787 Mon Sep 17 00:00:00 2001 From: lihsai0 Date: Wed, 6 Dec 2023 17:29:16 +0800 Subject: [PATCH] object lifecycle archive ir (#423) --- examples/bucket_lifecycleRule.php | 4 +- examples/rs_batch_change_type.php | 1 + examples/rs_change_type.php | 2 +- src/Qiniu/Storage/BucketManager.php | 96 +++++++++++++++++++---------- tests/Qiniu/Tests/BucketTest.php | 19 ++++-- 5 files changed, 84 insertions(+), 38 deletions(-) diff --git a/examples/bucket_lifecycleRule.php b/examples/bucket_lifecycleRule.php index 9dc0f84c..f51524cd 100644 --- a/examples/bucket_lifecycleRule.php +++ b/examples/bucket_lifecycleRule.php @@ -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; // 用户新创建的文件将在该设定的时间之后自动转为深度归档存储 @@ -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); diff --git a/examples/rs_batch_change_type.php b/examples/rs_batch_change_type.php index 6c8df84a..a19d0d47 100644 --- a/examples/rs_batch_change_type.php +++ b/examples/rs_batch_change_type.php @@ -31,6 +31,7 @@ // 1 表示低频存储 // 2 表示归档存储 // 3 表示深度归档存储 +// 4 表示归档直读存储 foreach ($keys as $key) { $keyTypePairs[$key] = 1; } diff --git a/examples/rs_change_type.php b/examples/rs_change_type.php index 802c9f44..c1d7b86f 100644 --- a/examples/rs_change_type.php +++ b/examples/rs_change_type.php @@ -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) { diff --git a/src/Qiniu/Storage/BucketManager.php b/src/Qiniu/Storage/BucketManager.php index dc66eb2a..29b4a363 100644 --- a/src/Qiniu/Storage/BucketManager.php +++ b/src/Qiniu/Storage/BucketManager.php @@ -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( @@ -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(); @@ -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; } @@ -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( @@ -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(); @@ -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; } @@ -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 @@ -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 @@ -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 表示不修改转归档生命周期规则。 @@ -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, @@ -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 ); } @@ -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 表示不修改转归档生命周期规则。 @@ -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; @@ -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 表示不修改转归档生命周期规则。 @@ -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; diff --git a/tests/Qiniu/Tests/BucketTest.php b/tests/Qiniu/Tests/BucketTest.php index d30b6748..220d2f29 100755 --- a/tests/Qiniu/Tests/BucketTest.php +++ b/tests/Qiniu/Tests/BucketTest.php @@ -172,7 +172,8 @@ public function testBucketLifecycleRule() 80, 70, 72, - 74 + 74, + 71 ); $this->assertNull($error); $this->assertNotNull($ret); @@ -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"]); @@ -203,7 +205,8 @@ public function testBucketLifecycleRule() 90, 75, 80, - 85 + 85, + 78 ); $this->assertNull($error); $this->assertNotNull($ret); @@ -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"]); @@ -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']); @@ -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']); @@ -602,7 +610,8 @@ public function testBatchSetObjectLifecycle() 10, 20, 30, - 40 + 40, + 15 ); list($ret, $err) = self::$bucketManager->batch($ops); $this->assertNull($err);