7676use OSS \Result \DeleteObjectVersionsResult ;
7777use OSS \Model \TransferAccelerationConfig ;
7878use OSS \Result \GetBucketTransferAccelerationResult ;
79+ use OSS \Model \CnameTokenInfo ;
80+ use OSS \Result \CreateBucketCnameTokenResult ;
81+ use OSS \Result \GetBucketCnameTokenResult ;
7982
8083/**
8184 * Class OssClient
@@ -546,12 +549,12 @@ public function addBucketCname($bucket, $cname, $options = NULL)
546549 $ options [self ::OSS_BUCKET ] = $ bucket ;
547550 $ options [self ::OSS_METHOD ] = self ::OSS_HTTP_POST ;
548551 $ options [self ::OSS_OBJECT ] = '/ ' ;
549- $ options [self ::OSS_SUB_RESOURCE ] = 'cname ' ;
550552 $ options [self ::OSS_CONTENT_TYPE ] = 'application/xml ' ;
551553 $ cnameConfig = new CnameConfig ();
552554 $ cnameConfig ->addCname ($ cname );
553555 $ options [self ::OSS_CONTENT ] = $ cnameConfig ->serializeToXml ();
554556 $ options [self ::OSS_COMP ] = 'add ' ;
557+ $ options [self ::OSS_CNAME ] = '' ;
555558
556559 $ response = $ this ->auth ($ options );
557560 $ result = new PutSetDeleteResult ($ response );
@@ -572,7 +575,7 @@ public function getBucketCname($bucket, $options = NULL)
572575 $ options [self ::OSS_BUCKET ] = $ bucket ;
573576 $ options [self ::OSS_METHOD ] = self ::OSS_HTTP_GET ;
574577 $ options [self ::OSS_OBJECT ] = '/ ' ;
575- $ options [self ::OSS_SUB_RESOURCE ] = 'cname ' ;
578+ $ options [self ::OSS_CNAME ] = '' ;
576579 $ response = $ this ->auth ($ options );
577580 $ result = new GetCnameResult ($ response );
578581 return $ result ->getData ();
@@ -593,18 +596,64 @@ public function deleteBucketCname($bucket, $cname, $options = NULL)
593596 $ options [self ::OSS_BUCKET ] = $ bucket ;
594597 $ options [self ::OSS_METHOD ] = self ::OSS_HTTP_POST ;
595598 $ options [self ::OSS_OBJECT ] = '/ ' ;
596- $ options [self ::OSS_SUB_RESOURCE ] = 'cname ' ;
597599 $ options [self ::OSS_CONTENT_TYPE ] = 'application/xml ' ;
598600 $ cnameConfig = new CnameConfig ();
599601 $ cnameConfig ->addCname ($ cname );
600602 $ options [self ::OSS_CONTENT ] = $ cnameConfig ->serializeToXml ();
601603 $ options [self ::OSS_COMP ] = 'delete ' ;
604+ $ options [self ::OSS_CNAME ] = '' ;
602605
603606 $ response = $ this ->auth ($ options );
604607 $ result = new PutSetDeleteResult ($ response );
605608 return $ result ->getData ();
606609 }
607610
611+ /**
612+ * create a cname token for a bucket
613+ *
614+ * @param string $bucket bucket name
615+ * @param array $options
616+ * @throws OssException
617+ * @return CnameToken
618+ */
619+ public function createBucketCnameToken ($ bucket , $ cname , $ options = NULL )
620+ {
621+ $ this ->precheckCommon ($ bucket , NULL , $ options , false );
622+ $ options [self ::OSS_BUCKET ] = $ bucket ;
623+ $ options [self ::OSS_METHOD ] = self ::OSS_HTTP_POST ;
624+ $ options [self ::OSS_OBJECT ] = '/ ' ;
625+ $ options [self ::OSS_CONTENT_TYPE ] = 'application/xml ' ;
626+ $ cnameConfig = new CnameConfig ();
627+ $ cnameConfig ->addCname ($ cname );
628+ $ options [self ::OSS_CONTENT ] = $ cnameConfig ->serializeToXml ();
629+ $ options [self ::OSS_COMP ] = 'token ' ;
630+ $ options [self ::OSS_CNAME ] = '' ;
631+ $ response = $ this ->auth ($ options );
632+ $ result = new CreateBucketCnameTokenResult ($ response );
633+ return $ result ->getData ();
634+ }
635+
636+ /**
637+ * get a cname token for a bucket
638+ *
639+ * @param string $bucket bucket name
640+ * @param array $options
641+ * @throws OssException
642+ * @return CnameToken
643+ */
644+ public function getBucketCnameToken ($ bucket , $ cname , $ options = NULL )
645+ {
646+ $ this ->precheckCommon ($ bucket , NULL , $ options , false );
647+ $ options [self ::OSS_BUCKET ] = $ bucket ;
648+ $ options [self ::OSS_METHOD ] = self ::OSS_HTTP_GET ;
649+ $ options [self ::OSS_OBJECT ] = '/ ' ;
650+ $ options [self ::OSS_COMP ] = 'token ' ;
651+ $ options [self ::OSS_CNAME ] = $ cname ;
652+ $ response = $ this ->auth ($ options );
653+ $ result = new GetBucketCnameTokenResult ($ response );
654+ return $ result ->getData ();
655+ }
656+
608657 /**
609658 * Creates a Live Channel under a bucket
610659 *
@@ -3279,6 +3328,7 @@ private function generateSignableQueryStringParam($options)
32793328 self ::OSS_TRAFFIC_LIMIT ,
32803329 self ::OSS_VERSION_ID ,
32813330 self ::OSS_CONTINUATION_TOKEN ,
3331+ self ::OSS_CNAME ,
32823332 );
32833333
32843334 foreach ($ signableList as $ item ) {
@@ -3565,6 +3615,7 @@ public function setConnectTimeout($connectTimeout)
35653615 const OSS_VERSION_ID_MARKER = 'version-id-marker ' ;
35663616 const OSS_VERSION_ID = 'versionId ' ;
35673617 const OSS_HEADER_VERSION_ID = 'x-oss-version-id ' ;
3618+ const OSS_CNAME = 'cname ' ;
35683619
35693620 //private URLs
35703621 const OSS_URL_ACCESS_KEY_ID = 'OSSAccessKeyId ' ;
0 commit comments