diff --git a/samples/Bucket.php b/samples/Bucket.php
index a54b74e..50a77e5 100644
--- a/samples/Bucket.php
+++ b/samples/Bucket.php
@@ -29,6 +29,7 @@
// Get the info of bucket
$info = $ossClient->getBucketInfo($bucket);
Common::println("bucket name:".$info->getName()."\n");
+Common::println("bucket access monitor:".$info->getAccessMonitor()."\n");
Common::println("bucket location:". $info->getLocation()."\n");
Common::println("bucket creation time:".$info->getCreateDate()."\n");
Common::println("bucket storage class:".$info->getStorageClass()."\n");
@@ -114,6 +115,7 @@ function getBucketInfo($ossClient, $bucket)
try {
$info = $ossClient->getBucketInfo($bucket);
printf("bucket name:%s\n", $info->getName());
+ printf("bucket access monitor:%s",$info->getAccessMonitor()."\n");
printf("bucket location:%s\n", $info->getLocation());
printf("bucket creation time:%s\n", $info->getCreateDate());
printf("bucket storage class:%s\n", $info->getStorageClass());
diff --git a/samples/BucketAccessMonitor.php b/samples/BucketAccessMonitor.php
new file mode 100644
index 0000000..76010f1
--- /dev/null
+++ b/samples/BucketAccessMonitor.php
@@ -0,0 +1,61 @@
+putBucketAccessMonitor($bucket, $status);
+printf('Put Bucket Access Monitor Success' . "\n");
+
+
+// get access monitor
+$status = $ossClient->getBucketAccessMonitor($bucket);
+printf('Get Bucket Access Monitor Status:%s'."\n",$status);
+
+
+//******************************* For complete usage, see the following functions ****************************************************
+putBucketAccessMonitor($ossClient,$bucket);
+getBucketAccessMonitor($ossClient,$bucket);
+
+/**
+ * putBucketAccessMonitor
+ * @param $ossClient OssClient
+ * @param string $bucket bucket_name string
+ */
+function putBucketAccessMonitor($ossClient, $bucket)
+{
+ try{
+ $status = 'Enabled'; // set Enabled to enable access monitor; set Disabled to disable access monitor
+ $ossClient->putBucketTransferAcceleration($bucket,$status);
+ printf('Put Bucket Access Monitor Success' . "\n");
+ } catch(OssException $e) {
+ printf($e->getMessage() . "\n");
+ return;
+ }
+ print(__FUNCTION__ . ": OK" . "\n");
+}
+
+/**
+ * @param $ossClient OssClient
+ * @param string $bucket bucket_name
+ */
+function getBucketAccessMonitor($ossClient, $bucket)
+{
+ try{
+ $status = $ossClient->getBucketAccessMonitor($bucket);
+ printf('Get Bucket Access Monitor Status:%s'."\n",$status);
+ } catch(OssException $e) {
+ printf($e->getMessage() . "\n");
+ return;
+ }
+ print(__FUNCTION__ . ": OK" . "\n");
+}
diff --git a/samples/BucketLifecycle.php b/samples/BucketLifecycle.php
index 04d2edd..d8bb636 100644
--- a/samples/BucketLifecycle.php
+++ b/samples/BucketLifecycle.php
@@ -3,9 +3,15 @@
use OSS\OssClient;
use OSS\Core\OssException;
-use OSS\Model\LifecycleAction;
-use OSS\Model\LifecycleConfig;
use OSS\Model\LifecycleRule;
+use OSS\Model\LifecycleConfig;
+use OSS\Model\LifecycleExpiration;
+use OSS\Model\LifecycleAbortMultipartUpload;
+use OSS\Model\LifecycleTag;
+use OSS\Model\LifecycleTransition;
+use OSS\Model\LifecycleNoncurrentVersionTransition;
+use OSS\Model\LifecycleNot;
+use OSS\Model\LifecycleFilter;
$bucket = Common::getBucketName();
$ossClient = Common::getOssClient();
@@ -15,17 +21,224 @@
// Set lifecycle configuration
$lifecycleConfig = new LifecycleConfig();
-$actions = array();
-$actions[] = new LifecycleAction("Expiration", "Days", 3);
-$lifecycleRule = new LifecycleRule("delete obsoleted files", "obsoleted/", "Enabled", $actions);
-$lifecycleConfig->addRule($lifecycleRule);
+
+// rule 1: the lifecycle rule ID is' rule1 ', the prefix is' logs/', and the status is' Enabled '
+$rule1 = new LifecycleRule("rule1", "logs/", LifecycleRule::STATUS_ENANLED);
+$lifecycleExpiration = new LifecycleExpiration();
+//set expiration time
+$lifecycleExpiration->setDays(3);
+$rule1->setExpiration($lifecycleExpiration);
+
+// The expired attributes that have not been uploaded will take effect one day after the object is last updated.
+$lifecycleAbortMultipartUpload = new LifecycleAbortMultipartUpload();
+$lifecycleAbortMultipartUpload->setDays(1);
+$rule1->setAbortMultipartUpload($lifecycleAbortMultipartUpload);
+
+$lifecycleConfig->addRule($rule1);
+
+// rule 2: set id,prefix,status
+$rule2 = new LifecycleRule("rule2", "logs2/", LifecycleRule::STATUS_ENANLED);
+// Convert the object storage type to AI within 30 days
+$lifecycleTransition = new LifecycleTransition();
+$lifecycleTransition->setDays(30);
+$lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+$rule2->addTransition($lifecycleTransition);
+// Convert the object storage type to Archive within 60 days
+$lifecycleTransition = new LifecycleTransition();
+$lifecycleTransition->setDays(60);
+$lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_ARCHIVE);
+$rule2->addTransition($lifecycleTransition);
+
+$lifecycleExpiration = new LifecycleExpiration();
+// The specified lifecycle rule takes effect 180 days after the object is last updated.
+$lifecycleExpiration->setDays(180);
+$rule2->setExpiration($lifecycleExpiration);
+$lifecycleConfig->addRule($rule2);
+
+// rule 3: add expiration CreatedBeforeDate and AbortMultipartUpload CreatedBeforeDate
+$rule3 = new LifecycleRule("rule3", "logs3/", LifecycleRule::STATUS_ENANLED);
+$lifecycleExpiration = new LifecycleExpiration();
+// The last update time is earlier than 2017-01-01T00:00:00.000Z object to be overdue
+$lifecycleExpiration->setCreatedBeforeDate("2017-01-01T00:00:00.000Z");
+$rule3->setExpiration($lifecycleExpiration);
+
+// The last update time is earlier than 2017-01-01T00:00:00.000Z Multipart to be overdue
+$lifecycleAbortMultipartUpload = new LifecycleAbortMultipartUpload();
+$lifecycleAbortMultipartUpload->setCreatedBeforeDate("2017-01-01T00:00:00.000Z");
+$rule3->setAbortMultipartUpload($lifecycleAbortMultipartUpload);
+$lifecycleConfig->addRule($rule3);
+
+// rule 4: add two tags
+$rule4 = new LifecycleRule("rule4", "logs4/", LifecycleRule::STATUS_ENANLED);
+
+$tag = new LifecycleTag();
+$tag->setKey("key1");
+$tag->setValue("val1");
+$rule4->addTag($tag);
+
+$tag2 = new LifecycleTag();
+$tag2->setKey("key12");
+$tag2->setValue("val12");
+$rule4->addTag($tag2);
+$lifecycleConfig->addRule($rule4);
+$lifecycleTransition = new LifecycleTransition();
+$lifecycleTransition->setDays(30);
+$lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+$rule4->addTransition($lifecycleTransition);
+
+
+// rule 5: transition add IsAccessTime false
+$rule5 = new LifecycleRule("rule5", "logs5/", LifecycleRule::STATUS_ENANLED);
+
+$lifecycleTransition = new LifecycleTransition();
+$lifecycleTransition->setDays(30);
+$lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+$lifecycleTransition->setIsAccessTime(false);
+$rule5->addTransition($lifecycleTransition);
+$lifecycleConfig->addRule($rule5);
+
+// rule 6: set id,prefix,status transition add IsAccessTime,ReturnToStdWhenVisit
+$rule6 = new LifecycleRule("rule6", "logs6/", LifecycleRule::STATUS_ENANLED);
+
+$lifecycleTransition = new LifecycleTransition();
+$lifecycleTransition->setDays(30);
+$lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+$lifecycleTransition->setIsAccessTime(true);
+$lifecycleTransition->setReturnToStdWhenVisit(false);
+$rule6->addTransition($lifecycleTransition);
+$lifecycleConfig->addRule($rule6);
+
+// rule 7: set id,prefix,status NoncurrentVersionExpiration addIsAccessTime,ReturnToStdWhenVisit
+$rule7 = new LifecycleRule("rule7", "logs7/", LifecycleRule::STATUS_ENANLED);
+
+$nonTransition = new LifecycleNoncurrentVersionTransition();
+$nonTransition->setNoncurrentDays(30);
+$nonTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+$nonTransition->setIsAccessTime(true);
+$nonTransition->setReturnToStdWhenVisit(true);
+$rule7->addNoncurrentVersionTransition($nonTransition);
+$lifecycleConfig->addRule($rule7);
$ossClient->putBucketLifecycle($bucket, $lifecycleConfig);
Common::println("bucket $bucket lifecycleConfig created:" . $lifecycleConfig->serializeToXml());
+// Set Lifecycle Rule With Filter
+$lifecycleConfig = new LifecycleConfig();
+$rule = new LifecycleRule("rule-filter", "logs", LifecycleRule::STATUS_ENANLED);
+$lifecycleTransition = new LifecycleTransition();
+$lifecycleTransition->setDays(30);
+$lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+$expiration = new LifecycleExpiration(100,null);
+
+$rule->addTransition($lifecycleTransition);
+$rule->setExpiration($expiration);
+$not = new LifecycleNot();
+$tag = new LifecycleTag();
+$tag->setKey("key1");
+$tag->setValue("val1");
+$not->setTag($tag);
+$not->setPrefix("logs1/");
+$filter = new LifecycleFilter();
+$filter->addNot($not);
+$rule->setFilter($filter);
+$lifecycleConfig->addRule($rule);
+$ossClient->putBucketLifecycle($bucket, $lifecycleConfig);
+Common::println("bucket $bucket lifecycleConfig created:" . $lifecycleConfig->serializeToXml());
+
+
// Get lifecycle configuration
$lifecycleConfig = $ossClient->getBucketLifecycle($bucket);
Common::println("bucket $bucket lifecycleConfig fetched:" . $lifecycleConfig->serializeToXml());
+// print lifecycle config
+$rules = $lifecycleConfig->getRules();
+foreach ($rules as $rule){
+ printf("=====================".$rule->getId()."====info================".PHP_EOL);
+ printf("Rule Id:".$rule->getId().PHP_EOL);
+ printf("Rule Status:".$rule->getStatus().PHP_EOL);
+ printf("Rule Prefix:".$rule->getPrefix().PHP_EOL);
+
+ // print expiration
+ $expiration = $rule->getExpiration();
+ if (isset($expiration)){
+ if ($expiration->getDays()){
+ printf("Rule Expiration Days:".$expiration->getDays().PHP_EOL);
+ }
+ if ($expiration->getDate()){
+ printf("Rule Expiration Date:".$expiration->getDate().PHP_EOL);
+ }
+ if ($expiration->getCreatedBeforeDate()){
+ printf("Rule Expiration Created Before Date:".$expiration->getCreatedBeforeDate().PHP_EOL);
+ }
+ if ($expiration->getExpiredObjectDeleteMarker()){
+ printf("Rule Expiration Expired Object Delete Marker:".$expiration->getExpiredObjectDeleteMarker().PHP_EOL);
+ }
+ }
+
+ // print tag
+ $tags = $rule->getTag();
+ if (isset($tags)){
+ foreach ($tags as $tag){
+ printf("Rule Tag Key:".$tag->getKey().PHP_EOL);
+ printf("Rule Tag Value:".$tag->getValue().PHP_EOL);
+ }
+ }
+ // print transition
+ $transitions = $rule->getTransition();
+ if (isset($transitions)){
+ foreach ($transitions as $transition){
+ printf("Rule Transition Days:".$transition->getDays().PHP_EOL);
+ printf("Rule Transition Created Before Date:".$transition->getCreatedBeforeDate().PHP_EOL);
+ printf("Rule Transition Storage Class:".$transition->getStorageClass().PHP_EOL);
+ printf("Rule Transition Is Access Time:".$transition->getIsAccessTime().PHP_EOL);
+ printf("Rule Transition Return To Std When Visit:".$transition->getReturnToStdWhenVisit().PHP_EOL);
+ printf("Rule Transition Allow Small File:".$transition->getAllowSmallFile().PHP_EOL);
+ }
+ }
+
+ //print Abort Multipart Upload
+ $abortMultipartUpload = $rule->getAbortMultipartUpload();
+ if (isset($abortMultipartUpload)){
+ if ($abortMultipartUpload->getDays()){
+ printf("Rule Abort Multipart Upload Days:".$abortMultipartUpload->getDays().PHP_EOL);
+ }
+
+ if ($abortMultipartUpload->getCreatedBeforeDate()){
+ printf("Rule Abort Multipart Upload Created Before Date:".$abortMultipartUpload->getCreatedBeforeDate().PHP_EOL);
+ }
+
+ }
+
+ //print Noncurrent Version Transition
+ $nonVersionTransitions = $rule->getNoncurrentVersionTransition();
+ if (isset($nonVersionTransitions)){
+ foreach ($nonVersionTransitions as $nonVersionTransition){
+ printf("Rule Non Version Transition Non Current Days:".$nonVersionTransition->getNoncurrentDays().PHP_EOL);
+ printf("Rule Non Version Transition Storage Class:".$nonVersionTransition->getStorageClass().PHP_EOL);
+ printf("Rule Non Version Transition Is Access Time:".$nonVersionTransition->getIsAccessTime().PHP_EOL);
+ printf("Rule Non Version Transition Return To Std When Visit:".$nonVersionTransition->getReturnToStdWhenVisit().PHP_EOL);
+ printf("Rule Non Version Transition Allow Small File:".$nonVersionTransition->getAllowSmallFile().PHP_EOL);
+ }
+ }
+
+ $filter = $rule->getFilter();
+ if (isset($filter)){
+ foreach ($filter->getNot() as $not){
+ if ($not->getPrefix()) {
+ printf("Rule Filter Not Prefix:".$not->getTag()->getKey().PHP_EOL);
+ }
+
+ if ($not->getTag()->getKey()) {
+ printf("Rule Filter Not Tag Key:".$not->getTag()->getKey().PHP_EOL);
+ }
+
+ if ($not->getTag()->getValue()) {
+ printf("Rule Filter Not Tag Value:".$not->getTag()->getValue().PHP_EOL);
+ }
+ }
+ }
+
+}
+
// Delete bucket lifecycle configuration
$ossClient->deleteBucketLifecycle($bucket);
Common::println("bucket $bucket lifecycleConfig deleted");
@@ -47,15 +260,102 @@
*/
function putBucketLifecycle($ossClient, $bucket)
{
+ // Set lifecycle configuration
$lifecycleConfig = new LifecycleConfig();
- $actions = array();
- $actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DAYS, 3);
- $lifecycleRule = new LifecycleRule("delete obsoleted files", "obsoleted/", "Enabled", $actions);
- $lifecycleConfig->addRule($lifecycleRule);
- $actions = array();
- $actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DATE, '2022-10-12T00:00:00.000Z');
- $lifecycleRule = new LifecycleRule("delete temporary files", "temporary/", "Enabled", $actions);
- $lifecycleConfig->addRule($lifecycleRule);
+
+ // rule 1: the lifecycle rule ID is' rule1 ', the prefix is' logs/', and the status is' Enabled '
+ $rule1 = new LifecycleRule("rule1", "logs/", LifecycleRule::STATUS_ENANLED);
+ $lifecycleExpiration = new LifecycleExpiration();
+ //set expiration time
+ $lifecycleExpiration->setDays(3);
+ $rule1->setExpiration($lifecycleExpiration);
+
+ // The expired attributes that have not been uploaded will take effect one day after the object is last updated.
+ $lifecycleAbortMultipartUpload = new LifecycleAbortMultipartUpload();
+ $lifecycleAbortMultipartUpload->setDays(1);
+ $rule1->setAbortMultipartUpload($lifecycleAbortMultipartUpload);
+
+ $lifecycleConfig->addRule($rule1);
+
+ // rule 2: the lifecycle rule ID is' rule2 ', the prefix is' logs2/', and the status is' Enabled '
+ $rule2 = new LifecycleRule("rule2", "logs2/", LifecycleRule::STATUS_ENANLED);
+ // Convert the object storage type to AI within 30 days
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+ $rule2->addTransition($lifecycleTransition);
+ // Convert the object storage type to Archive within 60 days
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(60);
+ $lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_ARCHIVE);
+ $rule2->addTransition($lifecycleTransition);
+
+ $lifecycleExpiration = new LifecycleExpiration();
+ // The specified lifecycle rule takes effect 180 days after the object is last updated.
+ $lifecycleExpiration->setDays(180);
+ $rule2->setExpiration($lifecycleExpiration);
+ $lifecycleConfig->addRule($rule2);
+
+ // rule 3
+ $rule3 = new LifecycleRule("rule3", "logs3/", LifecycleRule::STATUS_ENANLED);
+ $lifecycleExpiration = new LifecycleExpiration();
+ // The last update time is earlier than 2017-01-01T00:00:00.000Z object to be overdue
+ $lifecycleExpiration->setCreatedBeforeDate("2017-01-01T00:00:00.000Z");
+ $rule3->setExpiration($lifecycleExpiration);
+
+ // The last update time is earlier than 2017-01-01T00:00:00.000Z Multipart to be overdue
+ $lifecycleAbortMultipartUpload = new LifecycleAbortMultipartUpload();
+ $lifecycleAbortMultipartUpload->setCreatedBeforeDate("2017-01-01T00:00:00.000Z");
+ $rule3->setAbortMultipartUpload($lifecycleAbortMultipartUpload);
+ $lifecycleConfig->addRule($rule3);
+
+ // rule 4: add two tags
+ $rule4 = new LifecycleRule("rule4", "logs4/", LifecycleRule::STATUS_ENANLED);
+
+ $tag = new LifecycleTag();
+ $tag->setKey("key1");
+ $tag->setValue("val1");
+ $rule4->addTag($tag);
+ $tag2 = new LifecycleTag();
+ $tag2->setKey("key12");
+ $tag2->setValue("val12");
+ $rule4->addTag($tag2);
+ $lifecycleConfig->addRule($rule4);
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+ $rule4->addTransition($lifecycleTransition);
+
+ // rule 5:
+ $rule5 = new LifecycleRule("rule5", "logs5/", LifecycleRule::STATUS_ENANLED);
+
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+ $lifecycleTransition->setIsAccessTime(false);
+ $rule5->addTransition($lifecycleTransition);
+ $lifecycleConfig->addRule($rule5);
+
+ // rule 6t
+ $rule6 = new LifecycleRule("rule6", "logs6/", LifecycleRule::STATUS_ENANLED);
+
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+ $lifecycleTransition->setIsAccessTime(true);
+ $lifecycleTransition->setReturnToStdWhenVisit(false);
+ $rule6->addTransition($lifecycleTransition);
+ $lifecycleConfig->addRule($rule6);
+
+ // rule 7
+ $rule7 = new LifecycleRule("rule7", "logs7/", LifecycleRule::STATUS_ENANLED);
+
+ $nonTransition = new LifecycleNoncurrentVersionTransition();
+ $nonTransition->setNoncurrentDays(30);
+ $nonTransition->setStorageClass($ossClient::OSS_STORAGE_IA);
+ $nonTransition->setIsAccessTime(true);
+ $nonTransition->setReturnToStdWhenVisit(true);
+ $rule7->addNoncurrentVersionTransition($nonTransition);
try {
$ossClient->putBucketLifecycle($bucket, $lifecycleConfig);
} catch (OssException $e) {
@@ -75,7 +375,6 @@ function putBucketLifecycle($ossClient, $bucket)
*/
function getBucketLifecycle($ossClient, $bucket)
{
- $lifecycleConfig = null;
try {
$lifecycleConfig = $ossClient->getBucketLifecycle($bucket);
} catch (OssException $e) {
@@ -83,8 +382,98 @@ function getBucketLifecycle($ossClient, $bucket)
printf($e->getMessage() . "\n");
return;
}
+
print(__FUNCTION__ . ": OK" . "\n");
print($lifecycleConfig->serializeToXml() . "\n");
+ // print lifecycle config
+ $rules = $lifecycleConfig->getRules();
+ foreach ($rules as $rule){
+ printf("=====================".$rule->getId()."====info================".PHP_EOL);
+ printf("Rule Id:".$rule->getId().PHP_EOL);
+ printf("Rule Status:".$rule->getStatus().PHP_EOL);
+ printf("Rule Prefix:".$rule->getPrefix().PHP_EOL);
+
+ // print expiration
+ $expiration = $rule->getExpiration();
+ if (isset($expiration)){
+ if ($expiration->getDays()){
+ printf("Rule Expiration Days:".$expiration->getDays().PHP_EOL);
+ }
+ if ($expiration->getDate()){
+ printf("Rule Expiration Date:".$expiration->getDate().PHP_EOL);
+ }
+ if ($expiration->getCreatedBeforeDate()){
+ printf("Rule Expiration Created Before Date:".$expiration->getCreatedBeforeDate().PHP_EOL);
+ }
+ if ($expiration->getExpiredObjectDeleteMarker()){
+ printf("Rule Expiration Expired Object Delete Marker:".$expiration->getExpiredObjectDeleteMarker().PHP_EOL);
+ }
+ }
+
+ // print tag
+ $tags = $rule->getTag();
+ if (isset($tags)){
+ foreach ($tags as $tag){
+ printf("Rule Tag Key:".$tag->getKey().PHP_EOL);
+ printf("Rule Tag Value:".$tag->getValue().PHP_EOL);
+ }
+ }
+ // print transition
+ $transitions = $rule->getTransition();
+ if (isset($transitions)){
+ foreach ($transitions as $transition){
+ printf("Rule Transition Days:".$transition->getDays().PHP_EOL);
+ printf("Rule Transition Created Before Date:".$transition->getCreatedBeforeDate().PHP_EOL);
+ printf("Rule Transition Storage Class:".$transition->getStorageClass().PHP_EOL);
+ printf("Rule Transition Is Access Time:".$transition->getIsAccessTime().PHP_EOL);
+ printf("Rule Transition Return To Std When Visit:".$transition->getReturnToStdWhenVisit().PHP_EOL);
+ printf("Rule Transition Allow Small File:".$transition->getAllowSmallFile().PHP_EOL);
+ }
+ }
+
+ //print Abort Multipart Upload
+ $abortMultipartUpload = $rule->getAbortMultipartUpload();
+ if (isset($abortMultipartUpload)){
+ if ($abortMultipartUpload->getDays()){
+ printf("Rule Abort Multipart Upload Days:".$abortMultipartUpload->getDays().PHP_EOL);
+ }
+
+ if ($abortMultipartUpload->getCreatedBeforeDate()){
+ printf("Rule Abort Multipart Upload Created Before Date:".$abortMultipartUpload->getCreatedBeforeDate().PHP_EOL);
+ }
+
+ }
+
+ //print Noncurrent Version Transition
+ $nonVersionTransitions = $rule->getNoncurrentVersionTransition();
+ if (isset($nonVersionTransitions)){
+ foreach ($nonVersionTransitions as $nonVersionTransition){
+ printf("Rule Non Version Transition Non Current Days:".$nonVersionTransition->getNoncurrentDays().PHP_EOL);
+ printf("Rule Non Version Transition Storage Class:".$nonVersionTransition->getStorageClass().PHP_EOL);
+ printf("Rule Non Version Transition Is Access Time:".$nonVersionTransition->getIsAccessTime().PHP_EOL);
+ printf("Rule Non Version Transition Return To Std When Visit:".$nonVersionTransition->getReturnToStdWhenVisit().PHP_EOL);
+ printf("Rule Non Version Transition Allow Small File:".$nonVersionTransition->getAllowSmallFile().PHP_EOL);
+ }
+ }
+
+ $filter = $rule->getFilter();
+ if (isset($filter)){
+ foreach ($filter->getNot() as $not){
+ if ($not->getPrefix()) {
+ printf("Rule Filter Not Prefix:".$not->getTag()->getKey().PHP_EOL);
+ }
+
+ if ($not->getTag()->getKey()) {
+ printf("Rule Filter Not Tag Key:".$not->getTag()->getKey().PHP_EOL);
+ }
+
+ if ($not->getTag()->getValue()) {
+ printf("Rule Filter Not Tag Value:".$not->getTag()->getValue().PHP_EOL);
+ }
+ }
+ }
+
+ }
}
/**
diff --git a/samples/Object.php b/samples/Object.php
index bf6e86b..27e7341 100644
--- a/samples/Object.php
+++ b/samples/Object.php
@@ -31,6 +31,11 @@
$content = $ossClient->getObject($bucket, "b.file");
Common::println("b.file is fetched, the content is: " . $content);
+// Get an oss object meta
+$objectMeta = $ossClient->getSimplifiedObjectMeta($bucket, "b.file");
+Common::println("b.file last access time: " . $objectMeta['x-oss-last-access-time']);
+
+
// Add a symlink to an object
$content = $ossClient->putSymlink($bucket, "test-symlink", "b.file");
Common::println("test-symlink is created");
@@ -127,6 +132,7 @@
copyObject($ossClient, $bucket);
modifyMetaForObject($ossClient, $bucket);
getObjectMeta($ossClient, $bucket);
+getSimplifiedObjectMeta($ossClient, $bucket);
deleteObject($ossClient, $bucket);
deleteObjects($ossClient, $bucket);
doesObjectExist($ossClient, $bucket);
@@ -550,6 +556,27 @@ function getObjectMeta($ossClient, $bucket)
}
}
+/**
+ * Get object simple meta, that is, getSimplifiedObjectMeta
+ *
+ * @param OssClient $ossClient OssClient instance
+ * @param string $bucket bucket name
+ * @return null
+ */
+function getSimplifiedObjectMeta($ossClient, $bucket)
+{
+ $object = "oss-php-sdk-test/upload-test-object-name.txt";
+ try {
+ $objectMeta = $ossClient->getSimplifiedObjectMeta($bucket, $object);
+ printf("last-access-time:%s",$objectMeta['x-oss-last-access-time']);
+ } catch (OssException $e) {
+ printf(__FUNCTION__ . ": FAILED\n");
+ printf($e->getMessage() . "\n");
+ return;
+ }
+ print(__FUNCTION__ . ": OK" . "\n");
+}
+
/**
* Delete an object
*
diff --git a/src/OSS/Model/AccessMonitorConfig.php b/src/OSS/Model/AccessMonitorConfig.php
new file mode 100644
index 0000000..4e50b98
--- /dev/null
+++ b/src/OSS/Model/AccessMonitorConfig.php
@@ -0,0 +1,68 @@
+Status)) {
+ $this->status = strval($xml->Status);
+ }
+ }
+
+ /**
+ * Serialize the object into xml string.
+ *
+ * @return string
+ */
+ public function serializeToXml()
+ {
+ $xml = new \SimpleXMLElement('');
+ if (isset($this->status)) {
+ $xml->addChild('Status',$this->status);
+ }
+ return $xml->asXML();
+ }
+
+ public function __toString()
+ {
+ return $this->serializeToXml();
+ }
+
+
+ /**
+ * @return string
+ */
+ public function getStatus()
+ {
+ return $this->status;
+ }
+
+ /**
+ * @param string $status
+ */
+ public function setStatus($status)
+ {
+ $this->status = $status;
+ }
+ /**
+ * @var string
+ */
+ private $status;
+}
+
+
diff --git a/src/OSS/Model/BucketInfo.php b/src/OSS/Model/BucketInfo.php
index e211eed..71be28e 100644
--- a/src/OSS/Model/BucketInfo.php
+++ b/src/OSS/Model/BucketInfo.php
@@ -45,6 +45,16 @@ public function getName()
return $this->name;
}
+ /**
+ * Get access monitor
+ *
+ * @return string
+ */
+ public function getAccessMonitor()
+ {
+ return $this->accessMonitor;
+ }
+
/**
* Get bucket creation time.
*
@@ -111,6 +121,9 @@ public function parseFromXmlNode($xml)
if (isset($xml->Name)) {
$this->name = strval($xml->Name);
}
+ if (isset($xml->AccessMonitor)) {
+ $this->accessMonitor = strval($xml->AccessMonitor);
+ }
if (isset($xml->CreationDate)) {
$this->createDate = strval($xml->CreationDate);
}
@@ -144,6 +157,13 @@ public function parseFromXmlNode($xml)
*/
private $name;
+ /**
+ * access monitor
+ *
+ * @var string
+ */
+ private $accessMonitor;
+
/**
* bucket creation time
*
diff --git a/src/OSS/Model/LifecycleAbortMultipartUpload.php b/src/OSS/Model/LifecycleAbortMultipartUpload.php
new file mode 100644
index 0000000..1e342e8
--- /dev/null
+++ b/src/OSS/Model/LifecycleAbortMultipartUpload.php
@@ -0,0 +1,86 @@
+days = $days;
+ $this->createdBeforeDate = $createdBeforeDate;
+ }
+ /**
+ * Get Days
+ *
+ * @return int
+ */
+ public function getDays()
+ {
+ return $this->days;
+ }
+
+ /**
+ * @param $days int
+ */
+ public function setDays($days)
+ {
+ $this->days = $days;
+ }
+
+ /**
+ * Get Created Before Date
+ *
+ * @return string
+ */
+ public function getCreatedBeforeDate()
+ {
+ return $this->createdBeforeDate;
+ }
+
+ /**
+ * Set Created Before Date
+ * @param $createdBeforeDate string
+ */
+ public function setCreatedBeforeDate($createdBeforeDate)
+ {
+ $this->createdBeforeDate = $createdBeforeDate;
+ }
+
+ /**
+ * @param \SimpleXMLElement $xmlRule
+ */
+ public function appendToXml(&$xmlRule)
+ {
+ if(isset($this->days) || isset($this->createdBeforeDate)){
+ $xmlAbortMultipartUpload = $xmlRule->addChild("AbortMultipartUpload");
+ }
+
+ if (isset($this->days)){
+ $xmlAbortMultipartUpload->addChild('Days', $this->days);
+ }
+
+ if (isset($this->createdBeforeDate)){
+ $xmlAbortMultipartUpload->addChild('CreatedBeforeDate', $this->createdBeforeDate);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OSS/Model/LifecycleConfig.php b/src/OSS/Model/LifecycleConfig.php
index f2d2dc3..e2ecf51 100644
--- a/src/OSS/Model/LifecycleConfig.php
+++ b/src/OSS/Model/LifecycleConfig.php
@@ -4,11 +4,9 @@
use OSS\Core\OssException;
-
/**
- * Class BucketLifecycleConfig
+ * Class LifecycleConfig
* @package OSS\Model
- * @link http://help.aliyun.com/document_detail/oss/api-reference/bucket/PutBucketLifecycle.html
*/
class LifecycleConfig implements XmlConfig
{
@@ -16,7 +14,6 @@ class LifecycleConfig implements XmlConfig
* Parse the xml into this object.
*
* @param string $strXml
- * @throws OssException
* @return null
*/
public function parseFromXml($strXml)
@@ -24,28 +21,22 @@ public function parseFromXml($strXml)
$this->rules = array();
$xml = simplexml_load_string($strXml);
if (!isset($xml->Rule)) return;
- $this->rules = array();
- foreach ($xml->Rule as $rule) {
- $id = strval($rule->ID);
- $prefix = strval($rule->Prefix);
- $status = strval($rule->Status);
- $actions = array();
- foreach ($rule as $key => $value) {
- if ($key === 'ID' || $key === 'Prefix' || $key === 'Status') continue;
- $action = $key;
- $timeSpec = null;
- $timeValue = null;
- foreach ($value as $timeSpecKey => $timeValueValue) {
- $timeSpec = $timeSpecKey;
- $timeValue = strval($timeValueValue);
- }
- $actions[] = new LifecycleAction($action, $timeSpec, $timeValue);
+ $this->parseRule($xml->Rule);
+ }
+
+ /**
+ * @param $xmlRules
+ */
+ private function parseRule($xmlRules){
+ if ($xmlRules){
+ foreach ($xmlRules as $rule){
+ $lifecycleRule = new LifecycleRule();
+ $lifecycleRule->parseFromXml($rule);
+ $this->rules[] = $lifecycleRule;
}
- $this->rules[] = new LifecycleRule($id, $prefix, $status, $actions);
}
- return;
- }
+ }
/**
* Serialize the object to xml
diff --git a/src/OSS/Model/LifecycleExpiration.php b/src/OSS/Model/LifecycleExpiration.php
new file mode 100644
index 0000000..a04be86
--- /dev/null
+++ b/src/OSS/Model/LifecycleExpiration.php
@@ -0,0 +1,144 @@
+days = $days;
+ $this->date = $date;
+ $this->createdBeforeDate = $createdBeforeDate;
+ $this->expiredObjectDeleteMarker = $expiredObjectDeleteMarker;
+ }
+
+ /**
+ * Get Days
+ *
+ * @return int
+ */
+ public function getDays()
+ {
+ return $this->days;
+ }
+
+ /**
+ * @param $days int
+ */
+ public function setDays($days)
+ {
+ $this->days = $days;
+ }
+
+ /**
+ * Get date
+ * @return string
+ */
+ public function getDate()
+ {
+ return $this->date;
+ }
+
+ /**
+ * Set date
+ * @param $date string
+ */
+ public function setDate($date)
+ {
+ $this->date = $date;
+ }
+
+ /**
+ * Get Created Before Date
+ *
+ * @return string
+ */
+ public function getCreatedBeforeDate()
+ {
+ return $this->createdBeforeDate;
+ }
+
+ /**
+ * Set Created Before Date
+ * @param $createdBeforeDate string
+ */
+ public function setCreatedBeforeDate($createdBeforeDate)
+ {
+ $this->createdBeforeDate = $createdBeforeDate;
+ }
+
+ /**
+ * Get Expired Object DeleteMarker
+ * @return bool
+ */
+ public function getExpiredObjectDeleteMarker()
+ {
+ return $this->expiredObjectDeleteMarker;
+ }
+
+ /**
+ * Set Expired Object DeleteMarker
+ * @param $expiredObjectDeleteMarker bool
+ */
+ public function setExpiredObjectDeleteMarker($expiredObjectDeleteMarker)
+ {
+ $this->expiredObjectDeleteMarker = $expiredObjectDeleteMarker;
+ }
+
+ /**
+ * @param \SimpleXMLElement $xmlRule
+ */
+ public function appendToXml(&$xmlRule)
+ {
+ if(isset($this->days) || isset($this->date) || isset($this->createdBeforeDate) || isset($this->expiredObjectDeleteMarker)){
+ $xmlExpiration = $xmlRule->addChild("Expiration");
+ }
+
+ if (isset($this->days)){
+ $xmlExpiration->addChild('Days', $this->days);
+ }
+
+ if (isset($this->date)){
+ $xmlExpiration->addChild('Date', $this->date);
+ }
+
+ if (isset($this->createdBeforeDate)){
+ $xmlExpiration->addChild('CreatedBeforeDate', $this->createdBeforeDate);
+ }
+
+ if (isset($this->expiredObjectDeleteMarker)){
+ $xmlExpiration->addChild('ExpiredObjectDeleteMarker', is_bool($this->expiredObjectDeleteMarker) ? json_encode($this->expiredObjectDeleteMarker):$this->expiredObjectDeleteMarker);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OSS/Model/LifecycleFilter.php b/src/OSS/Model/LifecycleFilter.php
new file mode 100644
index 0000000..e8cc824
--- /dev/null
+++ b/src/OSS/Model/LifecycleFilter.php
@@ -0,0 +1,124 @@
+not = $not;
+ $this->objectSizeGreaterThan = $objectSizeGreaterThan;
+ $this->objectSizeLessThan = $objectSizeLessThan;
+ }
+
+ /**
+ * Get Filter Not
+ *
+ * @return LifecycleNot[]
+ */
+ public function getNot()
+ {
+ return $this->not;
+ }
+
+ /**
+ * Get Object Size Greater Than
+ *
+ * @return int|null
+ */
+ public function getObjectSizeGreaterThan()
+ {
+ return $this->objectSizeGreaterThan;
+ }
+
+ /**
+ * Get Object Size Less Than
+ *
+ * @return int|null
+ */
+ public function getObjectSizeLessThan()
+ {
+ return $this->objectSizeLessThan;
+ }
+
+ /**
+ * Set Filter Not
+ * @param LifecycleNot $not
+ */
+ public function addNot($not)
+ {
+ $this->not[] = $not;
+
+ }
+
+ /**
+ * set Object Size Greater Than
+ *
+ * @param $objectSizeGreaterThan int
+ */
+ public function setObjectSizeGreaterThan($objectSizeGreaterThan)
+ {
+ $this->objectSizeGreaterThan = $objectSizeGreaterThan;
+ }
+
+ /**
+ * set Object Size Less Than
+ *
+ * @param $objectSizeLessThan int
+ */
+ public function setObjectSizeLessThan($objectSizeLessThan)
+ {
+ $this->objectSizeLessThan = $objectSizeLessThan;
+ }
+
+
+ /**
+ * @param \SimpleXMLElement $xmlRule
+ */
+ public function appendToXml(&$xmlRule)
+ {
+ if(isset($this->not) || isset($this->objectSizeGreaterThan) || isset($this->objectSizeLessThan)){
+ $xmlFilter = $xmlRule->addChild("Filter");
+ if (isset($this->not)){
+ foreach ($this->not as $not){
+ $not->appendToXml($xmlFilter);
+ }
+ }
+
+ if (isset($this->objectSizeGreaterThan)){
+ $xmlFilter->addChild("ObjectSizeGreaterThan",$this->objectSizeGreaterThan);
+ }
+
+ if (isset($this->objectSizeLessThan)){
+ $xmlFilter->addChild("ObjectSizeLessThan",$this->objectSizeLessThan);
+ }
+ }
+
+
+ }
+}
\ No newline at end of file
diff --git a/src/OSS/Model/LifecycleNoncurrentVersionExpiration.php b/src/OSS/Model/LifecycleNoncurrentVersionExpiration.php
new file mode 100644
index 0000000..8ac4d32
--- /dev/null
+++ b/src/OSS/Model/LifecycleNoncurrentVersionExpiration.php
@@ -0,0 +1,58 @@
+nonCurrentDays = $nonCurrentDays;
+ }
+ /**
+ * Get Non Current Days
+ *
+ * @return int
+ */
+ public function getNonCurrentDays()
+ {
+ return $this->nonCurrentDays;
+ }
+
+ /**
+ * Set Non Current Days
+ * @param $nonCurrentDays int
+ */
+ public function setNonCurrentDays($nonCurrentDays)
+ {
+ $this->nonCurrentDays = $nonCurrentDays;
+ }
+
+ /**
+ * @param \SimpleXMLElement $xmlRule
+ */
+ public function appendToXml(&$xmlRule)
+ {
+
+ if (isset($this->nonCurrentDays)){
+ $xmlNonCurrentVersionExpiration = $xmlRule->addChild("NoncurrentVersionExpiration");
+ $xmlNonCurrentVersionExpiration->addChild('NoncurrentDays', $this->nonCurrentDays);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/OSS/Model/LifecycleNoncurrentVersionTransition.php b/src/OSS/Model/LifecycleNoncurrentVersionTransition.php
new file mode 100644
index 0000000..348c110
--- /dev/null
+++ b/src/OSS/Model/LifecycleNoncurrentVersionTransition.php
@@ -0,0 +1,166 @@
+nonCurrentDays = $nonCurrentDays;
+ $this->storageClass = $storageClass;
+ $this->isAccessTime = $isAccessTime;
+ $this->returnToStdWhenVisit = $returnToStdWhenVisit;
+ $this->allowSmallFile = $allowSmallFile;
+ }
+ /**
+ * Get Days
+ *
+ * @return int
+ */
+ public function getNonCurrentDays()
+ {
+ return $this->nonCurrentDays;
+ }
+
+ /**
+ * @param $nonCurrentDays int
+ */
+ public function setNonCurrentDays($nonCurrentDays)
+ {
+ $this->nonCurrentDays = $nonCurrentDays;
+ }
+
+ /**
+ * Get storageClass
+ * @return string
+ */
+ public function getStorageClass(){
+ return $this->storageClass;
+ }
+
+ /**
+ * Set storageClass
+ * @param $storageClass string
+ */
+ public function setStorageClass($storageClass){
+ $this->storageClass = $storageClass;
+ }
+
+ /**
+ * Get isAccessTime
+ * @return boolean
+ */
+ public function getIsAccessTime(){
+ return $this->isAccessTime;
+ }
+
+ /**
+ * Set isAccessTime
+ * @param $isAccessTime boolean
+ */
+ public function setIsAccessTime($isAccessTime){
+ $this->isAccessTime = $isAccessTime;
+ }
+
+ /**
+ * Get Return To Std When Visit
+ * @return boolean
+ */
+ public function getReturnToStdWhenVisit(){
+ return $this->returnToStdWhenVisit;
+ }
+
+ /**
+ * Set Return To Std When Visit
+ * @param $returnToStdWhenVisit bool
+ */
+ public function setReturnToStdWhenVisit($returnToStdWhenVisit){
+ $this->returnToStdWhenVisit = $returnToStdWhenVisit;
+ }
+
+ /**
+ * Get Allow Small File
+ * @return bool
+ */
+ public function getAllowSmallFile(){
+ return $this->allowSmallFile;
+ }
+
+ /**
+ * Set Allow Small File
+ * @param $allowSmallFile bool
+ */
+ public function setAllowSmallFile($allowSmallFile){
+ $this->allowSmallFile = $allowSmallFile;
+ }
+
+
+ /**
+ * @param \SimpleXMLElement $xmlRule
+ */
+ public function appendToXml(&$xmlRule)
+ {
+ if(isset($this->nonCurrentDays) || isset($this->storageClass) || isset($this->isAccessTime) || isset($this->returnToStdWhenVisit) || isset($this->allowSmallFile)){
+ $xmlNonTransition = $xmlRule->addChild("NoncurrentVersionTransition");
+ }
+
+ if (isset($this->nonCurrentDays)){
+ $xmlNonTransition->addChild('NoncurrentDays', $this->nonCurrentDays);
+ }
+
+ if (isset($this->storageClass)){
+ $xmlNonTransition->addChild('StorageClass', $this->storageClass);
+ }
+
+ if (isset($this->isAccessTime)){
+ $xmlNonTransition->addChild('IsAccessTime',is_bool($this->isAccessTime) ? json_encode($this->isAccessTime):$this->isAccessTime);
+ }
+
+ if (isset($this->returnToStdWhenVisit)){
+ $xmlNonTransition->addChild('ReturnToStdWhenVisit', is_bool($this->returnToStdWhenVisit) ? json_encode($this->returnToStdWhenVisit):$this->returnToStdWhenVisit);
+ }
+
+ if (isset($this->allowSmallFile)){
+ $xmlNonTransition->addChild('AllowSmallFile',is_bool($this->allowSmallFile) ? json_encode($this->allowSmallFile):$this->allowSmallFile);
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/src/OSS/Model/LifecycleNot.php b/src/OSS/Model/LifecycleNot.php
new file mode 100644
index 0000000..39790ba
--- /dev/null
+++ b/src/OSS/Model/LifecycleNot.php
@@ -0,0 +1,81 @@
+prefix = $prefix;
+ $this->tag = $tag;
+ }
+
+ /**
+ * @return string
+ */
+ public function getPrefix()
+ {
+ return $this->prefix;
+ }
+
+ /**
+ * @param string $prefix
+ */
+ public function setPrefix($prefix)
+ {
+ $this->prefix = $prefix;
+ }
+
+ /**
+ * Get Tag
+ *
+ * @return LifecycleTag
+ */
+ public function getTag()
+ {
+ return $this->tag;
+ }
+
+ /**
+ * Set Tag
+ * @param $tag LifecycleTag
+ */
+ public function setTag($tag)
+ {
+ $this->tag = $tag;
+ }
+
+ /**
+ * @param \SimpleXMLElement $xmlRule
+ */
+ public function appendToXml(&$xmlRule)
+ {
+ $xmlNot = $xmlRule->addChild("Not");
+ $xmlNot->addChild('Prefix', $this->prefix);
+ if (isset($this->tag)){
+ $this->tag->appendToXml($xmlNot);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OSS/Model/LifecycleRule.php b/src/OSS/Model/LifecycleRule.php
index 73c6cc3..d23489b 100644
--- a/src/OSS/Model/LifecycleRule.php
+++ b/src/OSS/Model/LifecycleRule.php
@@ -11,6 +11,61 @@
*/
class LifecycleRule
{
+ /**
+ * @var string
+ */
+ private $id;
+
+ /**
+ * @var string
+ */
+ private $prefix;
+
+ /**
+ * @var string
+ */
+ private $status;
+
+ /**
+ * @var LifecycleExpiration
+ */
+ private $expiration;
+ /**
+ * @var LifecycleAbortMultipartUpload
+ */
+ private $abortMultipartUpload;
+
+ /**
+ * @var LifecycleTag[]
+ */
+ private $tag;
+ /**
+ * @var LifecycleTransition[]
+ */
+ private $transition;
+
+ /**
+ * @var LifecycleNoncurrentVersionTransition[]
+ */
+ private $nonVersionTransition;
+
+ /**
+ * @var LifecycleFilter
+ */
+ private $filter;
+
+ /**
+ * @var LifecycleNoncurrentVersionExpiration
+ */
+ private $nonCurrentVersionExpiration;
+
+ const STATUS_ENANLED = "Enabled";
+ const STATUS_DISABLED = "Disabled";
+ /**
+ * @var LifecycleAction[]
+ */
+ private $actions;
+
/**
* Get Id
*
@@ -86,6 +141,118 @@ public function setActions($actions)
$this->actions = $actions;
}
+ /**
+ * Get Lifecycle Expiration
+ * @return LifecycleExpiration
+ */
+ public function getExpiration(){
+ return $this->expiration;
+ }
+
+ /**
+ * Set Lifecycle Expiration
+ * @param $expiration LifecycleExpiration
+ */
+ public function setExpiration($expiration){
+ $this->expiration = $expiration;
+ }
+
+ /**
+ * Get Lifecycle Abort Multipart Upload
+ * @return LifecycleAbortMultipartUpload
+ */
+ public function getAbortMultipartUpload(){
+ return $this->abortMultipartUpload;
+ }
+
+ /**
+ * Set Lifecycle Abort Multipart Upload
+ * @param $abortMultipartUpload LifecycleAbortMultipartUpload
+ */
+ public function setAbortMultipartUpload($abortMultipartUpload){
+ $this->abortMultipartUpload = $abortMultipartUpload;
+ }
+
+ /**
+ * Get Lifecycle Tag
+ * @return LifecycleTag[]
+ */
+ public function getTag(){
+ return $this->tag;
+ }
+
+ /**
+ * Set Lifecycle Tag
+ * @param $tag LifecycleTag
+ */
+ public function addTag($tag){
+ $this->tag[] = $tag;
+ }
+
+ /**
+ * Get Lifecycle Transition
+ * @return LifecycleTransition[]
+ */
+ public function getTransition(){
+ return $this->transition;
+ }
+
+ /**
+ * Set Lifecycle Transition
+ * @param $transition LifecycleTransition
+ */
+ public function addTransition($transition){
+ $this->transition[] = $transition;
+ }
+
+
+ /**
+ * Get Lifecycle Non Current Version Transition
+ * @return LifecycleNoncurrentVersionTransition[]
+ */
+ public function getNonCurrentVersionTransition(){
+ return $this->nonVersionTransition;
+ }
+
+ /**
+ * Set Lifecycle Non Current Version Transition
+ * @param $nonVersionTransition LifecycleNonCurrentVersionTransition
+ */
+ public function addNonCurrentVersionTransition($nonVersionTransition){
+ $this->nonVersionTransition[] = $nonVersionTransition;
+ }
+
+ /**
+ * Get Lifecycle Noncurrent Version Expiration
+ * @return LifecycleNoncurrentVersionExpiration
+ */
+ public function getNonCurrentVersionExpiration(){
+ return $this->nonCurrentVersionExpiration;
+ }
+
+ /**
+ * Set Lifecycle Non Current Version Expiration
+ * @param $nonCurrentVersionExpiration LifecycleNoncurrentVersionExpiration
+ */
+ public function setNonCurrentVersionExpiration($nonCurrentVersionExpiration){
+ $this->nonCurrentVersionExpiration = $nonCurrentVersionExpiration;
+ }
+
+ /**
+ * Get Lifecycle Filter
+ * @return LifecycleFilter
+ */
+ public function getFilter(){
+ return $this->filter;
+ }
+
+ /**
+ * Set Lifecycle Filter
+ * @param $filter LifecycleFilter
+ */
+ public function setFilter($filter){
+ $this->filter = $filter;
+ }
/**
* LifecycleRule constructor.
@@ -95,7 +262,7 @@ public function setActions($actions)
* @param string $status Rule status, which has the following valid values: [self::LIFECYCLE_STATUS_ENABLED, self::LIFECYCLE_STATUS_DISABLED]
* @param LifecycleAction[] $actions
*/
- public function __construct($id, $prefix, $status, $actions)
+ public function __construct($id=null, $prefix=null, $status=null, $actions=null)
{
$this->id = $id;
$this->prefix = $prefix;
@@ -111,16 +278,272 @@ public function appendToXml(&$xmlRule)
$xmlRule->addChild('ID', $this->id);
$xmlRule->addChild('Prefix', $this->prefix);
$xmlRule->addChild('Status', $this->status);
- foreach ($this->actions as $action) {
- $action->appendToXml($xmlRule);
+ if (isset($this->actions)){
+ foreach ($this->actions as $action) {
+ $action->appendToXml($xmlRule);
+ }
+ }
+
+ if (isset($this->expiration)){
+ $this->expiration->appendToXml($xmlRule);
+
+ }
+ if (isset($this->abortMultipartUpload)){
+ $this->abortMultipartUpload->appendToXml($xmlRule);
+ }
+
+ if (isset($this->tag)){
+ foreach ($this->tag as $tag){
+ $tag->appendToXml($xmlRule);
+ }
+ }
+
+ if (isset($this->transition)){
+ foreach ($this->transition as $transition){
+ $transition->appendToXml($xmlRule);
+ }
}
+
+ if (isset($this->nonVersionTransition)){
+ foreach ($this->nonVersionTransition as $nonVersionTransition){
+ $nonVersionTransition->appendToXml($xmlRule);
+ }
+ }
+ if (isset($this->nonCurrentVersionExpiration)){
+ $this->nonCurrentVersionExpiration->appendToXml($xmlRule);
+ }
+
+ if (isset($this->filter)){
+ $this->filter->appendToXml($xmlRule);
+ }
+
}
- private $id;
- private $prefix;
- private $status;
- private $actions = array();
- const LIFECYCLE_STATUS_ENABLED = 'Enabled';
- const LIFECYCLE_STATUS_DISABLED = 'Disabled';
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ public function parseFromXml($xml)
+ {
+ if (isset($xml->ID)){
+ $this->id = strval($xml->ID);
+ }
+ if (isset($xml->Prefix)){
+ $this->prefix = strval($xml->Prefix);
+ }
+ if (isset($xml->Status)){
+ $this->status = strval($xml->Status);
+ }
+ if (isset($xml->Expiration)){
+ $this->parseExpiration($xml->Expiration);
+ }
+ if (isset($xml->Transition)){
+ foreach ($xml->Transition as $transition){
+ $this->parseTransition($transition);
+ }
+ }
+ if (isset($xml->AbortMultipartUpload)){
+ $this->parseAbortMultipartUpload($xml->AbortMultipartUpload);
+ }
+ if (isset($xml->Tag)){
+ foreach ($xml->Tag as $tag){
+ $this->parseTag($tag);
+ }
+
+ }
+ if (isset($xml->NoncurrentVersionExpiration)){
+ $this->parseNonCurrentVersionExpiration($xml->NoncurrentVersionExpiration);
+ }
+ if (isset($xml->NoncurrentVersionTransition)){
+ foreach ($xml->NoncurrentVersionTransition as $transition){
+ $this->parseNonCurrentVersionTransition($transition);
+ }
+ }
+ if (isset($xml->Filter)){
+ $this->parseFilter($xml->Filter);
+ }
+ }
+
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ public function parseExpiration($xml)
+ {
+ if (!isset($xml->Days) && !isset($xml->Date) && !isset($xml->CreatedBeforeDate) && !isset($xml->ExpiredObjectDeleteMarker)) return;
+
+ if (isset($xml->Days)){
+ $days = strval($xml->Days);
+ }
+ if (isset($xml->Date)){
+ $date = strval($xml->Date);
+ }
+ if (isset($xml->CreatedBeforeDate)){
+ $createdBeforeDate = strval($xml->CreatedBeforeDate);
+ }
+ if (isset($xml->ExpiredObjectDeleteMarker)){
+ $expiredObjectDeleteMarker = strval($xml->ExpiredObjectDeleteMarker);
+ }
+
+ $lifecycleExpiration = new LifecycleExpiration($days, $date, $createdBeforeDate, $expiredObjectDeleteMarker);
+ $this->setExpiration($lifecycleExpiration);
+ }
+
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ public function parseNonCurrentVersionExpiration($xml)
+ {
+ if (!isset($xml->NoncurrentDays)) return;
+
+ if (isset($xml->NoncurrentDays)){
+ $days = strval($xml->NoncurrentDays);
+ }
+ $expiration = new LifecycleNonCurrentVersionExpiration($days);
+ $this->setNonCurrentVersionExpiration($expiration);
+ }
+
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ private function parseTransition($xml)
+ {
+ if (!isset($xml->Days) && !isset($xml->CreatedBeforeDate) && !isset($xml->StorageClass) && !isset($xml->IsAccessTime) && !isset($xml->ReturnToStdWhenVisit) && !isset($xml->AllowSmallFile)) return;
+
+ if (isset($xml->Days)){
+ $days = strval($xml->Days);
+ }
+ if (isset($xml->CreatedBeforeDate)){
+ $createdBeforeDate = strval($xml->CreatedBeforeDate);
+ }
+ if (isset($xml->StorageClass)){
+ $storageClass = strval($xml->StorageClass);
+ }
+ if (isset($xml->IsAccessTime)){
+ $isAccessTime = strval($xml->IsAccessTime);
+ }
+ if (isset($xml->ReturnToStdWhenVisit)){
+ $returnToStdWhenVisit = strval($xml->ReturnToStdWhenVisit);
+ }
+ if (isset($xml->AllowSmallFile)){
+ $allowSmallFile = strval($xml->AllowSmallFile);
+ }
+
+ $lifecycleTransition = new LifecycleTransition($days,$createdBeforeDate,$storageClass,$isAccessTime,$returnToStdWhenVisit,$allowSmallFile);
+ $this->addTransition($lifecycleTransition);
+ }
+
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ private function parseNonCurrentVersionTransition($xml)
+ {
+ if (!isset($xml->NoncurrentDays) && !isset($xml->StorageClass) && !isset($xml->IsAccessTime) && !isset($xml->ReturnToStdWhenVisit) && !isset($xml->AllowSmallFile)) return;
+
+ if (isset($xml->NoncurrentDays)){
+ $days = strval($xml->NoncurrentDays);
+ }
+ if (isset($xml->StorageClass)){
+ $storageClass = strval($xml->StorageClass);
+ }
+ if (isset($xml->IsAccessTime)){
+ $isAccessTime = strval($xml->IsAccessTime);
+ }
+ if (isset($xml->ReturnToStdWhenVisit)){
+ $returnToStdWhenVisit = strval($xml->ReturnToStdWhenVisit);
+ }
+ if (isset($xml->AllowSmallFile)){
+ $allowSmallFile = strval($xml->AllowSmallFile);
+ }
+
+ $lifecycleNonCurrentVersionTransition = new LifecycleNonCurrentVersionTransition($days,$storageClass,$isAccessTime,$returnToStdWhenVisit,$allowSmallFile);
+ $this->addNonCurrentVersionTransition($lifecycleNonCurrentVersionTransition);
+ }
+
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ private function parseAbortMultipartUpload($xml)
+ {
+ if (!isset($xml->Days) && !isset($xml->CreatedBeforeDate)) return;
+
+ if (isset($xml->Days)){
+ $days = strval($xml->Days);
+ }
+ if (isset($xml->CreatedBeforeDate)){
+ $createdBeforeDate = strval($xml->CreatedBeforeDate);
+ }
+
+ $lifecycleAbortMultipartUpload = new LifecycleAbortMultipartUpload($days,$createdBeforeDate);
+ $this->setAbortMultipartUpload($lifecycleAbortMultipartUpload);
+ }
+
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ private function parseTag($xml)
+ {
+ if (!isset($xml->Key) && !isset($xml->Value)) return;
+
+ if (isset($xml->Key)){
+ $key = strval($xml->Key);
+ }
+ if (isset($xml->Value)){
+ $value = strval($xml->Value);
+ }
+
+ $tag = new LifecycleTag($key,$value);
+ $this->addTag($tag);
+ }
+
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ private function parseFilter($xml)
+ {
+ if (isset($xml->Not)){
+ foreach ($xml->Not as $not){
+ $notObject[] = $this->parseNot($not);
+ }
+ }
+ if (isset($xml->ObjectSizeGreaterThan)){
+ $objectSizeGreaterThan = strval($xml->ObjectSizeGreaterThan);
+ }
+ if (isset($xml->ObjectSizeLessThan)){
+ $objectSizeLessThan = strval($xml->ObjectSizeLessThan);
+ }
+ $lifecycleFilter = new LifecycleFilter($notObject,$objectSizeGreaterThan,$objectSizeLessThan);
+ $this->setFilter($lifecycleFilter);
+ }
+
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ private function parseNot($xml)
+ {
+ if (!isset($xml->Prefix) && !isset($xml->Tag)) return;
+ if (isset($xml->Prefix)){
+ $prefix = strval($xml->Prefix);
+ }
+ if (isset($xml->Tag)){
+ $tag = $this->parseFilterTag($xml->Tag);
+ }
+ return new LifecycleNot($prefix,$tag);
+ }
+
+ /**
+ * @param $xml \SimpleXMLElement
+ */
+ private function parseFilterTag($xml)
+ {
+ if (!isset($xml->Key) && !isset($xml->Value)) return;
+
+ if (isset($xml->Key)){
+ $key = strval($xml->Key);
+ }
+ if (isset($xml->Value)){
+ $value = strval($xml->Value);
+ }
+
+ return new LifecycleTag($key,$value);
+ }
}
\ No newline at end of file
diff --git a/src/OSS/Model/LifecycleTag.php b/src/OSS/Model/LifecycleTag.php
new file mode 100644
index 0000000..b65c4d6
--- /dev/null
+++ b/src/OSS/Model/LifecycleTag.php
@@ -0,0 +1,92 @@
+key = $key;
+ $this->value = $value;
+ }
+
+ /**
+ * Get Key
+ *
+ * @return string
+ */
+ public function getKey()
+ {
+ return $this->key;
+ }
+
+ /**
+ * Set key
+ * @param $key string
+ */
+ public function setKey($key)
+ {
+ $this->key = $key;
+ }
+
+ /**
+ * Get value
+ *
+ * @return string
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+
+ /**
+ * Set value
+ * @param $value string
+ */
+ public function setValue($value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * @param \SimpleXMLElement $xmlRule
+ */
+ public function appendToXml(&$xmlRule)
+ {
+ if(isset($this->key) || isset($this->value)){
+ $xmlTag = $xmlRule->addChild("Tag");
+ }
+
+ if (isset($this->key)){
+ $xmlTag->addChild('Key', $this->key);
+ }
+
+ if (isset($this->value)){
+ $xmlTag->addChild('Value', $this->value);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/OSS/Model/LifecycleTransition.php b/src/OSS/Model/LifecycleTransition.php
new file mode 100644
index 0000000..00c55d4
--- /dev/null
+++ b/src/OSS/Model/LifecycleTransition.php
@@ -0,0 +1,198 @@
+days = $days;
+ $this->createdBeforeDate = $createdBeforeDate;
+ $this->storageClass = $storageClass;
+ $this->isAccessTime = $isAccessTime;
+ $this->returnToStdWhenVisit = $returnToStdWhenVisit;
+ $this->allowSmallFile = $allowSmallFile;
+ }
+
+ /**
+ * Get Days
+ *
+ * @return int
+ */
+ public function getDays()
+ {
+ return $this->days;
+ }
+
+ /**
+ * @param $days int
+ */
+ public function setDays($days)
+ {
+ $this->days = $days;
+ }
+
+ /**
+ * Get Created Before Date
+ *
+ * @return string
+ */
+ public function getCreatedBeforeDate()
+ {
+ return $this->createdBeforeDate;
+ }
+
+ /**
+ * Set Created Before Date
+ * @param $createdBeforeDate string
+ */
+ public function setCreatedBeforeDate($createdBeforeDate)
+ {
+ $this->createdBeforeDate = $createdBeforeDate;
+ }
+
+ /**
+ * Get storageClass
+ * @return string
+ */
+ public function getStorageClass(){
+ return $this->storageClass;
+ }
+
+ /**
+ * Set storageClass
+ * @param $storageClass string
+ */
+ public function setStorageClass($storageClass){
+ $this->storageClass = $storageClass;
+ }
+
+ /**
+ * Get isAccessTime
+ * @return bool
+ */
+ public function getIsAccessTime(){
+ return $this->isAccessTime;
+ }
+
+ /**
+ * Set isAccessTime
+ * @param $isAccessTime bool
+ */
+ public function setIsAccessTime($isAccessTime){
+ $this->isAccessTime = $isAccessTime;
+ }
+
+ /**
+ * Get Return To Std When Visit
+ * @return bool
+ */
+ public function getReturnToStdWhenVisit(){
+ return $this->returnToStdWhenVisit;
+ }
+
+ /**
+ * Set Return To Std When Visit
+ * @param $returnToStdWhenVisit bool
+ */
+ public function setReturnToStdWhenVisit($returnToStdWhenVisit){
+ $this->returnToStdWhenVisit = $returnToStdWhenVisit;
+ }
+
+ /**
+ * Get Allow Small File
+ * @return bool
+ */
+ public function getAllowSmallFile(){
+ return $this->allowSmallFile;
+ }
+
+ /**
+ * Set Allow Small File
+ * @param $allowSmallFile bool
+ */
+ public function setAllowSmallFile($allowSmallFile){
+ $this->allowSmallFile = $allowSmallFile;
+ }
+
+
+ /**
+ * @param \SimpleXMLElement $xmlRule
+ */
+ public function appendToXml(&$xmlRule)
+ {
+ if(isset($this->days) || isset($this->createdBeforeDate) || isset($this->storageClass) || isset($this->isAccessTime) || isset($this->returnToStdWhenVisit) || isset($this->allowSmallFile) ){
+ $xmlTransition = $xmlRule->addChild("Transition");
+ }
+
+ if (isset($this->days)){
+ $xmlTransition->addChild('Days', $this->days);
+ }
+
+ if (isset($this->createdBeforeDate)){
+ $xmlTransition->addChild('CreatedBeforeDate', $this->createdBeforeDate);
+ }
+
+ if (isset($this->storageClass)){
+ $xmlTransition->addChild('StorageClass', $this->storageClass);
+ }
+
+ if (isset($this->isAccessTime)){
+ $xmlTransition->addChild('IsAccessTime', is_bool($this->isAccessTime) ? json_encode($this->isAccessTime):$this->isAccessTime);
+ }
+
+ if (isset($this->returnToStdWhenVisit)){
+ $xmlTransition->addChild('ReturnToStdWhenVisit',is_bool($this->returnToStdWhenVisit) ? json_encode($this->returnToStdWhenVisit):$this->returnToStdWhenVisit);
+ }
+
+ if (isset($this->allowSmallFile)){
+ $xmlTransition->addChild('AllowSmallFile',is_bool($this->allowSmallFile) ? json_encode($this->allowSmallFile):$this->allowSmallFile);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OSS/Model/RefererConfig.php b/src/OSS/Model/RefererConfig.php
index 0830143..50c3778 100644
--- a/src/OSS/Model/RefererConfig.php
+++ b/src/OSS/Model/RefererConfig.php
@@ -20,7 +20,7 @@ public function parseFromXml($strXml)
if (!isset($xml->AllowEmptyReferer)) return;
if (!isset($xml->RefererList)) return;
$this->allowEmptyReferer =
- (strval($xml->AllowEmptyReferer) === 'TRUE' || strval($xml->AllowEmptyReferer) === 'true') ? true : false;
+ (strval($xml->AllowEmptyReferer) === '' || strval($xml->AllowEmptyReferer) === 'true') ? true : false;
foreach ($xml->RefererList->Referer as $key => $refer) {
$this->refererList[] = strval($refer);
diff --git a/src/OSS/OssClient.php b/src/OSS/OssClient.php
index c953344..772cf6c 100644
--- a/src/OSS/OssClient.php
+++ b/src/OSS/OssClient.php
@@ -9,6 +9,8 @@
use OSS\Http\RequestCore;
use OSS\Http\RequestCore_Exception;
use OSS\Http\ResponseCore;
+use OSS\Model\AccessMonitorConfig;
+use OSS\Model\BucketInfo;
use OSS\Model\CorsConfig;
use OSS\Model\CnameConfig;
use OSS\Model\LoggingConfig;
@@ -19,6 +21,7 @@
use OSS\Model\StorageCapacityConfig;
use OSS\Result\AclResult;
use OSS\Result\BodyResult;
+use OSS\Result\GetBucketAccessMonitorResult;
use OSS\Result\GetCorsResult;
use OSS\Result\GetLifecycleResult;
use OSS\Result\GetLocationResult;
@@ -1017,6 +1020,7 @@ public function putBucketLifecycle($bucket, $lifecycleConfig, $options = NULL)
return $result->getData();
}
+
/**
* Gets bucket's lifecycle config
*
@@ -1633,6 +1637,52 @@ public function getBucketTransferAcceleration($bucket,$options = NULL)
return $result->getData();
}
+ /**
+ * Put Bucket Access Monitor
+ * @param string $bucket bucket name
+ * @param string $status Enabled|Disabled
+ * @param null $options
+ * @return null
+ * @throws OssException
+ */
+
+ public function putBucketAccessMonitor($bucket,$status,$options = NULL)
+ {
+ $this->precheckCommon($bucket, NULL, $options, false);
+ $options[self::OSS_BUCKET] = $bucket;
+ $options[self::OSS_METHOD] = self::OSS_HTTP_PUT;
+ $options[self::OSS_OBJECT] = '/';
+ $options[self::OSS_SUB_RESOURCE] = 'accessmonitor';
+ $options[self::OSS_CONTENT_TYPE] = 'application/xml';
+ $config = new AccessMonitorConfig();
+ $config->setStatus($status);
+ $options[self::OSS_CONTENT] = $config->serializeToXml();
+ $response = $this->auth($options);
+ $result = new HeaderResult($response);
+ return $result->getData();
+ }
+
+ /**
+ * Get Bucket AccessMonitor
+ * @param string $bucket
+ * @param array|null $options
+ * @return GetBucketAccessMonitorResult
+ * @throws OssException
+ */
+
+ public function getBucketAccessMonitor($bucket,$options = NULL)
+ {
+ $this->precheckCommon($bucket, NULL, $options, false);
+ $options[self::OSS_BUCKET] = $bucket;
+ $options[self::OSS_METHOD] = self::OSS_HTTP_GET;
+ $options[self::OSS_OBJECT] = '/';
+ $options[self::OSS_SUB_RESOURCE] = 'accessmonitor';
+ $options[self::OSS_CONTENT_TYPE] = 'application/xml';
+ $response = $this->auth($options);
+ $result = new GetBucketAccessMonitorResult($response);
+ return $result->getData();
+ }
+
/**
* Lists the bucket's object list (in ObjectListInfo)
*
@@ -3412,11 +3462,39 @@ private function generateSignableResource($options)
$signableResource .= '/' . str_replace(array('%2F', '%25'), array('/', '%'), rawurlencode($options[self::OSS_OBJECT]));
}
if (isset($options[self::OSS_SUB_RESOURCE])) {
- $signableResource .= '?' . $options[self::OSS_SUB_RESOURCE];
+ $subResource = $this->filterSubResource($options[self::OSS_SUB_RESOURCE]);
+ if (strlen($subResource) > 0){
+ $signableResource .= '?' . $subResource;
+ }
+
}
return $signableResource;
}
+ /**
+ * Filter sub resource
+ * @param $subResource
+ * @return string
+ */
+ private function filterSubResource($subResource)
+ {
+ $queryString = '';
+ parse_str($subResource, $queryArrayParams);
+ foreach($queryArrayParams as $key=> $param)
+ {
+ if (!in_array($key,self::$FILTER_SIGN_KEY)){
+ if (!empty($param)){
+ $queryString .= $key . '=' . $param . '&';
+ }else{
+ $queryString .= $key . '&';
+ }
+ }
+ }
+ $queryString = substr($queryString, 0, -1);
+
+ return $queryString;
+ }
+
/**
* generates query string
*
@@ -3733,6 +3811,8 @@ public function setConnectTimeout($connectTimeout)
const OSS_OPTIONS_REQUEST_METHOD = 'Access-Control-Request-Method';
const OSS_OPTIONS_REQUEST_HEADERS = 'Access-Control-Request-Headers';
+ static $FILTER_SIGN_KEY = array('accessmonitor');
+
//use ssl flag
private $useSSL = false;
private $maxRetries = 3;
diff --git a/src/OSS/Result/GetBucketAccessMonitorResult.php b/src/OSS/Result/GetBucketAccessMonitorResult.php
new file mode 100644
index 0000000..569bf34
--- /dev/null
+++ b/src/OSS/Result/GetBucketAccessMonitorResult.php
@@ -0,0 +1,23 @@
+rawResponse->body;
+ $config = new AccessMonitorConfig();
+ $config->parseFromXml($content);
+ return $config->getStatus();
+ }
+}
diff --git a/tests/OSS/Tests/AccessMonitorConfigTest.php b/tests/OSS/Tests/AccessMonitorConfigTest.php
new file mode 100644
index 0000000..9e38362
--- /dev/null
+++ b/tests/OSS/Tests/AccessMonitorConfigTest.php
@@ -0,0 +1,57 @@
+
+
+Enabled
+
+BBBB;
+ private $validXml1 = <<
+
+Disabled
+
+BBBB;
+
+ private $invalidXml1 = <<
+
+
+BBBB;
+
+ public function testParseValidXml()
+ {
+ $accessConfig = new AccessMonitorConfig();
+ $accessConfig->parseFromXml($this->validXml);
+ $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml(strval($accessConfig)));
+ $this->assertEquals("Enabled",$accessConfig->getStatus());
+ }
+
+ public function testValidXml1()
+ {
+ $accessConfig = new AccessMonitorConfig();
+ $accessConfig->parseFromXml($this->validXml1);
+ $this->assertEquals($this->cleanXml($this->validXml1), $this->cleanXml(strval($accessConfig)));
+ $this->assertEquals("Disabled",$accessConfig->getStatus());
+ }
+
+ public function testInvalidXml1()
+ {
+ $accessConfig = new AccessMonitorConfig();
+ $accessConfig->parseFromXml($this->invalidXml1);
+ $this->assertEquals(null,$accessConfig->getStatus());
+ }
+
+ private function cleanXml($xml)
+ {
+ return str_replace("\n", "", str_replace("\r", "", $xml));
+ }
+}
diff --git a/tests/OSS/Tests/GetBucketAccessMonitorResultTest.php b/tests/OSS/Tests/GetBucketAccessMonitorResultTest.php
new file mode 100644
index 0000000..4fc76b6
--- /dev/null
+++ b/tests/OSS/Tests/GetBucketAccessMonitorResultTest.php
@@ -0,0 +1,63 @@
+
+
+Enabled
+
+BBBB;
+ private $validXml1 = <<
+
+Disabled
+
+BBBB;
+
+ private $invalidXml2 = <<
+
+
+BBBB;
+
+ public function testParseValidXml()
+ {
+ $response = new ResponseCore(array(), $this->validXml, 200);
+ $result = new GetBucketAccessMonitorResult($response);
+ $this->assertTrue($result->isOK());
+ $this->assertNotNull($result->getData());
+ $this->assertNotNull($result->getRawResponse());
+ $status = $result->getData();
+ $this->assertEquals("Enabled", $status);
+ }
+
+ public function testParseValidXml1()
+ {
+ $response = new ResponseCore(array(), $this->validXml1, 200);
+ $result = new GetBucketAccessMonitorResult($response);
+ $this->assertTrue($result->isOK());
+ $this->assertNotNull($result->getData());
+ $this->assertNotNull($result->getRawResponse());
+ $status = $result->getData();
+ $this->assertEquals("Disabled", $status);
+ }
+
+ public function testParseInvalidXml2()
+ {
+ $response = new ResponseCore(array(), $this->invalidXml2, 200);
+ $result = new GetBucketTransferAccelerationResult($response);
+ $this->assertTrue($result->isOK());
+ $this->assertNotNull($result->getData());
+ $this->assertNotNull($result->getRawResponse());
+ $this->assertNotNull($result->getRawResponse()->body);
+ $status= $result->getData();
+ $this->assertEquals(false, $status);
+ }
+}
diff --git a/tests/OSS/Tests/GetLifecycleResultTest.php b/tests/OSS/Tests/GetLifecycleResultTest.php
index e6d9a72..4529050 100644
--- a/tests/OSS/Tests/GetLifecycleResultTest.php
+++ b/tests/OSS/Tests/GetLifecycleResultTest.php
@@ -7,6 +7,7 @@
use OSS\Core\OssException;
use OSS\Model\LifecycleConfig;
use OSS\Result\GetLifecycleResult;
+use OSS\Result\Result;
class GetLifecycleResultTest extends \PHPUnit\Framework\TestCase
{
@@ -24,10 +25,120 @@ class GetLifecycleResultTest extends \PHPUnit\Framework\TestCase
temporary/
Enabled
2022-10-12T00:00:00.000Z
-2022-10-12T00:00:00.000Z
BBBB;
+ private $validXml1 = <<
+
+rule1
+logs/
+Enabled
+3
+1
+
+
+rule2
+logs2/
+Enabled
+180
+30IA
+60Archive
+rule3logs3/Enabled
+2017-01-01T00:00:00.000Z
+2017-01-01T00:00:00.000Z
+rule4logs4/Enabledkey1val1key12val1230IArule5logs5/Enabled30IAfalserule6logs6/Enabled30IAtruefalserule7logs7/Enabled30IAtruetrue
+BBB;
+
+ private $validXml2 = <<
+
+
+RuleID
+logs
+Enabled
+
+100
+
+
+Days
+Archive
+
+
+
+logs1
+key1value1
+
+
+
+
+BBBB;
+
+ private $inValidXml = <<
+
+
+delete obsoleted files
+obsoleted/
+Enabled
+3
+
+
+delete temporary files
+temporary/
+Enabled
+2022-10-12T00:00:00.000Z
+2022-10-12T00:00:00.000Z
+
+
+AAA;
+
+ private $validXml3 = <<
+
+
+rule1
+logs/
+Enabled
+
+true
+
+
+1
+
+
+5
+
+
+
+rule2
+data/
+Enabled
+
+30
+IA
+
+
+10
+IA
+
+
+
+rule3
+logs5/
+Enabled
+
+10
+IA
+true
+false
+
+
+
+AAA;
+
+
+
public function testParseValidXml()
{
@@ -40,6 +151,50 @@ public function testParseValidXml()
$this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($lifecycleConfig->serializeToXml()));
}
+ public function testParseValidXml2()
+ {
+ $response = new ResponseCore(array(), $this->validXml2, 200);
+ $result = new GetLifecycleResult($response);
+ $this->assertTrue($result->isOK());
+ $this->assertNotNull($result->getData());
+ $this->assertNotNull($result->getRawResponse());
+ $lifecycleConfig = $result->getData();
+ $this->assertEquals($this->cleanXml($this->validXml2), $this->cleanXml($lifecycleConfig->serializeToXml()));
+ }
+
+ public function testParseValidXml3()
+ {
+ $response = new ResponseCore(array(), $this->validXml3, 200);
+ $result = new GetLifecycleResult($response);
+ $this->assertTrue($result->isOK());
+ $this->assertNotNull($result->getData());
+ $this->assertNotNull($result->getRawResponse());
+ $lifecycleConfig = $result->getData();
+ $this->assertEquals($this->cleanXml($this->validXml3), $this->cleanXml($lifecycleConfig->serializeToXml()));
+ }
+
+ public function testInValidXml()
+ {
+ $response = new ResponseCore(array(), $this->inValidXml, 200);
+ try {
+ $result = new GetLifecycleResult($response);
+ } catch (OssException $e) {
+ printf($e->getMessage());
+ $this->assertTrue(false);
+ }
+ }
+
+ public function testParseValidXmlOne()
+ {
+ $response = new ResponseCore(array(), $this->validXml1, 200);
+ $result = new GetLifecycleResult($response);
+ $this->assertTrue($result->isOK());
+ $this->assertNotNull($result->getData());
+ $this->assertNotNull($result->getRawResponse());
+ $lifecycleConfig = $result->getData();
+ $this->assertEquals($this->cleanXml($this->validXml1), $this->cleanXml($lifecycleConfig->serializeToXml()));
+ }
+
private function cleanXml($xml)
{
return str_replace("\n", "", str_replace("\r", "", $xml));
@@ -52,8 +207,8 @@ public function testInvalidResponse()
$result = new GetLifecycleResult($response);
$this->assertTrue(false);
} catch (OssException $e) {
+ printf($e->getMessage());
$this->assertTrue(true);
}
}
-
}
diff --git a/tests/OSS/Tests/LifecycleConfigTest.php b/tests/OSS/Tests/LifecycleConfigTest.php
index 063e436..f368ef3 100644
--- a/tests/OSS/Tests/LifecycleConfigTest.php
+++ b/tests/OSS/Tests/LifecycleConfigTest.php
@@ -2,41 +2,79 @@
namespace OSS\Tests;
-use OSS\Core\OssException;
-use OSS\Model\LifecycleAction;
use OSS\Model\LifecycleConfig;
+use OSS\Model\LifecycleNoncurrentVersionExpiration;
use OSS\Model\LifecycleRule;
+use OSS\OssClient;
+use OSS\Model\LifecycleExpiration;
+use OSS\Model\LifecycleAbortMultipartUpload;
+use OSS\Model\LifecycleTag;
+use OSS\Model\LifecycleTransition;
+use OSS\Model\LifecycleNoncurrentVersionTransition;
+use \OSS\Model\LifecycleNot;
+use \OSS\Model\LifecycleFilter;
class LifecycleConfigTest extends \PHPUnit\Framework\TestCase
{
- private $validLifecycle = <<
+rule1logs/Enabled31rule2logs2/Enabled18030IA60Archiverule3logs3/Enabled2017-01-01T00:00:00.000Z2017-01-01T00:00:00.000Zrule4logs4/Enabledkey1val1key12val1230IArule5logs5/Enabled30IAfalserule6logs6/Enabled30IAtruefalserule7logs7/Enabled30IAtruetrue
+
+BBB;
+
+ private $validLifecycle2 = <<
-
-delete obsoleted files
-obsoleted/
-Enabled
-3
-
-
-delete temporary files
+delete temporary files
temporary/
Enabled
2022-10-12T00:00:00.000Z
-2022-10-12T00:00:00.000Z
BBBB;
- private $validLifecycle2 = <<
-delete temporary files
-temporary/
-Enabled
-2022-10-12T00:00:00.000Z
-2022-10-12T00:00:00.000Z
+
+r1
+abc/
+
+500
+64000
+
+abc/not1/
+
+notkey1
+notvalue1
+
+
+
+abc/not2/
+
+notkey2
+notvalue2
+
+
+
+
+
+r2
+def/
+
+500
+
+def/not1/
+
+
+def/not2/
+
+notkey2
+notvalue2
+
+
+
BBBB;
@@ -46,24 +84,95 @@ class LifecycleConfigTest extends \PHPUnit\Framework\TestCase
BBBB;
+
+
+
public function testConstructValidConfig()
- {
- $lifecycleConfig = new LifecycleConfig();
- $actions = array();
- $actions[] = new LifecycleAction("Expiration", "Days", 3);
- $lifecycleRule = new LifecycleRule("delete obsoleted files", "obsoleted/", "Enabled", $actions);
- $lifecycleConfig->addRule($lifecycleRule);
- $actions = array();
- $actions[] = new LifecycleAction("Expiration", "Date", '2022-10-12T00:00:00.000Z');
- $actions[] = new LifecycleAction("Expiration2", "Date", '2022-10-12T00:00:00.000Z');
- $lifecycleRule = new LifecycleRule("delete temporary files", "temporary/", "Enabled", $actions);
- $lifecycleConfig->addRule($lifecycleRule);
- try {
- $lifecycleConfig->addRule(null);
- $this->assertFalse(true);
- } catch (OssException $e) {
- $this->assertEquals('lifecycleRule is null', $e->getMessage());
- }
+ {$lifecycleConfig = new LifecycleConfig();
+
+ $rule1 = new LifecycleRule("rule1", "logs/", LifecycleRule::STATUS_ENANLED);
+ $lifecycleExpiration = new LifecycleExpiration();
+ $lifecycleExpiration->setDays(3);
+ $rule1->setExpiration($lifecycleExpiration);
+
+ $lifecycleAbortMultipartUpload = new LifecycleAbortMultipartUpload();
+ $lifecycleAbortMultipartUpload->setDays(1);
+ $rule1->setAbortMultipartUpload($lifecycleAbortMultipartUpload);
+
+ $lifecycleConfig->addRule($rule1);
+
+ $rule2 = new LifecycleRule("rule2", "logs2/", LifecycleRule::STATUS_ENANLED);
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $rule2->addTransition($lifecycleTransition);
+ // 60 天 转换Object的存储类型为 Archive
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(60);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_ARCHIVE);
+ $rule2->addTransition($lifecycleTransition);
+
+ $lifecycleExpiration = new LifecycleExpiration();
+ $lifecycleExpiration->setDays(180);
+ $rule2->setExpiration($lifecycleExpiration);
+ $lifecycleConfig->addRule($rule2);
+
+ $rule3 = new LifecycleRule("rule3", "logs3/", LifecycleRule::STATUS_ENANLED);
+ $lifecycleExpiration = new LifecycleExpiration();
+ $lifecycleExpiration->setCreatedBeforeDate("2017-01-01T00:00:00.000Z");
+ $rule3->setExpiration($lifecycleExpiration);
+
+ $lifecycleAbortMultipartUpload = new LifecycleAbortMultipartUpload();
+ $lifecycleAbortMultipartUpload->setCreatedBeforeDate("2017-01-01T00:00:00.000Z");
+ $rule3->setAbortMultipartUpload($lifecycleAbortMultipartUpload);
+ $lifecycleConfig->addRule($rule3);
+
+ $rule4 = new LifecycleRule("rule4", "logs4/", LifecycleRule::STATUS_ENANLED);
+
+ $tag = new LifecycleTag();
+ $tag->setKey("key1");
+ $tag->setValue("val1");
+ $rule4->addTag($tag);
+
+ $tag2 = new LifecycleTag();
+ $tag2->setKey("key12");
+ $tag2->setValue("val12");
+ $rule4->addTag($tag2);
+ $lifecycleConfig->addRule($rule4);
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $rule4->addTransition($lifecycleTransition);
+
+ $rule5 = new LifecycleRule("rule5", "logs5/", LifecycleRule::STATUS_ENANLED);
+
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $lifecycleTransition->setIsAccessTime(false);
+ $rule5->addTransition($lifecycleTransition);
+ $lifecycleConfig->addRule($rule5);
+
+ $rule6 = new LifecycleRule("rule6", "logs6/", LifecycleRule::STATUS_ENANLED);
+
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $lifecycleTransition->setIsAccessTime(true);
+ $lifecycleTransition->setReturnToStdWhenVisit(false);
+ $rule6->addTransition($lifecycleTransition);
+ $lifecycleConfig->addRule($rule6);
+
+ $rule7 = new LifecycleRule("rule7", "logs7/", LifecycleRule::STATUS_ENANLED);
+
+ $nonTransition = new LifecycleNoncurrentVersionTransition();
+ $nonTransition->setNoncurrentDays(30);
+ $nonTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $nonTransition->setIsAccessTime(true);
+ $nonTransition->setReturnToStdWhenVisit(true);
+ $rule7->addNoncurrentVersionTransition($nonTransition);
+ $lifecycleConfig->addRule($rule7);
+
$this->assertEquals($this->cleanXml(strval($lifecycleConfig)), $this->cleanXml($this->validLifecycle));
}
@@ -72,9 +181,9 @@ public function testParseValidXml()
$lifecycleConfig = new LifecycleConfig();
$lifecycleConfig->parseFromXml($this->validLifecycle);
$this->assertEquals($this->cleanXml($lifecycleConfig->serializeToXml()), $this->cleanXml($this->validLifecycle));
- $this->assertEquals(2, count($lifecycleConfig->getRules()));
+ $this->assertEquals(7, count($lifecycleConfig->getRules()));
$rules = $lifecycleConfig->getRules();
- $this->assertEquals('delete temporary files', $rules[1]->getId());
+ $this->assertEquals('rule2', $rules[1]->getId());
}
public function testParseValidXml2()
@@ -87,6 +196,18 @@ public function testParseValidXml2()
$this->assertEquals('delete temporary files', $rules[0]->getId());
}
+ public function testParseValidXml3()
+ {
+ $lifecycleConfig = new LifecycleConfig();
+ $lifecycleConfig->parseFromXml($this->validLifecycle3);
+ $this->assertEquals(2, count($lifecycleConfig->getRules()));
+ $rules = $lifecycleConfig->getRules();
+ $this->assertEquals('r1', $rules[0]->getId());
+ $filter = $rules[0]->getFilter();
+ $this->assertEquals(500, $filter->getObjectSizeGreaterThan());
+ $this->assertEquals(64000, $filter->getObjectSizeLessThan());
+ }
+
public function testParseNullXml()
{
$lifecycleConfig = new LifecycleConfig();
@@ -97,30 +218,170 @@ public function testParseNullXml()
public function testLifecycleRule()
{
- $lifecycleRule = new LifecycleRule("x", "x", "x", array('x'));
+ $lifecycleRule = new LifecycleRule("x", "x", "x");
$lifecycleRule->setId("id");
$lifecycleRule->setPrefix("prefix");
$lifecycleRule->setStatus("Enabled");
- $lifecycleRule->setActions(array());
$this->assertEquals('id', $lifecycleRule->getId());
$this->assertEquals('prefix', $lifecycleRule->getPrefix());
$this->assertEquals('Enabled', $lifecycleRule->getStatus());
- $this->assertEmpty($lifecycleRule->getActions());
}
- public function testLifecycleAction()
+ public function testLifecycleRuleWithFilter()
+ {
+ $lifecycleRule = new LifecycleRule("x", "x", "x");
+ $lifecycleRule->setId("id");
+ $lifecycleRule->setPrefix("prefix");
+ $lifecycleRule->setStatus("Enabled");
+
+ $not = new LifecycleNot();
+ $tag = new LifecycleTag();
+ $tag->setKey("key1");
+ $tag->setValue("val1");
+ $not->setTag($tag);
+ $not->setPrefix("log1/");
+
+ $filter = new LifecycleFilter();
+
+ $filter->addNot($not);
+
+ $lifecycleRule->setFilter($filter);
+
+ $this->assertEquals('id', $lifecycleRule->getId());
+ $this->assertEquals('prefix', $lifecycleRule->getPrefix());
+ $this->assertEquals('Enabled', $lifecycleRule->getStatus());
+
+ $getFilter = $lifecycleRule->getFilter();
+ $getNot = $getFilter->getNot();
+ $this->assertEquals($getNot[0]->getPrefix(),"log1/");
+ $getFilterTag = $getNot[0]->getTag();
+ $this->assertEquals($getFilterTag->getKey(),"key1");
+ $this->assertEquals($getFilterTag->getValue(),"val1");
+
+
+ $lifecycleRule = new LifecycleRule("x", "x", "x");
+ $lifecycleRule->setId("id");
+ $lifecycleRule->setPrefix("prefix");
+ $lifecycleRule->setStatus("Enabled");
+
+ $not = new LifecycleNot();
+
+ $filter = new LifecycleFilter();
+
+ $filter->addNot($not);
+
+ $filter->setObjectSizeGreaterThan(599);
+
+ $filter->setObjectSizeLessThan(899);
+
+ $lifecycleRule->setFilter($filter);
+
+
+ $this->assertEquals('id', $lifecycleRule->getId());
+ $this->assertEquals('prefix', $lifecycleRule->getPrefix());
+ $this->assertEquals('Enabled', $lifecycleRule->getStatus());
+
+ $getFilter = $lifecycleRule->getFilter();
+ $getNot = $getFilter->getNot();
+ $this->assertEquals($getNot[0]->getPrefix(),"log1/");
+ $getFilterTag = $getNot[0]->getTag();
+ $this->assertEquals($getFilterTag->getKey(),"key1");
+ $this->assertEquals($getFilterTag->getValue(),"val1");
+ }
+
+ public function testLifecycleTag()
+ {
+ $tag = new LifecycleTag('key1', 'val1');
+ $this->assertEquals($tag->getKey(), 'key1');
+ $this->assertEquals($tag->getValue(), 'val1');
+
+ $tag->setKey('v1');
+ $tag->setValue('v2');
+ $this->assertEquals($tag->getKey(), 'v1');
+ $this->assertEquals($tag->getValue(), 'v2');
+ }
+
+ public function testLifecycleTransition()
+ {
+ $transition= new LifecycleTransition(5, '2017-01-01T00:00:00.000Z',"IA",true,false);
+ $this->assertEquals($transition->getDays(), 5);
+ $this->assertEquals($transition->getCreatedBeforeDate(), '2017-01-01T00:00:00.000Z');
+ $this->assertEquals($transition->getStorageClass(), 'IA');
+ $this->assertEquals($transition->getIsAccessTime(), true);
+ $this->assertEquals($transition->getReturnToStdWhenVisit(), false);
+
+ $transition->setDays(10);
+ $transition->setCreatedBeforeDate("2022-01-01T00:00:00.000Z");
+ $transition->setStorageClass(OssClient::OSS_STORAGE_ARCHIVE);
+ $transition->setIsAccessTime(false);
+ $transition->setReturnToStdWhenVisit(false);
+
+ $this->assertEquals($transition->getDays(), 10);
+ $this->assertEquals($transition->getCreatedBeforeDate(), '2022-01-01T00:00:00.000Z');
+ $this->assertEquals($transition->getStorageClass(), OssClient::OSS_STORAGE_ARCHIVE);
+ $this->assertEquals($transition->getIsAccessTime(), false);
+ $this->assertEquals($transition->getReturnToStdWhenVisit(), false);
+ }
+
+ public function testLifecycleNonTransition()
+ {
+ $transition= new LifecycleNoncurrentVersionTransition(5, "IA",true,false);
+ $this->assertEquals($transition->getNoncurrentDays(), 5);
+ $this->assertEquals($transition->getStorageClass(), 'IA');
+ $this->assertEquals($transition->getIsAccessTime(), true);
+ $this->assertEquals($transition->getReturnToStdWhenVisit(), false);
+
+ $transition->setNoncurrentDays(10);
+ $transition->setStorageClass(OssClient::OSS_STORAGE_ARCHIVE);
+ $transition->setIsAccessTime(false);
+ $transition->setReturnToStdWhenVisit(false);
+
+ $this->assertEquals($transition->getNoncurrentDays(), 10);
+ $this->assertEquals($transition->getStorageClass(), OssClient::OSS_STORAGE_ARCHIVE);
+ $this->assertEquals($transition->getIsAccessTime(), false);
+ $this->assertEquals($transition->getReturnToStdWhenVisit(), false);
+ }
+
+ public function testLifecycleAbortMultipartUpload()
+ {
+ $abortMultipartUpload= new LifecycleAbortMultipartUpload(10, '2022-01-01T00:00:00.000Z');
+ $this->assertEquals($abortMultipartUpload->getDays(), 10);
+ $this->assertEquals($abortMultipartUpload->getCreatedBeforeDate(), '2022-01-01T00:00:00.000Z');
+
+ $abortMultipartUpload->setDays(1);
+ $abortMultipartUpload->setCreatedBeforeDate('2021-01-01T00:00:00.000Z');
+ $this->assertEquals($abortMultipartUpload->getDays(), 1);
+ $this->assertEquals($abortMultipartUpload->getCreatedBeforeDate(), '2021-01-01T00:00:00.000Z');
+ }
+
+
+ public function testLifecycleExpiration()
+ {
+ $expiration= new LifecycleExpiration(10, '2022-01-01T00:00:00.000Z',"2022-02-01T00:00:00.000Z",false);
+ $this->assertEquals($expiration->getDays(), 10);
+ $this->assertEquals($expiration->getDate(), "2022-01-01T00:00:00.000Z");
+ $this->assertEquals($expiration->getCreatedBeforeDate(), '2022-02-01T00:00:00.000Z');
+ $this->assertEquals($expiration->getExpiredObjectDeleteMarker(), false);
+
+ $expiration->setDays(1);
+ $expiration->setCreatedBeforeDate('2021-01-01T00:00:00.000Z');
+ $expiration->setDate("2021-01-02T00:00:00.000Z");
+ $expiration->setExpiredObjectDeleteMarker(true);
+
+ $this->assertEquals($expiration->getDays(), 1);
+ $this->assertEquals($expiration->getDate(), "2021-01-02T00:00:00.000Z");
+ $this->assertEquals($expiration->getCreatedBeforeDate(), '2021-01-01T00:00:00.000Z');
+ $this->assertEquals($expiration->getExpiredObjectDeleteMarker(), true);
+ }
+
+
+ public function testLifecycleNonExpiration()
{
- $action = new LifecycleAction('x', 'x', 'x');
- $this->assertEquals($action->getAction(), 'x');
- $this->assertEquals($action->getTimeSpec(), 'x');
- $this->assertEquals($action->getTimeValue(), 'x');
- $action->setAction('y');
- $action->setTimeSpec('y');
- $action->setTimeValue('y');
- $this->assertEquals($action->getAction(), 'y');
- $this->assertEquals($action->getTimeSpec(), 'y');
- $this->assertEquals($action->getTimeValue(), 'y');
+ $expiration= new LifecycleNoncurrentVersionExpiration(10, '2022-01-01T00:00:00.000Z',"2022-02-01T00:00:00.000Z",false);
+ $this->assertEquals($expiration->getNoncurrentDays(), 10);
+ $expiration->setNoncurrentDays(1);
+ $this->assertEquals($expiration->getNoncurrentDays(), 1);
}
private function cleanXml($xml)
diff --git a/tests/OSS/Tests/OssClientBucketAccessMonitorTest.php b/tests/OSS/Tests/OssClientBucketAccessMonitorTest.php
new file mode 100644
index 0000000..1c78841
--- /dev/null
+++ b/tests/OSS/Tests/OssClientBucketAccessMonitorTest.php
@@ -0,0 +1,107 @@
+ossClient->getBucketAccessMonitor($this->bucket);
+ $this->assertEquals("Disabled", $status);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ $this->ossClient->putBucketAccessMonitor($this->bucket, "Enabled");
+ Common::waitMetaSync();
+ $status = $this->ossClient->getBucketAccessMonitor($this->bucket);
+ $this->assertEquals("Enabled", $status);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ $this->ossClient->putBucketAccessMonitor($this->bucket, "Disabled");
+ Common::waitMetaSync();
+ $status = $this->ossClient->getBucketAccessMonitor($this->bucket);
+ $this->assertEquals("Disabled", $status);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+ }
+
+
+ public function testBucketAccessMonitorWithLifeRule(){
+ try {
+ Common::waitMetaSync();
+ $status = $this->ossClient->getBucketAccessMonitor($this->bucket);
+ $this->assertEquals("Disabled", $status);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ $this->ossClient->putBucketAccessMonitor($this->bucket, "Enabled");
+ Common::waitMetaSync();
+ $status = $this->ossClient->getBucketAccessMonitor($this->bucket);
+ $this->assertEquals("Enabled", $status);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+
+ $lifecycleConfig = new LifecycleConfig();
+
+ $rule7 = new LifecycleRule("rule7", "logs7/", LifecycleRule::STATUS_ENANLED);
+
+ $nonTransition = new LifecycleNoncurrentVersionTransition();
+ $nonTransition->setNoncurrentDays(30);
+ $nonTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $nonTransition->setIsAccessTime(true);
+ $nonTransition->setReturnToStdWhenVisit(true);
+
+ $rule7->addNonCurrentVersionTransition($nonTransition);
+ $lifecycleConfig->addRule($rule7);
+
+ try {
+ $this->ossClient->putBucketLifecycle($this->bucket, $lifecycleConfig);
+ } catch (OssException $e) {
+ print_r($e->getMessage());
+ $this->assertTrue(false);
+ }
+
+ try {
+ $this->ossClient->putBucketAccessMonitor($this->bucket, "Disabled");
+ } catch (OssException $e) {
+ $this->assertTrue(true);
+ }
+
+ try {
+ $this->ossClient->deleteBucketLifecycle($this->bucket);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ $this->ossClient->putBucketAccessMonitor($this->bucket, "Disabled");
+ Common::waitMetaSync();
+ $status = $this->ossClient->getBucketAccessMonitor($this->bucket);
+ $this->assertEquals("Disabled", $status);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+ }
+}
diff --git a/tests/OSS/Tests/OssClientBucketInfoTest.php b/tests/OSS/Tests/OssClientBucketInfoTest.php
index 759e536..7a677ee 100644
--- a/tests/OSS/Tests/OssClientBucketInfoTest.php
+++ b/tests/OSS/Tests/OssClientBucketInfoTest.php
@@ -11,6 +11,7 @@ public function testBucketInfo()
{
try {
$info = $this->ossClient->getBucketInfo($this->bucket);
+ $this->assertEquals("Disabled",$info->getAccessMonitor());
$this->assertEquals($this->bucket, $info->getName());
$this->assertEquals("Standard", $info->getStorageClass());
} catch (OssException $e) {
diff --git a/tests/OSS/Tests/OssClientBucketLifecycleTest.php b/tests/OSS/Tests/OssClientBucketLifecycleTest.php
index 46da1f0..89390e6 100644
--- a/tests/OSS/Tests/OssClientBucketLifecycleTest.php
+++ b/tests/OSS/Tests/OssClientBucketLifecycleTest.php
@@ -3,16 +3,25 @@
namespace OSS\Tests;
use OSS\Core\OssException;
+use OSS\Model\LifecycleAbortMultipartUpload;
use OSS\Model\LifecycleConfig;
+use OSS\Model\LifecycleExpiration;
+use OSS\Model\LifecycleFilter;
+use OSS\Model\LifecycleNoncurrentVersionTransition;
+use OSS\Model\LifecycleNot;
use OSS\Model\LifecycleRule;
use OSS\Model\LifecycleAction;
+use OSS\Model\LifecycleTag;
+use OSS\Model\LifecycleTransition;
+use OSS\OssClient;
require_once __DIR__ . DIRECTORY_SEPARATOR . 'TestOssClientBase.php';
class OssClientBucketLifecycleTest extends TestOssClientBase
{
- public function testBucket()
+
+ public function testBucketLifecycleOld()
{
$lifecycleConfig = new LifecycleConfig();
$actions = array();
@@ -54,4 +63,268 @@ public function testBucket()
}
}
+
+ public function testSimpleLifeRule()
+ {
+ $lifecycleConfig = new LifecycleConfig();
+ $lifecycleRule = new LifecycleRule("delete obsoleted files", "obsoleted/", "Enabled");
+ $expiration = new LifecycleExpiration(3);
+ $lifecycleRule->setExpiration($expiration);
+ $lifecycleConfig->addRule($lifecycleRule);
+
+ $lifecycleRule = new LifecycleRule("delete temporary files", "temporary/", "Enabled");
+ $expiration = new LifecycleExpiration(null,"2022-10-12T00:00:00.000Z");
+ $lifecycleRule->setExpiration($expiration);
+ $lifecycleConfig->addRule($lifecycleRule);
+
+ try {
+ $this->ossClient->putBucketLifecycle($this->bucket, $lifecycleConfig);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $lifecycleConfig2 = $this->ossClient->getBucketLifecycle($this->bucket);
+ $this->assertEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig2->serializeToXml());
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $this->ossClient->deleteBucketLifecycle($this->bucket);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $lifecycleConfig3 = $this->ossClient->getBucketLifecycle($this->bucket);
+ $this->assertNotEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig3->serializeToXml());
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ }
+
+
+ public function testManyLifeRule()
+ {
+ $lifecycleConfig = new LifecycleConfig();
+
+ $rule1 = new LifecycleRule("rule1", "logs/", LifecycleRule::STATUS_ENANLED);
+ $lifecycleExpiration = new LifecycleExpiration();
+ $lifecycleExpiration->setDays(3);
+ $rule1->setExpiration($lifecycleExpiration);
+
+ $lifecycleAbortMultipartUpload = new LifecycleAbortMultipartUpload();
+ $lifecycleAbortMultipartUpload->setDays(1);
+ $rule1->setAbortMultipartUpload($lifecycleAbortMultipartUpload);
+
+ $lifecycleConfig->addRule($rule1);
+
+ $rule2 = new LifecycleRule("rule2", "logs2/", LifecycleRule::STATUS_ENANLED);
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $rule2->addTransition($lifecycleTransition);
+ // 60 天 转换Object的存储类型为 Archive
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(60);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_ARCHIVE);
+ $rule2->addTransition($lifecycleTransition);
+
+ $lifecycleExpiration = new LifecycleExpiration();
+ $lifecycleExpiration->setDays(180);
+ $rule2->setExpiration($lifecycleExpiration);
+ $lifecycleConfig->addRule($rule2);
+
+ $rule3 = new LifecycleRule("rule3", "logs3/", LifecycleRule::STATUS_ENANLED);
+ $lifecycleExpiration = new LifecycleExpiration();
+ $lifecycleExpiration->setCreatedBeforeDate("2017-01-01T00:00:00.000Z");
+ $rule3->setExpiration($lifecycleExpiration);
+
+ $lifecycleAbortMultipartUpload = new LifecycleAbortMultipartUpload();
+ $lifecycleAbortMultipartUpload->setCreatedBeforeDate("2017-01-01T00:00:00.000Z");
+ $rule3->setAbortMultipartUpload($lifecycleAbortMultipartUpload);
+ $lifecycleConfig->addRule($rule3);
+
+ $rule4 = new LifecycleRule("rule4", "logs4/", LifecycleRule::STATUS_ENANLED);
+
+ $tag = new LifecycleTag();
+ $tag->setKey("key1");
+ $tag->setValue("val1");
+ $rule4->addTag($tag);
+
+ $tag2 = new LifecycleTag();
+ $tag2->setKey("key12");
+ $tag2->setValue("val12");
+ $rule4->addTag($tag2);
+ $lifecycleConfig->addRule($rule4);
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $rule4->addTransition($lifecycleTransition);
+
+ try {
+ $this->ossClient->putBucketLifecycle($this->bucket, $lifecycleConfig);
+ } catch (OssException $e) {
+ print_r($e->getMessage());
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $lifecycleConfig2 = $this->ossClient->getBucketLifecycle($this->bucket);
+ $this->assertEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig2->serializeToXml());
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $this->ossClient->deleteBucketLifecycle($this->bucket);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $lifecycleConfig3 = $this->ossClient->getBucketLifecycle($this->bucket);
+ $this->assertNotEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig3->serializeToXml());
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ }
+
+ public function testLifeRuleWithAccessTime()
+ {
+ $lifecycleConfig = new LifecycleConfig();
+
+ $rule6 = new LifecycleRule("rule6", "logs6/", LifecycleRule::STATUS_ENANLED);
+
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $lifecycleTransition->setIsAccessTime(true);
+ $lifecycleTransition->setReturnToStdWhenVisit(false);
+ $rule6->addTransition($lifecycleTransition);
+ $lifecycleConfig->addRule($rule6);
+
+ $rule7 = new LifecycleRule("rule7", "logs7/", LifecycleRule::STATUS_ENANLED);
+
+ $nonTransition = new LifecycleNoncurrentVersionTransition();
+ $nonTransition->setNoncurrentDays(30);
+ $nonTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $nonTransition->setIsAccessTime(true);
+ $nonTransition->setReturnToStdWhenVisit(true);
+ $rule7->addNoncurrentVersionTransition($nonTransition);
+ $lifecycleConfig->addRule($rule7);
+
+ try {
+ $this->ossClient->putBucketLifecycle($this->bucket, $lifecycleConfig);
+ } catch (OssException $e) {
+ print_r($e->getMessage());
+ $this->assertTrue(true);
+ }
+
+ try {
+ $this->ossClient->putBucketAccessMonitor($this->bucket, "Enabled");
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ $this->ossClient->putBucketLifecycle($this->bucket, $lifecycleConfig);
+ } catch (OssException $e) {
+ print_r($e->getMessage());
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $lifecycleConfig2 = $this->ossClient->getBucketLifecycle($this->bucket);
+ $this->assertEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig2->serializeToXml());
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $this->ossClient->deleteBucketLifecycle($this->bucket);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $lifecycleConfig3 = $this->ossClient->getBucketLifecycle($this->bucket);
+ $this->assertNotEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig3->serializeToXml());
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ }
+
+ public function testLifeRuleWithFilter()
+ {
+ $lifecycleConfig = new LifecycleConfig();
+
+ $rule = new LifecycleRule("rule-filter", "logs", LifecycleRule::STATUS_ENANLED);
+
+ $lifecycleTransition = new LifecycleTransition();
+ $lifecycleTransition->setDays(30);
+ $lifecycleTransition->setStorageClass(OssClient::OSS_STORAGE_IA);
+ $expiration = new LifecycleExpiration(100,null);
+
+ $rule->addTransition($lifecycleTransition);
+ $rule->setExpiration($expiration);
+
+ $not = new LifecycleNot();
+ $tag = new LifecycleTag();
+ $tag->setKey("key1");
+ $tag->setValue("val1");
+ $not->setTag($tag);
+ $not->setPrefix("logs1/");
+
+ $filter = new LifecycleFilter();
+
+ $filter->addNot($not);
+
+ $rule->setFilter($filter);
+ $lifecycleConfig->addRule($rule);
+
+ try {
+ $this->ossClient->putBucketLifecycle($this->bucket, $lifecycleConfig);
+ } catch (OssException $e) {
+ print_r($e->getMessage());
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $lifecycleConfig2 = $this->ossClient->getBucketLifecycle($this->bucket);
+ $this->assertEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig2->serializeToXml());
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $this->ossClient->deleteBucketLifecycle($this->bucket);
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ Common::waitMetaSync();
+ $lifecycleConfig3 = $this->ossClient->getBucketLifecycle($this->bucket);
+ $this->assertNotEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig3->serializeToXml());
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ }
}
diff --git a/tests/OSS/Tests/OssClientObjectTest.php b/tests/OSS/Tests/OssClientObjectTest.php
index bb61018..3c9058f 100644
--- a/tests/OSS/Tests/OssClientObjectTest.php
+++ b/tests/OSS/Tests/OssClientObjectTest.php
@@ -620,6 +620,24 @@ public function testGetSimplifiedObjectMeta()
}
}
+ public function testGetSimplifiedObjectMetaWithAccessTime()
+ {
+ $object = "oss-php-sdk-test/upload-test-object-name.txt";
+
+ try {
+ $this->ossClient->putBucketAccessMonitor($this->bucket, "Enabled");
+ } catch (OssException $e) {
+ $this->assertTrue(false);
+ }
+
+ try {
+ $objectMeta = $this->ossClient->getSimplifiedObjectMeta($this->bucket, $object);
+ $this->assertEquals(true, array_key_exists(strtolower('x-oss-last-access-time'), $objectMeta));
+ } catch (OssException $e) {
+ $this->assertFalse(false);
+ }
+ }
+
public function testUploadStream()
{
$object = "oss-php-sdk-test/put-from-stream.txt";