@@ -2743,6 +2743,134 @@ def delete_bucket_inventory(self, Bucket, Id, **kwargs):
27432743 params = params )
27442744 return None
27452745
2746+ def put_object_tagging (self , Bucket , Key , Tagging = {}, VersionId = None , ** kwargs ):
2747+ """设置object的标签
2748+
2749+ :param Bucket(string): 存储桶名称.
2750+ :param Key(string): COS路径.
2751+ :param Tagging(dict): Object的标签集合
2752+ :param VersionId(string): 对象版本ID,可选.不指定时为Object的最新版本.
2753+ :param kwargs(dict): 设置请求headers.
2754+ :return: None.
2755+
2756+ .. code-block:: python
2757+
2758+ config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2759+ client = CosS3Client(config)
2760+ # 设置bucket标签
2761+ tagging_set = {
2762+ 'TagSet': {
2763+ 'Tag': [
2764+ {
2765+ 'Key': 'string',
2766+ 'Value': 'string'
2767+ }
2768+ ]
2769+ }
2770+ }
2771+ response = client.put_object_tagging(
2772+ Bucket='bucket',
2773+ Key='test.txt',
2774+ Tagging=tagging_set
2775+ )
2776+ """
2777+ lst = ['<Tag>' , '</Tag>' ] # 类型为list的标签
2778+ xml_config = format_xml (data = Tagging , root = 'Tagging' , lst = lst )
2779+ headers = mapped (kwargs )
2780+ headers ['Content-MD5' ] = get_md5 (xml_config )
2781+ headers ['Content-Type' ] = 'application/xml'
2782+ params = {'tagging' : '' }
2783+ if VersionId :
2784+ params ['VersionId' ] = VersionId
2785+ url = self ._conf .uri (bucket = Bucket , path = Key )
2786+ logger .info ("put object tagging, url=:{url} ,headers=:{headers}" .format (
2787+ url = url ,
2788+ headers = headers ))
2789+ rt = self .send_request (
2790+ method = 'PUT' ,
2791+ url = url ,
2792+ bucket = Bucket ,
2793+ data = xml_config ,
2794+ auth = CosS3Auth (self ._conf , Key , params = params ),
2795+ headers = headers ,
2796+ params = params )
2797+ return None
2798+
2799+ def get_object_tagging (self , Bucket , Key , VersionId = None , ** kwargs ):
2800+ """获取object标签
2801+
2802+ :param Bucket(string): 存储桶名称.
2803+ :param Key(string): COS路径.
2804+ :param VersionId(string): 对象版本ID,可选.不指定时为Object的最新版本.
2805+ :param kwargs(dict): 设置请求headers.
2806+ :return(dict): Bucket对应的标签.
2807+
2808+ .. code-block:: python
2809+
2810+ config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2811+ client = CosS3Client(config)
2812+ # 获取bucket标签
2813+ response = client.get_object_tagging(
2814+ Bucket='bucket',
2815+ Key='test.txt'
2816+ )
2817+ """
2818+ headers = mapped (kwargs )
2819+ params = {'tagging' : '' }
2820+ if VersionId :
2821+ params ['VersionId' ] = VersionId
2822+ url = self ._conf .uri (bucket = Bucket , path = Key )
2823+ logger .info ("get object tagging, url=:{url} ,headers=:{headers}" .format (
2824+ url = url ,
2825+ headers = headers ))
2826+ rt = self .send_request (
2827+ method = 'GET' ,
2828+ url = url ,
2829+ bucket = Bucket ,
2830+ auth = CosS3Auth (self ._conf , Key , params = params ),
2831+ headers = headers ,
2832+ params = params )
2833+ data = xml_to_dict (rt .content )
2834+ if 'TagSet' in data :
2835+ format_dict (data ['TagSet' ], ['Tag' ])
2836+ return data
2837+
2838+ def delete_object_tagging (self , Bucket , Key , VersionId = None , ** kwargs ):
2839+ """删除object标签
2840+
2841+ :param Bucket(string): 存储桶名称.
2842+ :param Key(string): COS路径.
2843+ :param VersionId(string): 对象版本ID,可选.不指定时为Object的最新版本.
2844+ :param kwargs(dict): 设置请求headers.
2845+ :return(dict): None.
2846+
2847+ .. code-block:: python
2848+
2849+ config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2850+ client = CosS3Client(config)
2851+ # 删除bucket标签
2852+ response = client.delete_object_tagging(
2853+ Bucket='bucket',
2854+ Key='test.txt'
2855+ )
2856+ """
2857+ headers = mapped (kwargs )
2858+ params = {'tagging' : '' }
2859+ if VersionId :
2860+ params ['VersionId' ] = VersionId
2861+ url = self ._conf .uri (bucket = Bucket , path = Key )
2862+ logger .info ("delete object tagging, url=:{url} ,headers=:{headers}" .format (
2863+ url = url ,
2864+ headers = headers ))
2865+ rt = self .send_request (
2866+ method = 'DELETE' ,
2867+ url = url ,
2868+ bucket = Bucket ,
2869+ auth = CosS3Auth (self ._conf , Key , params = params ),
2870+ headers = headers ,
2871+ params = params )
2872+ return None
2873+
27462874 def put_bucket_tagging (self , Bucket , Tagging = {}, ** kwargs ):
27472875 """设置bucket的标签
27482876
0 commit comments