@@ -1676,6 +1676,85 @@ function getBucketAccelerate(params, callback) {
1676
1676
} ) ;
1677
1677
}
1678
1678
1679
+ function putBucketEncryption ( params , callback ) {
1680
+ var conf = params . ServerSideEncryptionConfiguration || { } ;
1681
+ var Rules = conf . Rule || conf . Rules || [ ] ;
1682
+ var xml = util . json2xml ( { ServerSideEncryptionConfiguration : { Rule :Rules } } ) ;
1683
+
1684
+ var headers = params . Headers ;
1685
+ headers [ 'Content-Type' ] = 'application/xml' ;
1686
+ headers [ 'Content-MD5' ] = util . binaryBase64 ( util . md5 ( xml ) ) ;
1687
+
1688
+ submitRequest . call ( this , {
1689
+ Action : 'name/cos:PutBucketEncryption' ,
1690
+ method : 'PUT' ,
1691
+ Bucket : params . Bucket ,
1692
+ Region : params . Region ,
1693
+ body : xml ,
1694
+ action : 'encryption' ,
1695
+ headers : headers ,
1696
+ } , function ( err , data ) {
1697
+ if ( err && err . statusCode === 204 ) {
1698
+ return callback ( null , { statusCode : err . statusCode } ) ;
1699
+ } else if ( err ) {
1700
+ return callback ( err ) ;
1701
+ }
1702
+ callback ( null , {
1703
+ statusCode : data . statusCode ,
1704
+ headers : data . headers ,
1705
+ } ) ;
1706
+ } ) ;
1707
+ }
1708
+
1709
+ function getBucketEncryption ( params , callback ) {
1710
+ submitRequest . call ( this , {
1711
+ Action : 'name/cos:GetBucketEncryption' ,
1712
+ method : 'GET' ,
1713
+ Bucket : params . Bucket ,
1714
+ Region : params . Region ,
1715
+ headers : params . Headers ,
1716
+ action : 'encryption' ,
1717
+ } , function ( err , data ) {
1718
+ if ( err ) {
1719
+ if ( err . statusCode === 404 && err . code === 'NoSuchEncryptionConfiguration' ) {
1720
+ var result = {
1721
+ EncryptionConfiguration : { Rules : [ ] } ,
1722
+ statusCode : err . statusCode ,
1723
+ } ;
1724
+ err . headers && ( result . headers = err . headers ) ;
1725
+ callback ( null , result ) ;
1726
+ } else {
1727
+ callback ( err ) ;
1728
+ }
1729
+ return ;
1730
+ }
1731
+ var Rules = util . makeArray ( data . EncryptionConfiguration && data . EncryptionConfiguration . Rule || [ ] ) ;
1732
+ data . EncryptionConfiguration = { Rules : Rules } ;
1733
+ callback ( err , data ) ;
1734
+ } ) ;
1735
+ }
1736
+
1737
+ function deleteBucketEncryption ( params , callback ) {
1738
+ submitRequest . call ( this , {
1739
+ Action : 'name/cos:DeleteBucketReplication' ,
1740
+ method : 'DELETE' ,
1741
+ Bucket : params . Bucket ,
1742
+ Region : params . Region ,
1743
+ headers : params . Headers ,
1744
+ action : 'encryption' ,
1745
+ } , function ( err , data ) {
1746
+ if ( err && err . statusCode === 204 ) {
1747
+ return callback ( null , { statusCode : err . statusCode } ) ;
1748
+ } else if ( err ) {
1749
+ return callback ( err ) ;
1750
+ }
1751
+ callback ( null , {
1752
+ statusCode : data . statusCode ,
1753
+ headers : data . headers ,
1754
+ } ) ;
1755
+ } ) ;
1756
+ }
1757
+
1679
1758
// Object 相关
1680
1759
1681
1760
/**
@@ -3713,6 +3792,9 @@ var API_MAP = {
3713
3792
deleteBucketInventory : deleteBucketInventory ,
3714
3793
putBucketAccelerate : putBucketAccelerate ,
3715
3794
getBucketAccelerate : getBucketAccelerate ,
3795
+ putBucketEncryption : putBucketEncryption ,
3796
+ getBucketEncryption : getBucketEncryption ,
3797
+ deleteBucketEncryption : deleteBucketEncryption ,
3716
3798
3717
3799
// Object 相关方法
3718
3800
getObject : getObject ,
0 commit comments