o
    iS                    @   s8  d Z ddlZddlm  mZ ddlZddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m5Z5m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM ddlNmOZOmPZP ddlQmRZRmSZSmTZT ddlUmVZVmWZWmXZX ddlYmUZU ddlZZZdd	l[m\Z\ e]e^Z_d
d Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjd d! Zkd"d# Zld$d% Zmd&d' Znd(d) Zod*d+ Zpd,d- Zqd.d/ Zrd0d1 Zsd2d3 Ztd4d5 Zud6d7 Zvd8d9 Zwd:d; Zxd<d= Zyd>d? Zzd@dA Z{dBdC Z|dDdE Z}dFdG Z~dHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddÄ Zddń ZdddǄZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZddՄ Zddׄ Zddل Zddۄ Zdd݄ Zdd߄ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zڐd d Zېdd Zܐdd Zݐdd Zސdd	 Zߐd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS (  u   
oss2.xml_utils
~~~~~~~~~~~~~~

XML处理相关。

主要包括两类接口：
    - parse_开头的函数：用来解析服务器端返回的XML
    - to_开头的函数：用来生成发往服务器端的XML

    N   )HSimplifiedObjectInfoSimplifiedBucketInfoPartInfoMultipartUploadInfoLifecycleRuleLifecycleExpirationCorsRuleLiveChannelInfoTargetLiveChannelInfo
LiveRecordLiveChannelVideoStatLiveChannelAudioStatOwnerAccessControlListAbortMultipartUploadStorageTransitionTaggingTaggingRuleServerSideEncryptionRuleListObjectVersionsResultObjectVersionInfoDeleteMarkerInfoBatchDeleteObjectVersionResultBucketWebsiteRoutingRule	ConditionConditionInlcudeHeaderRedirectRedirectMirrorHeadersMirrorHeadersSetREDIRECT_TYPE_MIRRORREDIRECT_TYPE_EXTERNALREDIRECT_TYPE_INTERNALREDIRECT_TYPE_ALICDN"NoncurrentVersionStorageTransitionNoncurrentVersionExpirationAsyncFetchTaskConfigurationInventoryConfigurationInventoryFilterInventoryScheduleInventoryDestinationInventoryBucketDestination InventoryServerSideEncryptionKMS InventoryServerSideEncryptionOSSLocationTransferTypeBucketReplicationProgressReplicationRule	CnameInfoCertificateInfor1   MetaQueryFileAggregationsInfoOSSTaggingInfoOSSUserMetaInfoAggregationGroupInfoAccessMonitorInfoLifecycleFilter	FilterNotFilterNotTagBucketStyleInfo
RegionInfoCallbackPolicyInfoDataRedundancyTransitionInfoListAccessPointResultAccessPointVpcConfigurationAccessPointEndpointsAccessPointInfoPublicAccessBlockConfigurationResourcePoolInfoResourcePoolBucketInfoRequesterQoSInfoQoSConfiguration)SelectJsonTypesSelectParameters)
urlunquote
to_unicode	to_string)iso8601_to_unixtimedate_to_iso8601iso8601_to_date)utils)SelectOperationClientErrorc                 C   s@   |  |}|d u rtd| d | j |jd u rdS t|jS )Nzparse xml: z could not be found under  )findRuntimeErrortagtextrN   )parentpathchild r\   B/home/ubuntu/.local/lib/python3.10/site-packages/oss2/xml_utils.py	_find_tage   s   


r^   c                 C   s.   |  |}|d u r|S |jd u rdS t|jS )NrT   )rU   rX   rN   )rY   rZ   default_valuer[   r\   r\   r]   _find_tag_with_defaulto   s   


r`   c                 C   s8   t | |}|dkrdS |dkrdS td| d | j )NtrueTfalseFzparse xml: value of z is not a boolean under )r^   rV   rW   )rY   rZ   rX   r\   r\   r]   
_find_booly   s   
rc   c                 C   s   t t| |S N)intr^   )rY   rZ   r\   r\   r]   	_find_int      rf   c                 C   s   t | |}|rt|S |S rd   )r^   rL   )rY   rZ   url_encodednamer\   r\   r]   _find_object   s   
rj   c                 C   s   dd |  |D S )Nc                 S   s   g | ]	}t |jp
d qS )rT   )rN   rX   ).0noder\   r\   r]   
<listcomp>   s    z"_find_all_tags.<locals>.<listcomp>)findallrY   rW   r\   r\   r]   _find_all_tags   s   rp   c                 C   s(   |  d}|d urt|jdkrdS dS )NEncodingTypeurlTF)rU   rN   rX   )rootrl   r\   r\   r]   _is_url_encoding   s   
rt   c                 C   s   t j| ddS )Nzutf-8)encoding)ElementTreetostring)rs   r\   r\   r]   _node_to_string   rg   rx   c                 C   s   |D ]}t | || qd S rd   )_add_text_child)rY   rW   entrieser\   r\   r]   _add_node_list   s   r|   c                 C   s   t |t| |_d S rd   )rM   rv   
SubElementrX   )rY   rW   rX   r\   r\   r]   ry      s   ry   c                 C   s   t | |S rd   )rv   r}   ro   r\   r\   r]   _add_node_child   s   r~   c                 C      t |}t|}t|d| _| jrt|d|| _|dD ]C}d }|dd ur4t	t
|dt
|d}| jtt|d|tt
|dt
|d	d
t
|dtt
|dt
|d|t|dd  q|dD ]}| jt|d| qg| S )NIsTruncated
NextMarkerContentsr   Owner/DisplayNameOwner/IDKeyLastModifiedETag"TypeSizeStorageClassRestoreInfoCommonPrefixesPrefix)rv   
fromstringrt   rc   is_truncatedrj   next_markerrn   rU   r   r^   object_listappendr   rO   stripre   r`   prefix_listresultbodyrs   rh   contents_nodeownerprefix_noder\   r\   r]   parse_list_objects   ,   


r   c                 C   r   )Nr   NextContinuationTokenr   r   r   r   r   r   r   r   r   r   r   r   r   r   )rv   r   rt   rc   r   rj   next_continuation_tokenrn   rU   r   r^   r   r   r   rO   r   re   r`   r   r   r\   r\   r]   parse_list_objects_v2   r   r   c                 C   s   t |}|dd u rd| _nt|d| _| jrt|d| _|dd ur4tt|dd t|dd | _	|
dD ]-}| jtt|dt|d	tt|d
t|dt|dt|dt|dd t|dd  q9| S )Nr   Fr   r   r   r   zBuckets/BucketNameLocationCreationDateExtranetEndpointIntranetEndpointr   RegionResourceGroupId)rv   r   rU   r   rc   r^   r   r   r`   r   rn   bucketsr   r   rO   )r   r   rs   bucket_noder\   r\   r]   parse_list_buckets   s(   


r   c                 C      t |}t|d| _| S )NUploadId)rv   r   r^   	upload_idr   r   rs   r\   r\   r]   parse_init_multipart_upload      
r   c              
   C   s   t |}t|}t|d| _t|d|| _t|d| _|	dD ]}| j
tt|d|t|dtt|d q!|	dD ]}| jt|d	| q?| S )
Nr   NextKeyMarkerNextUploadIdMarkerUploadr   r   	Initiatedr   r   )rv   r   rt   rc   r   rj   next_key_markerr^   next_upload_id_markerrn   upload_listr   r   rO   r   )r   r   rs   rh   upload_noder   r\   r\   r]   parse_list_multipart_uploads  s   

r   c                 C   sp   t |}t|d| _t|d| _|dD ]}| jt	t
|dt|ddt
|dtt|dd	 q| S )
Nr   NextPartNumberMarkerPart
PartNumberr   r   r   r   )sizelast_modified)rv   r   rc   r   r^   r   rn   partsr   r   rf   r   rO   )r   r   rs   	part_noder\   r\   r]   parse_list_parts  s   

r   c                 C   s   |s| S t |}t|}|dD ]I}t|d|}| j| |d}d }|d ur0t|d}|d}d}	|d ur@t	|d}	|d}
d}|
d urPt|d}| j
t|||	| q| S )NDeletedr   	VersionIdDeleteMarkerFDeleteMarkerVersionIdrT   )rv   r   rt   rn   rj   deleted_keysr   rU   r^   rc   delete_versionsr   )r   r   rs   rh   deleted_nodekeyversionid_node	versioniddelete_marker_nodedelete_markermarker_versionid_nodedelete_marker_versionidr\   r\   r]   parse_batch_delete_objects,  s*   






r   c                 C   r   NzAccessControlList/Grantrv   r   r^   aclr   r\   r\   r]   parse_get_bucket_aclJ  r   r   c                 C   r   r   r   r   r\   r\   r]   parse_get_object_aclQ  r   r   c                 C   s   t t|j| _| S rd   )rN   rv   r   rX   locationr   r   r\   r\   r]   parse_get_bucket_locationX  s   r   c                 C   sB   t |}|dd urt|d| _|dd urt|d| _| S )NzLoggingEnabled/TargetBucketzLoggingEnabled/TargetPrefix)rv   r   rU   r^   target_buckettarget_prefixr   r\   r\   r]   parse_get_bucket_logging]  s   
r   c                 C   sZ  t |}t|d| _t|d| _tt|dd| _|dd ur)tt	|d| _
|dd ur8tt	|d| _|dd urGtt	|d| _|dd urVtt	|d| _|d	d urett	|d	| _|d
d urttt	|d
| _|dd urtt	|d| _|dd urtt	|d| _|dd urtt	|d| _|dd urtt	|d| _|dd urtt	|d| _|dd urtt	|d| _|dd urtt	|d| _|dd urtt	|d| _|dd urtt	|d| _|dd urtt	|d| _|dd urtt	|d| _|dd ur+tt	|d| _| S )NStorageObjectCountMultipartUploadCountr   LiveChannelCountLastModifiedTimeStandardStorageStandardObjectCountInfrequentAccessStorageInfrequentAccessRealStorageInfrequentAccessObjectCountArchiveStorageArchiveRealStorageArchiveObjectCountColdArchiveStorageColdArchiveRealStorageColdArchiveObjectCountMultipartPartCountDeleteMarkerCountDeepColdArchiveStorageDeepColdArchiveRealStorageDeepColdArchiveObjectCount)rv   r   rf   storage_size_in_bytesobject_countre   r`   multi_part_upload_countrU   r^   live_channel_countlast_modified_timestandard_storagestandard_object_countinfrequent_access_storageinfrequent_access_real_storageinfrequent_access_object_countarchive_storagearchive_real_storagearchive_object_countcold_archive_storagecold_archive_real_storagecold_archive_object_countmultipart_part_countdelete_marker_countdeep_cold_archive_storagedeep_cold_archive_real_storagedeep_cold_archive_object_countr   r\   r\   r]   parse_get_bucket_stati  sR   
r  c                 C   s  t |}t|d| _t|d| _t|d| _t|d| _t|d| _t|d| _t	t|dt|d| _
tt|d	| _t|d
d | _t|dd | _t|dd | _t|dd | _t|dd | _t|dd | _t|dd | _|d}|d u r|d | _| S t|| _| S )NzBucket/NamezBucket/CreationDatezBucket/StorageClasszBucket/ExtranetEndpointzBucket/IntranetEndpointzBucket/LocationzBucket/Owner/DisplayNamezBucket/Owner/IDzBucket/AccessControlList/GrantzBucket/CommentzBucket/VersioningzBucket/DataRedundancyTypezBucket/AccessMonitorzBucket/TransferAccelerationzBucket/CrossRegionReplicationzBucket/ResourceGroupIdzBucket/ServerSideEncryptionRule)rv   r   r^   ri   creation_datestorage_classextranet_endpointintranet_endpointr   r   r   r   r   r`   commentversioning_statusdata_redundancy_typeaccess_monitortransfer_accelerationcross_region_replicationresource_group_idrU   bucket_encryption_rule_parse_bucket_encryption_info)r   r   rs   server_side_encryptionr\   r\   r]   parse_get_bucket_info  s,   


r  c                 C   s   t  }t| d|_|jdkrd |_d |_|S | d}|d u s$|jd u r(d |_nt|j|_| d}|d u s<|jd u rAd |_|S t|j|_|S )NSSEAlgorithmNoneKMSMasterKeyIDKMSDataEncryption)r   r^   sse_algorithmkms_master_keyidrU   rX   rN   kms_data_encryption)rl   rulekmsnodekms_data_encryption_noder\   r\   r]   r    s    


r  c                 C   sZ   t |}t|d| _t|d| _|dd urt|d| _|dd ur+t|d| _| S )NAllowEmptyRefererzRefererList/RefererAllowTruncateQueryStringzRefererBlacklist/Referer)	rv   r   rc   allow_empty_refererrp   referersrU   allow_truncate_query_stringblack_referersr   r\   r\   r]   parse_get_bucket_referer  s   
r&  c                 C   s"   t | d}t | d}t||}|S )Nr   Equals)r^   r   )include_header_noder   equalsinclude_headerr\   r\   r]   parse_condition_include_header  s   


r+  c                 C   st   |  dd urt| d}|  dd urt| d}g }|  dd ur2| dD ]}t|}|| q&t|||}|S )NKeyPrefixEqualsHttpErrorCodeReturnedEqualsIncludeHeader)rU   r^   rf   rn   r+  r   r   )condition_nodekey_prefix_equalshttp_err_code_return_equalsinclude_header_listr(  r*  	conditionr\   r\   r]   parse_routing_rule_condition  s   

r4  c           
      C   s   | d u rd S d }|  dd urt| d}t| d}t| d}g }| dD ]}t|d}t|d}t||}|| q%t||||}	|	S )NPassAllPassRemoveSetr   Value)rU   rc   rp   rn   r^   r    r   r   )
mirror_headers_nodepass_all	pass_listremove_listset_listset_noder   valuemirror_headers_setredirect_mirror_headersr\   r\   r]   parse_mirror_headers  s   





rC  c                 C   s  d }d }d }d }d }d }d }d }d }	d }
d }d }d }d }t | d}| dd ur-t| d}|ttfv rW| dd ur?t | d}| dd urKt | d}| dd urWt| d}|tttfv rw| dd urjt | d}| dd urvt | d}nS|tkr| dd urt | d}| d	d urt | d	}	| d
d urt | d
}
| dd urt| d}| dd urt| d}| dd urt| d}t| d}t	|||||||||	|
||||d}|S )NRedirectTypePassQueryStringProtocolHostNameHttpRedirectCodeReplaceKeyWithReplaceKeyPrefixWith	MirrorURLMirrorURLSlaveMirrorURLProbeMirrorPassQueryStringMirrorCheckMd5MirrorFollowRedirectMirrorHeaders)redirect_typeproto	host_namereplace_key_withreplace_key_prefix_withhttp_redirect_codepass_query_string
mirror_urlmirror_url_slavemirror_url_probemirror_pass_query_stringmirror_follow_redirectmirror_check_md5mirror_headers)
r^   rU   rc   r"   r$   rf   r#   r!   rC  r   )redirect_noderR  rX  rU  rV  rS  rT  rW  rY  rZ  r[  r\  r^  r]  r_  redirectr\   r\   r]   parse_routing_rule_redirect  sh   













rb  c           	      C   s   t |}t|dd | _t|dd | _|dd u r| S |d}|dD ]!}t|d}t|d}t	|d}t
|||}| j| q&| S )NzIndexDocument/SuffixzErrorDocument/KeyRoutingRulesr   
RuleNumberr   r   )rv   r   r`   
index_file
error_filerU   rn   rf   r4  rb  r   rulesr   )	r   r   rs   routing_rules_node	rule_noderule_numr3  ra  r  r\   r\   r]   parse_get_bucket_websiteK  s   


rk  c                 C   s&   t |}t|d| _t|d| _| S )NPlayUrls/UrlPublishUrls/Url)rv   r   r^   play_urlpublish_urlr   r\   r\   r]   parse_create_live_channel_  s   
rp  c                 C   sb   t |}t|d| _t|d| _t }t|d|_t|d|_t|d|_t|d|_	|| _
| S )NStatusDescriptionzTarget/TypezTarget/FragDurationzTarget/FragCountzTarget/PlaylistName)rv   r   r^   statusdescriptionr
   typefrag_duration
frag_countplaylist_nametarget)r   r   rs   ry  r\   r\   r]   parse_get_live_channelh  s   
rz  c                 C   s   t |}t|d| _t|d| _t|d| _t|d| _| jr&t|d| _	|
d}|D ]1}t }t|d|_t|d|_t|d	|_tt|d
|_t|d|_t|d|_| j| q-| S )Nr   MarkerMaxKeysr   r   LiveChannelr   rr  rq  r   rl  rm  )rv   r   r^   prefixmarkerrf   max_keysrc   r   r   rn   r   ri   rt  rs  rO   r   rn  ro  channelsr   )r   r   rs   r  channeltmpr\   r\   r]   parse_list_live_channely  s$   

r  c                 C   s@   t | d|_t | d|_t | d|_t | d|_t| d|_d S )NWidthHeight	FrameRate	BandwidthCodec)rf   widthheight
frame_rate	bandwidthr^   codec)
video_nodevideor\   r\   r]   parse_stat_video  s
   r  c                 C   s(   t | d|_t | d|_t| d|_d S )Nr  
SampleRater  )rf   r  sample_rater^   r  )
audio_nodeaudior\   r\   r]   parse_stat_audio  s   r  c                 C   s   t |}t|d| _|dd urt|d| _|dd ur'tt|d| _|d}|d}|d ur?t | _	t
|| j	 |d urMt | _t|| j | S )Nrq  
RemoteAddrConnectedTimeVideoAudio)rv   r   r^   rs  rU   remote_addrrO   connected_timer   r  r  r   r  r  )r   r   rs   r  r  r\   r\   r]   parse_live_channel_stat  s   


r  c                 C   s`   t |}|d}|D ]!}t }tt|d|_tt|d|_t|d|_| j	
| q| S )Nr   	StartTimeEndTimer  )rv   r   rn   r   rO   r^   
start_timeend_timer  recordsr   )r   r   rs   r  recordr  r\   r\   r]   parse_live_channel_history  s   

r  c                 C   s   | d u rd S t  }| dd urt| d|_|S | dd ur)tt| d|_|S | dd ur:tt| d|_|S | dd urGt| d|_	|S )NDaysDateCreatedBeforeDateExpiredObjectDeleteMarker)
r   rU   rf   daysrQ   r^   datecreated_before_daterc   expired_detete_marker)expiration_node
expirationr\   r\   r]   parse_lifecycle_expiration  s   r  c                 C   sR   | d u rd S t  }| dd urt| d|_|S | dd ur'tt| d|_|S )Nr  r  )r   rU   rf   r  rQ   r^   r  )abort_multipart_upload_nodeabort_multipart_uploadr\   r\   r]   &parse_lifecycle_abort_multipart_upload  s   r  c                 C   s   g }| D ]U}t |d}t|d}|dd urt|d|_n|dd ur-tt |d|_|dd ur:t|d|_|dd urGt|d|_	|dd urTt|d|_
|| q|S )Nr   )r  r  r  IsAccessTimeReturnToStdWhenVisitAllowSmallFile)r^   r   rU   rf   r  rQ   r  rc   is_access_timereturn_to_std_when_visitallow_small_filer   )storage_transition_nodesstorage_transitionsstorage_transition_noder  storage_transitionr\   r\   r]   #parse_lifecycle_storage_transitions  s$   

r  c                 C   sP   | d u s
t | dkrd S t }| D ]}t|d}t|d}||| qt|S )Nr   r   r9  )lenr   r^   addr   )lifecycle_tagging_nodestagging_ruletag_noder   r@  r\   r\   r]   parse_lifecycle_object_taggings  s   

r  c                 C   s"   | d u rd S t | d}t|}|S )NNoncurrentDays)rf   r&   )version_expiration_nodenoncurrent_daysr  r\   r\   r]   "parse_lifecycle_version_expiration  s
   
r  c                 C   s   g }| D ]=}t |d}t|d}t||}|dd ur"t|d|_|dd ur/t|d|_|dd ur<t|d|_|| q|S )Nr   r  r  r  r  )	r^   rf   r%   rU   rc   r  r  r  r   ) version_storage_transition_nodesversion_storage_transitionstransition_noder  non_crurrent_daysversion_storage_transitionr\   r\   r]   +parse_lifecycle_verison_storage_transitions  s   


r  c                 C   s   t |}t|}|dD ]W}t|d}t|d}t|d}t|d}t	|d}	t
|d}
t|d}tt|d	t|d
t|d|||||	|
tt|dd|d}| j| q| S )NRule
Expirationr   
TransitionTagr&   NoncurrentVersionTransitionFilterIDr   rq  	AtimeBaser   )	rs  r  r  r  taggingnoncurrent_version_expiration&noncurrent_version_sotrage_transitions
atime_basefilter)rv   r   rt   rn   r  rU   r  r  r  r  r  parse_lifecycle_filterr   r^   re   r`   rg  r   )r   r   rs   rh   ri  r  r  r  r  r  r  lifecycle_filterr  r\   r\   r]   parse_get_bucket_lifecycle!  s2   
r  c                 C   s   t |}|dD ]2}t }t|d|_t|d|_t|d|_t|d|_|	d}|d ur6t
|j|_| j| q
|	dd urJt|d| _| S )NCORSRuleAllowedOriginAllowedMethodAllowedHeaderExposeHeaderMaxAgeSecondsResponseVary)rv   r   rn   r	   rp   allowed_originsallowed_methodsallowed_headersexpose_headersrU   re   rX   max_age_secondsrg  r   rc   response_vary)r   r   rs   ri  r  max_age_noder\   r\   r]   parse_get_bucket_corsA  s   

r  c                 C   sN   t d}| D ]}t |d}t|dt|j t|dd|j qt|S )NCompleteMultipartUploadr   r   r   z"{0}")	rv   Elementr}   ry   strpart_numberformatetagrx   )r   rs   pr   r\   r\   r]   to_complete_upload_requestW  s   
r  c                 C   sH   t d}t|dt|  | D ]}t |d}t|d| qt|S )NDeleteQuietObjectr   )rv   r  ry   r  lowerr}   rx   )keysquiet	root_noder   object_noder\   r\   r]   to_batch_delete_objects_requesta  s   
r  c                 C   sh   t d}t|dt|  | j}|D ]}t |d}t|d|j |jdkr/t|d|j qt	|S )Nr  r  r  r   rT   r   )
rv   r  ry   r  r  object_version_listr}   r   r   rx   )objectVersionsr  r  objectVersionListverr  r\   r\   r]   'to_batch_delete_objects_version_requestl  s   

r  c                 C   s8   t d}t|d| j | jd urt|d| j t|S )NCreateBucketConfigurationr   DataRedundancyType)rv   r  ry   r  r  rx   )bucket_configrs   r\   r\   r]   to_put_bucket_config}  s
   

r  c                 C   s@   t d}| jrt |d}t|d| j t|d| j t|S )NBucketLoggingStatusLoggingEnabledTargetBucketTargetPrefix)rv   r  r   r}   ry   r   rx   )bucket_loggingrs   logging_noder\   r\   r]   to_put_bucket_logging  s   
r  c                 C   s   t d}t|dt| j  t |d}| jD ]}t|d| q| jd ur2t|dt| j  | j	rGt |d}| j	D ]}t|d| q>t
|S )NRefererConfigurationr   RefererListRefererr!  RefererBlacklist)rv   r  ry   r  r"  r  r}   r#  r$  r%  rx   )bucket_refererrs   	list_noderblack_referer_noder\   r\   r]   to_put_bucket_referer  s   



r  c                 C   s  t d}t |d}t|d| j t |d}t|d| j t| jdkr*t|S t |d}| jD ]}t |d}t|d	t	|j
 t |d
}|jjd urYt|d|jj |jjd urit|dt	|jj |jjD ]}t |d}	t|	d|j t|	d|j qm|jd urt |d}
t|
d|jj |jjd urt|
dt	|jj |jjttfv r|jjd urt|
d|jj |jjd urt|
d|jj |jjd urt|
dt	|jj |jjtttfv r|jjd urt|
d|jj |jjd urt|
d|jj q3|jjtkr|jjd urt|
d|jj |jjd ur)t|
d|jj |jjd ur8t|
d|jj |jj d urIt|
dt	|jj  |jj!d urZt|
dt	|jj! |jj"d urkt|
dt	|jj" |jj#d urt |
d}|jj#j$d urt|dt	|jj#j$ |jj#j%D ]	}t|d| q|jj#j&D ]	}t|d | q|jj#j'D ]}t |d!}t|d|j t|d"|j( qq3t|S )#NWebsiteConfigurationIndexDocumentSuffixErrorDocumentr   r   rc  r   rd  r   r,  r-  r.  r'  r   rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rP  rO  rQ  r5  r6  r7  r8  r9  ))rv   r  r}   ry   re  rf  r  rg  rx   r  rj  r3  r0  r1  r2  r   r)  ra  rR  rX  r"   r$   rS  rT  rW  r#   rU  rV  r!   rY  rZ  r[  r\  r]  r^  r_  r;  r<  r=  r>  r@  )bucket_websiters   
index_node
error_node
rules_noder  ri  r/  headerr(  r`  r:  
pass_paramremove_param	set_paramr?  r\   r\   r]   to_put_bucket_website  s   

r#  c                 C   s  t d}| jD ]}t |d}t|d|j t|d|j t|d|j |j}|rlt |d}|j	d ur@t|dt
|j	 n,|jd urOt|dt|j n|jd ur^t|d	t|j n|jd urlt|d
t
|j |j}|rt |d}|j	d urt|dt
|j	 n|jd urt|d	t|j |j}|r|D ]^}	t |d}
t|
dt
|	j |	jd urt|
dt
|	j  |	jd urt|
dt
|	j  |	jd urt|
dt
|	j  |	j	d urt|
dt
|	j	 q|	jd urt|
d	t|	j q|j}|r |jj}|jjD ]}t |d}t|d| t|d||  q|j}|d ur7t |d}t|dt
|j |j}|d ur|D ]N}t |d}t|dt
|j t|dt
|j |jd urlt|dt
|j  |jd ur}t|dt
|j  |jd urt|dt
|j  qA|jrt |d}|jjrt|dt
|jj |jjrt|dt
|jj |jjr|jjD ]*}t |d}t|d|j |j rt |d}t|d|j j! t|d|j j" qqt#|S )NLifecycleConfigurationr  r  r   rq  r  r  r  r  r  r   r  r   r  r  r  r  r   r9  r&   r  r  r  ObjectSizeGreaterThanObjectSizeLessThanNot)$rv   r  rg  r}   ry   idr~  rs  r  r  r  r  rP   r  r  r  r  r  r  r  r  r  r  tag_setr  r  r  r  r  object_size_greater_thanobject_size_less_than
filter_notrW   r   r@  rx   )bucket_lifecyclers   r  ri  r  r  r  r  r  r  r  r  r  r   r  r  r  r  %noncurrent_version_sotrage_transitionversion_transition_nodefilter_nodenot_argnot_noder\   r\   r]   to_put_bucket_lifecycle  s   
















r3  c                 C   s   t d}| jD ]2}t |d}t|d|j t|d|j t|d|j t|d|j |j	d ur:t
|dt|j	 q| jd urKt
|dt| j  t|S )	NCORSConfigurationr  r  r  r  r  r  r  )rv   r  rg  r}   r|   r  r  r  r  r  ry   r  r  r  rx   )bucket_corsrs   r  ri  r\   r\   r]   to_put_bucket_cors^  s   



r6  c                 C   s   t d}t|d| j t|d| j t|d}t|d| jj t|dt| jj	 t|dt| jj
 t|dt| jj t|S )	NLiveChannelConfigurationrr  rq  Targetr   FragDuration	FragCountPlaylistName)rv   r  ry   rt  rs  r~   ry  ru  r  rv  rw  rx  rx   )live_channelrs   target_noder\   r\   r]   to_create_live_channelp  s   

r>  c                 C   s$   |d urd|v rt | |S t| |S )N	Json_Type)to_select_json_objectto_select_csv_object)sqlselect_paramsr\   r\   r]   to_select_object~  s   

rD  c           
   	   C   s  t d}t|dtt|  t |d}t |d}t |d}t |d}t |d}|d u r7t|S |	 D ]$\}}	t
j|krLt|d|	 q;t
j|kr_t|t
jtt|	 q;t
j|krrt|t
jtt|	 q;t
j|krt|t
jtt|	 q;t
j|krt|t
jtt|	 q;t
j|krt|t
jtt|	 q;t
j|krt|t
jtt|	 q;t
j|krt|dt|	 q;t
j|krt|dt|	 q;t
j|krt|t
jt|	 q;t
j|krt|t
jt|	 q;t
j|kr
t|t
jt|	 q;t
j|krt|t
jt|	 q;t
j|kr*t|t
jt|	 q;t
j|kr:t|t
jt|	 q;t
j|krJt|t
jt|	 q;t
j|krZt|t
jt|	 q;td	| d
t|S )NSelectRequest
ExpressionInputSerializationOutputSerializationCSVOptionsFileHeaderInfoRange+The select_params contains unsupported key rT   ) rv   r  ry   base64	b64encoder  encoder}   rx   itemsrK   CsvHeaderInfoCommentCharacterRecordDelimiterOutputRecordDelimiterFieldDelimiterOutputFieldDelimiterQuoteCharacter
SplitRangerR   _make_split_range_string	LineRange_make_line_range_stringCompressionTypeKeepAllColumnsOutputRawDataEnablePayloadCrcOutputHeaderSkipPartialDataRecordMaxSkippedRecordsAllowedAllowQuotedRecordDelimiterrS   )
rB  rC  rs   	input_ser
output_sercsvout_csvoptionsr   r@  r\   r\   r]   rA    s\   











rA  c              	   C   s  t d}t|dtt|  t |d}t |d}t |d}t |d}t |d}|tj	 t
jk}t|d|tj	  | D ]\}	}
tj|	kr[|dkr[t|d	t|
 qDtj|	krn|dkrnt|d	t|
 qDtj|	kr{t|tj|
 qDtj|	krt|tjt|
 qDtj|	krt|tjt|
 qDtj|	krt|tjtt|
 qDtj|	krt|tjt|
 qDtj|	krt|tjt|
 qDtj|	krt|tjt|
 qD|	tj	krtd
|	 dqDt|S )NrE  rF  rG  rH  JSONrJ  r   FrL  rM  rT   )rv   r  ry   rN  rO  r  rP  r}   rK   r?  rJ   DOCUMENTrQ  rY  rR   rZ  r[  r\  r]  r_  r`  rU  rT  rb  rc  ParseJsonNumberAsStringrS   rx   )rB  rC  rs   re  rf  jsonout_jsonri  is_docr   r@  r\   r\   r]   r@    s@   








r@  c                 C   s<   | d urt j| v r| t j tjkrtddt| S t| S )Nz/Json_Type can only be 'LINES' for creating metarT   )rK   r?  rJ   LINESrS   to_get_select_json_object_metato_get_select_csv_object_meta)
meta_paramr\   r\   r]   to_get_select_object_meta  s
   
rt  c              	   C   s  t d}t |d}t |d}| d u rt|S |  D ]e\}}tj|kr4t|tjt	t
| qtj|krGt|tjt	t
| qtj|krZt|tjt	t
| qtj|krmt|tjt	t
| qtj|kr|t|tjt
| qtd| dt|S )NCsvMetaRequestrG  rI  z,The csv_meta_param contains unsupported key rT   )rv   r  r}   rx   rQ  rK   rT  ry   rN  rO  r  rP  rV  rX  r]  OverwriteIfExistsrS   )csv_meta_paramrs   re  rg  r   r@  r\   r\   r]   rr    s$   





rr  c              	   C   s   t d}t |d}t |d}t|d| tj  |  D ]2\}}tj|kr1t|tjt| qtj	|krDt|tj	t
t| qtj|krPtd| dqt|S )NJsonMetaRequestrG  rj  r   z-The json_meta_param contains unsupported key rT   )rv   r  r}   ry   rK   r?  rQ  rv  r  r]  rN  rO  rP  rS   rx   )json_meta_paramrs   re  rm  r   r@  r\   r\   r]   rq    s   



rq  c                 C   sX   t d}t |d}| jjD ]}t |d}t|d| t|d| jj|  qt|S )Nr   TagSetr  r   r9  )rv   r  r}   r)  r  ry   rx   )object_taggingrs   r)  itemtag_xmlr\   r\   r]   to_put_tagging  s   
r~  c           	      C   sl   t |}t|}|d}|d u r| S t }|dD ]}t|d|}t|d|}||| q|| _| S )Nrz  r  r   r9  )	rv   r   rt   rU   r   rn   rj   r  r)  )	r   r   rs   rh   tagset_nodetagging_rulesr  r   r@  r\   r\   r]   parse_get_tagging  s   

r  c                 C   sT   t d}t |d}t|d| j | jrt|d| j | jr&t|d| j t|S )Nr   "ApplyServerSideEncryptionByDefaultr  r  r  )rv   r  r}   ry   r  r  r  rx   )r  rs   
apply_noder\   r\   r]   to_put_bucket_encryption)  s   
r  c                 C   s   t |}|d}t|d| _|d}|d u s|jd u r"d | _nt|j| _|d}|d u s6|jd u r;d | _| S t|j| _| S )Nr  r  r  r  )	rv   r   rU   r^   r  rX   r  rN   r  )r   r   rs   r  r  r  r\   r\   r]   parse_get_bucket_encryption7  s   



r  c           	      C   s  t |}t|}t|d| _| jr t|d|| _t|d|| _t|d| _	t|d|| _
t|d|| _t|d|| _t|d| _t|d	|| _|d
D ]4}t }t|d||_t|d|_t|d|_tt|d|_t|d|j_t|d|j_| j| qM|dD ]V}t }t|d||_t|d|_t|d|_tt|d|_t|d|j_t|d|j_t|d|_t|d|_t|d|_t|d d|_!t"|dd |_#| j$| q|dD ]}| j%t|d| q| S )Nr   r   NextVersionIdMarkerr   r   	KeyMarkerVersionIdMarkerr|  	Delimiterr   r   r   IsLatestr   r   r   Versionr   r   r   r   r   r   r   )&rv   r   rt   rc   r   rj   r   next_versionid_markerr^   ri   r~  
key_markerversionid_markerrf   r  	delimiterrn   r   r   r   	is_latestrO   r   r   r(  display_namer   r   r   ru  r  r   r   r  r`   restore_infoversionscommon_prefix)	r   r   rs   rh   r   
deleteInfoversionversionInfor  r\   r\   r]   parse_list_object_versionsK  sL   
r  c                 C   $   t d}t|dt| j t|S )NVersioningConfigurationrq  )rv   r  ry   r  rs  rx   )bucket_version_configrs   r\   r\   r]   to_put_bucket_versioningy     
r  c                 C   s6   t |}|d}|d u rd | _| S t|d| _| S Nrq  )rv   r   rU   rs  r^   )r   r   rs   status_noder\   r\   r]   parse_get_bucket_versioning  s   

r  c                 C      t d}t|d|  t|S )NRequestPaymentConfigurationPayerrv   r  ry   rx   )payerrs   r\   r\   r]   to_put_bucket_request_payment  s   
r  c                 C   r   )Nr  )rv   r   r^   r  r   r\   r\   r]    parse_get_bucket_request_payment     
r  c                 C   s  t d}| jd urt|dt| j | jd ur!t|dt| j | jd ur/t|dt| j | jd ur=t|dt| j | jd urKt|dt| j | j	d urYt|dt| j	 | j
d urgt|dt| j
 | jd urut|d	t| j | jd urt|d
t| j t|S )NrI   TotalUploadBandwidthIntranetUploadBandwidthExtranetUploadBandwidthTotalDownloadBandwidthIntranetDownloadBandwidthExtranetDownloadBandwidthTotalQpsIntranetQpsExtranetQps)rv   r  total_upload_bwry   r  intranet_upload_bwextranet_upload_bwtotal_download_bwintranet_download_bwextranet_download_bw	total_qpsintranet_qpsextranet_qpsrx   )qos_infors   r\   r\   r]   to_put_qos_info  s(   









r  c                 C   s   t |}t| drt|d| _t|d| _t|d| _t|d| _t|d| _	t|d| _
t|d| _t|d	| _t|d
| _t|d| _| S )uk   解析UserQosInfo 或者BucketQosInfo

    :UserQosInfo包含成员region,其他成员同BucketQosInfo
    regionr   r  r  r  r  r  r  r  r  r  )rv   r   hasattrr^   r  rf   r  r  r  r  r  r  r  r  r  r   r\   r\   r]   parse_get_qos_info  s   

r  c                 C   r   )NStorageCapacity)rv   r   rf   storage_capacityr   r\   r\   r]   parse_get_bucket_user_qos  r  r  c                 C   r  )NBucketUserQosr  )rv   r  ry   r  r  rx   )user_qosrs   r\   r\   r]   to_put_bucket_user_qos  r  r  c                 C   s   t d}t|d| j t|d| j | jd urt|d| j | jd ur+t|d| j | jd ur7t|d| j | jd urGt|dt	| j
  | jd urWt|dt	| j
  t|S )	Nr'   Urlr  Host
ContentMD5CallbackIgnoreSameKeyCallbackWhenFailed)rv   r  ry   rr   object_namehostcontent_md5callbackignore_same_keyr  r  callback_when_failedrx   )task_configrs   r\   r\   r]   to_put_async_fetch_task  s   





r  c                 C   r   NTaskId)rv   r   r^   task_idr   r\   r\   r]   !parse_put_async_fetch_task_result  r  r  c                 C   sN   t | d}t | d}t | d}t | d}t | d}t| d}t||||||S )Nr  r  r  r  r  r  )r^   rc   r'   )task_info_noderr   r  r  r  r  r  r\   r\   r]   %_parse_async_fetch_task_configuration  s   





r  c                 C   sB   t |}t|d| _t|d| _t|d| _t|d| _| S )Nr  StateErrorMsgTaskInfo)	rv   r   r^   r  
task_state	error_msgr  rU   r  r   r\   r\   r]   !parse_get_async_fetch_task_result  s   
r  c                 C   s  t d}t|d| j | jd urt|dt| j | jd ur&t|d| j | jd urt |d}| jj	d ur?t|d| jj	 | jj
d urOt|dt| jj
 | jjd ur_t|dt| jj | jjd urot|d	t| jj | jjd urt|d
t| jj | jjd urt|d| jj | jd ur| jjd urt |d}t|d| jj | jd urt |d}| jD ]}t|d| q| jd urL| jjd urLt |d}t |d}| jj}|jd urt|dt|j |jd urt|d|j |jd urt|dd|j  |jd urt|d|j |j	d urt|d|j	 |jd ur;t |d}	t |	d}
t|
d|jj t|S |jd urLt |d}	t|	d t|S )Nr(   Id	IsEnabledIncludedObjectVersionsr  r   LastModifyBeginTimeStampLastModifyEndTimeStampLowerSizeBoundUpperSizeBoundr   Schedule	FrequencyOptionalFieldsFieldDestinationOSSBucketDestination	AccountIdRoleArnBucket
acs:oss:::Format
EncryptionzSSE-KMSKeyIdzSSE-OSS)rv   r  ry   inventory_id
is_enabledr  included_object_versionsinventory_filterr}   r~  last_modify_begin_time_stamplast_modify_end_time_stamplower_size_boundupper_size_boundr  inventory_schedule	frequencyoptional_fieldsinventory_destinationbucket_destination
account_idrole_arnbucketinventory_formatsse_kms_encryptionkey_idsse_oss_encryptionr~   rx   )inventory_configrs   r0  schedule_nodefields_nodefielddestin_nodebucket_destin_nodebucket_destinencryption_nodesse_kms_noder\   r\   r]   to_put_inventory_configuration  sd   








r  c              	   C   sP  | }t  }t|d|_t|d|_t|d|_|dd urd }d }d }d }d }d }|dd ur6t|d}|dd urCt|dd }|dd urPt|dd }|dd ur]t|dd }|d	d urjt|d	d }|d
d urwt|d
d }t||||||d|_	|dd urt
t|d|_t|d|_|dd ur&|d}	d }
d }d }d }d }d }d }|	dd urt|	d}
|	dd urt|	d}|	dd urt|	d}|dr|dd}|	dd urt|	d}|	dd urt|	d}|	d}|d urtt|d}n|	dd urt }t|
||||||d}t||_|S )Nr  r  r  r  zFilter/PrefixzFilter/LastModifyBeginTimeStampzFilter/LastModifyEndTimeStampzFilter/LowerSizeBoundzFilter/UpperSizeBoundzFilter/StorageClass)r~  r  r  r  r  r  zSchedule/FrequencyzOptionalFields/Fieldz Destination/OSSBucketDestinationr  r  r  r  rT   r  r   zEncryption/SSE-KMSr  zEncryption/SSE-OSS)r  r  r  r  r~  r  r  )r(   r^   r  rc   r  r  rU   r`   r)   r  r*   r  rp   r  
startswithreplacer-   r.   r,   r+   r  )elemrs   r   r~  r  r  r  r  r  bucket_distin_noder  r  r  r  r  r  origin_bucketr  r   r\   r\   r]   (get_Inventory_configuration_from_elementD  s~   










r  c                 C   sN   t |}t|}|j| _|j| _|j| _|j| _|j| _|j| _|j	| _	| S rd   )
rv   r   r  r  r  r  r  r  r  r  )r   r   rs   r  r\   r\   r]   (parse_get_bucket_inventory_configuration  s   
r  c                 C   s   t |}|dD ]}t|}| j| q
|dd ur$t|d| _|dd ur1t	|d| _
|dd ur>t|d| _| S )Nr(   ContinuationTokenr   r   )rv   r   rn   r  inventory_configurationsr   rU   r^   continuaiton_tokenrc   r   r   )r   r   rs   inventory_config_noder  r\   r\   r]   *parse_list_bucket_inventory_configurations  s   
r  c                 C   sX   t d}t|dt| j | jd ur(| j}t |d}|jd ur(t|d|j t|S )NRestoreRequestr  JobParametersTier)	rv   r  ry   r  r  job_parametersr}   tierrx   )restore_configrs   r!  job_parameters_noder\   r\   r]   to_put_restore_config  s   


r%  c                 C   s>   t |}t|d| _t|d| _t|d| _t|d| _d S )NWormIdr  RetentionPeriodInDaysr   )rv   r   r^   worm_idstaterf   retention_period_daysr  r   r\   r\   r]   parse_get_bucket_worm_result  
   
r+  c                 C   "   t d}t|dt|  t|S )NExtendWormConfigurationr'  rv   r  ry   r  rx   r*  rs   r\   r\   r]   to_put_extend_bucket_worm     
r1  c                 C   r-  )NInitiateWormConfigurationr'  r/  r0  r\   r\   r]   to_put_init_bucket_worm  r2  r4  c                 C   s^  t d}t |d}| jrt|d| j t |d}t|d| j t|d| j | jr3t|d| j | jdu r?t|d	d
 nt|d	d | j	rZt |d}| j	D ]}t|d| qQ| j
ryd}| j
D ]
}||7 }|d7 }qb|d d }t|d| | jrt|d| j | jrt |d}t|d| j | jdv rt |d}	t |	d}
t|
d| j t|S )NReplicationConfigurationr  r  r  r  r   TransferTypeFHistoricalObjectReplicationdisabledenabled	PrefixSetr   rT   ,ActionSyncRoleEncryptionConfigurationReplicaKmsKeyID)EnabledDisabledSourceSelectionCriteriaSseKmsEncryptedObjectsrq  )rv   r  r}   rule_idry   target_bucket_nametarget_bucket_locationtarget_transfer_type'is_enable_historical_object_replicationr   action_listsync_role_namereplica_kms_keyid sse_kms_encrypted_objects_statusrx   )replication_configrs   r  destinationprefix_list_noder~  actionsactionencryption_configcriteriasse_kms_encrypted_objectsr\   r\   r]   to_put_bucket_replication  sB   





rV  c                 C   r  )NReplicationRulesr  r  )rE  rs   r\   r\   r]   to_delete_bucket_replication  s   
rX  c                 C   s   t |}|dD ]}t }|dd urt|d|_|d}t|dd |_t|dd |_	t|dd |_
t|dd |_t|dd |_t|d	|_t|d
d |_t|dd |_t|dd |_t|ddkrjd|_nd|_|d}|d ur|t|d|_t|d}|d|_| j| q
d S )Nr  r  r  r  r   r6  CloudCloudLocationrq  r>  z'EncryptionConfiguration/ReplicaKmsKeyIDz5SourceSelectionCriteria/SseKmsEncryptedObjects/Statusr7  r9  TFr:  r   r=  r;  )rv   r   rn   r1   rU   r^   rE  r`   rF  rG  rH  target_cloudtarget_cloud_locationrs  rK  rL  rM  rI  rp   r   splitrJ  	rule_listr   )r   r   rs   ri  r  destination_nodeprefixes_noderQ  r\   r\   r]   #parse_get_bucket_replication_result  s2   



ra  c                 C   st   t |}t|d| _|dd ur6|d}|dD ]}t }t|dd |_t|dd |_	| j
| qd S d S )Nr   LocationTransferTypeConstraintr/   zTransferTypes/Type)rv   r   rp   location_listrU   rn   r/   r`   r   transfer_typelocation_transfer_type_listr   )r   r   rs   constraint_nodetransfer_type_nodelocation_transfer_typer\   r\   r]   ,parse_get_bucket_replication_location_result!  s   

ri  c           	      C   s   t |}|d}t }t|d|_|d}t|d|_t|d|_t|dd |_	t|d|_
t|dd	kr<d
|_nd|_|d}|d urNt|d|_t|d}|d|_t|dd }|d urht||_t|dd |_|| _d S )Nr  r  r  r  r   r6  rq  r7  r9  TFr:  r   r=  r;  zProgress/HistoricalObjectzProgress/NewObject)rv   r   rU   r0   r^   rE  rF  rG  r`   rH  rs  rI  rp   r   r]  rJ  floathistorical_object_progressnew_object_progressprogress)	r   r   rs   ri  rm  r_  r`  rQ  rk  r\   r\   r]   ,parse_get_bucket_replication_progress_result-  s,   






rn  c                 C   r-  )N!TransferAccelerationConfigurationrA  r/  r9  rs   r\   r\   r]   #to_put_bucket_transfer_accelerationO  r2  rq  c                 C      t |}t|d| _d S NrA  )rv   r   r^   r9  r   r\   r\   r]   -parse_get_bucket_transfer_acceleration_resultU     
rt  c                 C   s   t d}t |d}t|d|  |d urgt |d}|jd ur't|d|j |jd ur3t|d|j |jd ur?t|d|j |jd urKt|d|j |jd urYt|d	t	|j |j
d urgt|d
t	|j
 t|S )NBucketCnameConfigurationCnameDomainCertificateConfigurationCertIdCertificate
PrivateKeyPreviousCertIdForceDeleteCertificate)rv   r  r}   ry   cert_idcertificateprivate_keyprevious_cert_idforcer  delete_certificaterx   )domaincertrs   cnamer  r\   r\   r]   to_bucket_cname_configurationZ  s$   






r  c                 C   >   t |}t|d| _t|d| _t|d| _t|d| _d S Nr  rw  Token
ExpireTimerv   r   r^   r  r  tokenexpire_timer   r\   r\   r]   parse_create_bucket_cname_tokeno  r,  r  c                 C   r  r  r  r   r\   r\   r]   parse_get_bucket_cname_tokenw  r,  r  c                 C   s   t |}t|d| _t|d| _|dD ]g}t }t|dd |_t|dd |_	t|dd |_
t|dd |_|d}|d urwt }t|d	d |_t|d
d |_t|dd |_
t|dd |_t|dd |_t|dd |_t|dd |_||_| j| qd S )Nr  r   rw  rx  r   rq  IsPurgeCdnCacher{  r   rz  r   FingerprintValidStartDateValidEndDate)rv   r   r^   r  r   rn   r2   r`   r  r   rs  is_purge_cdn_cacherU   r3   ru  r  r  fingerprintvalid_start_datevalid_end_dater  r  r   )r   r   rs   r  r  r  r  r\   r\   r]   parse_list_bucket_cname  s,   

r  c                 C   s   t d}| jd urt|d| j t|d| j t|d| j | jd ur+t|d| j | jd ur7t|d| j | jrdt 	|d}| jD ] }t 	|d}|j
d urWt|d	|j
 |jd urct|d
|j qCt|S )N	MetaQuery	NextToken
MaxResultsQuerySortOrderAggregationsAggregationr  	Operation)rv   r  
next_tokenry   max_resultsquerysortorderaggregationsr}   r  	operationrx   )
meta_queryrs   aggregations_nodeaggregationaggregation_noder\   r\   r]   to_do_bucket_meta_query_request  s&   






r  c                 C   r  )Nr  Phase
CreateTime
UpdateTime)rv   r   r^   r)  phasecreate_timeupdate_timer   r\   r\   r]   "parse_get_bucket_meta_query_result  r,  r  c              	   C   s  t |}t|d| _|dD ]}t }t|d|_tt|dd|_	t|dd |_
t|dd |_t|dd |_t|d	d |_t|d
d |_t|dd |_t|dd |_t|dd |_tt|dd|_|dd ur|ddD ]}tt|dt|d}|j| qt|dd ur|ddD ]}tt|dt|d}|j| q| j| q|dD ]<}	t }t|	d|_t|	d|_tt|	dd|_|	dD ]}
tt|
dtt|
dd}|j | q| j!| qd S )Nr  z
Files/FileFilenamer   r   FileModifiedTimeFileCreateTimeFileAccessTimeOSSObjectTypeOSSStorageClass	ObjectACLr   OSSCRC64OSSTaggingCount
OSSTaggingr   r   r9  OSSUserMetaUserMetazAggregations/Aggregationr  r  zGroups/GroupCount)"rv   r   r^   r  rn   r4   	file_namere   r`   r   file_modified_timefile_create_timefile_access_timeoss_object_typeoss_storage_class
object_aclr  	oss_crc64oss_tagging_countrU   r6   oss_taggingr   r7   oss_user_metafilesr5   r  r  rj  r@  r8   groupsr  )r   r   rs   filer  r  tmp_taggingmetatmp_metar  group
tmp_groupsr\   r\   r]   !parse_do_bucket_meta_query_result  sD   
r  c                 C   s   | S rd   r\   r   r\   r\   r]   parse_dummy_result  s   r  c                 C   r  )NAccessMonitorConfigurationrq  r  )rs  rs   r\   r\   r]   to_put_bucket_access_monitor     
r  c                 C   s"   t |}tt|d}|| _d S r  )rv   r   r9   r^   r  )r   r   rs   r  r\   r\   r]   &parse_get_bucket_access_monitor_result  s   

r  c           	      C   s   t  }| d urW| dd urtt| dd|_| dd ur'tt| dd|_| d}|d urW|D ]$}t|dd }t|dd }t|dd }t||}t||}|j	
| q2|S )Nr%  r   r&  r'  r   zTag/Keyz	Tag/Value)r:   rU   re   r`   r*  r+  rn   r<   r;   r,  r   )	r0  r  	not_nodesr2  r~  r   r@  rW   r,  r\   r\   r]   r    s    


r  c                 C   r  )N BucketResourceGroupConfigurationr   r  )resourceGroupIdrs   r\   r\   r]   to_put_bucket_resource_group  r  r  c                 C   rr  )Nr   )rv   r   r^   r  r   r\   r\   r]   &parse_get_bucket_resource_group_result  ru  r  c                 C   r  )NStyleContentr  )contentrs   r\   r\   r]   to_put_bucket_style  r  r  c                 C   r  )Nr   r  r  LastModifyTime)rv   r   r^   ri   r  r  last_modify_timer   r\   r\   r]   parse_get_bucket_style_result  r,  r  c                 C   h   t |}|dD ]'}t }t|dd |_t|dd |_t|dd |_t|dd |_| j	
| q
d S )Nr  r   r  r  r  )rv   r   rn   r=   r`   ri   r  r  r  stylesr   )r   r   rs   styler  r\   r\   r]   parse_list_bucket_style     
r  c                 C   r  )Nr>   r   InternetEndpointInternalEndpointAccelerateEndpoint)rv   r   rn   r>   r`   r  internet_endpointinternal_endpointaccelerate_endpointregionsr   )r   r   rs   r  r  r\   r\   r]   parse_describe_regions  r  r  c                 C   s4   |rt t|}|d | _|d | _|d | _| S )NEventId	RequestIdr  )rm  loadsrM   event_idasync_request_idr  )r   r   	body_dictr\   r\   r]   parse_async_process_object*  s   


r  c                 C   s   t d}| r?| D ]5}|r>t |d}|jd urt|d|j |jd ur+t|d|j |jd u r7t|dd q	t|d|j q	t|S )NBucketCallbackPolicy
PolicyItem
PolicyNamer  CallbackVarrT   )rv   r  r}   policy_namery   r  callback_varrx   )callback_policyrs   policypolicy_noder\   r\   r]   $to_do_bucket_callback_policy_request2  s   



r  c                 C   sZ   t |}|dD ] }t }t|dd |_t|dd |_t|dd |_| j	| q
d S )Nr  r   r  r  )
rv   r   rn   r?   r`   r  r  r  callback_policiesr   )r   r   rs   r  r  r\   r\   r]   parse_callback_policy_resultC  s   
r	  c                 C   &   t d}t|dt|   t|S )NArchiveDirectReadConfigurationrA  rv   r  ry   r  r  rx   rp  r\   r\   r]   !to_put_bucket_archive_direct_readM     
r  c                 C   ,   t |}|dd urt|d| _d S d S rs  )rv   r   rU   rc   r9  r   r\   r\   r]   $parse_get_bucket_archive_direct_readR     
r  c                 C   sR   t d}t |d}t|dt| j  | jr%| jD ]}t|d| qt|S )NHttpsConfigurationTLSEnable
TLSVersion)	rv   r  r}   ry   r  tls_enabledr  tls_versionrx   )https_configrs   r  r  r\   r\   r]   !to_do_bucket_https_config_requestW  s   

r  c                 C   s4   t |}t|d| _|dd urt|d| _| S )Nz
TLS/EnablezTLS/TLSVersion)rv   r   rc   r  rU   rp   r  r   r\   r\   r]   parse_get_bucket_https_configd  s
   
r  c                 C   s   t |}t|dd | _d S r  )rv   r   r`   r  r   r\   r\   r]   .parse_create_data_redundancy_transition_resultn  s   
r  c                 C   s   | d u rd S t  }| dd urt| dd |_| dd ur%t| dd |_| dd ur3t| dd |_| dd urAt| dd |_| dd urOt| dd |_| dd ur]t| dd |_| dd urjt	| d|_
| dd urwt	| d|_|S 	Nr  r  rq  r  r  r  EstimatedRemainingTimeProcessPercentage)r@   rU   r`   r  r  transition_statusr  r  r  rf   estimated_remaining_timeprocess_percentage)r  
transitionr\   r\   r]    parse_data_redundancy_transitionr  s(   r#  c                 C   s   t |}|dd urt|dd | _|dd ur!t|dd | _|dd ur/t|dd | _|dd ur=t|dd | _|dd urKt|dd | _|dd urYt|dd | _	|dd urft
|d| _|dd urut
|d| _d S d S r  )rv   r   rU   r`   r  r  r  r  r  r  rf   r   r!  r   r\   r\   r]   +parse_get_bucket_data_redundancy_transition  s$   
r$  c                 C   s2   t |}|dD ]}t|}| j| q
d S )NBucketDataRedundancyTransition)rv   r   rn   r#  data_redundancy_transitionsr   r   r   rs   r"  r  r\   r\   r]   ,parse_list_bucket_data_redundancy_transition  s
   
r(  c                 C   sf   t |}|dd urt|d| _|dd urt|d| _|dD ]}t|}| j	
| q$d S )Nr   r   r%  )rv   r   rU   rc   r   r^   r   rn   r#  r&  r   r'  r\   r\   r]   *parse_list_user_data_redundancy_transition  s   
r)  c                 C   sh   t d}| jd urt|d| j | jd urt|d| j | jd ur0t |d}t|d| jj t|S )NCreateAccessPointConfigurationAccessPointNameNetworkOriginVpcConfigurationVpcId)	rv   r  access_point_namery   network_originvpcr}   vpc_idrx   )accessPointrs   vpc_noder\   r\   r]   !to_do_create_access_point_request  s   



r5  c                 C   s*   t |}t|dd | _t|dd | _d S )NAccessPointArnAlias)rv   r   r`   access_point_arnaliasr   r\   r\   r]    parse_create_access_point_result  s   
r:  c           	      C   s$  t |}t|dd | _t|dd | _t|dd | _t|dd | _|d}|d ur7t }t|dd |_	|| _
t|dd | _t|dd | _t|d	d | _t|d
d | _|d}|d urpt }t|dd |_t|dd |_|| _|d}|d urt }|dd urt|d|_|| _d S d S d S )Nr+  r  r  r,  r-  r.  r6  r   r7  rq  	EndpointsPublicEndpointr  rE   BlockPublicAccess)rv   r   r`   r/  r  r  r0  rU   rB   r2  r1  r8  r  r9  access_point_statusrC   public_endpointr  	endpointsrE   rc   block_public_access!public_access_block_configuration)	r   r   rs   r4  r1  endpoint_nodeendpoint
block_nodeblockr\   r\   r]   parse_get_access_point_result  s8   




rG  c                 C   s   t |}t|dd | _t|dd | _t|d| _t|d| _| jd ur+t|dd | _	|
d}|D ]?}t }t|d|_t|d|_t|d	|_t|d
|_t|d|_|d}|d urkt }t|dd |_||_| j| q2| S )Nr  r{  r|  r   r   zAccessPoints/AccessPointr  r+  r7  rq  r,  r-  r.  )rv   r   r`   r  r  rf   r  rc   r   r   rn   rD   r^   r  r/  r9  rs  r0  rU   rB   r2  r1  access_pointsr   )r   r   rs   rH  access_pointr  r4  r1  r\   r\   r]   parse_list_access_point_result  s,   



rJ  c                 C   r-  )NrE   r=  r/  )rA  rs   r\   r\   r]   "to_put_public_access_block_request 	  r2  rK  c                 C   r  )Nr=  )rv   r   rU   rc   rA  r   r\   r\   r]   $parse_get_public_access_block_result	  r  rL  c                 C   s   | d u rd S t  }| dd urt| d|_| dd ur#t| d|_| dd ur0t| d|_| dd ur=t| d|_| dd urJt| d|_| dd urWt| d|_| dd urdt| d|_	| dd urqt| d|_
| d	d ur~t| d	|_|S )
Nr  r  r  r  r  r  r  r  r  )rI   rU   rf   r  r  r  r  r  r  r  r  r  )qos_info_nodeqosr\   r\   r]   parse_qos_configuration	  s,   rO  c                 C   r
  )NrI   rA  r  rp  r\   r\   r]    to_put_bucket_requester_qos_info'	  r  rP  c                 C   s,   t |}t|dd | _t|d| _| S )N	RequesterrI   )rv   r   r`   	requesterrO  rU   qos_configurationr   r\   r\   r]   parse_get_requester_qos_info-	  s   
rT  c                 C   sV   t |}t|dd | _t|dd | _t|dd | _t|dd | _t|d| _	| S )Nr   r   r   r  rI   )
rv   r   r`   r  ri   r   r  rO  rU   rS  r   r\   r\   r]   parse_get_resource_pool_info5	  s   
rU  c                 C   s   t |}t|dd | _t|dd | _t|dd | _t|dd | _t|d| _|	dD ]}t
 }t|dd |_t|dd |_| j| q,| S )	Nr   r   r  r   r   ResourcePoolr   r  )rv   r   r`   r  r   continuation_tokenr   rc   r   rn   rF   ri   r  resource_poolr   )r   r   rs   resourcer  r\   r\   r]   parse_list_resource_poolsA	  s   
rZ  c                 C   s   t |}t|dd | _t|dd | _t|dd | _t|d| _|dD ]}t	 }t|dd |_
t|dd |_| j| q%| S )NrV  r  r   r   ResourcePoolBucketr   JoinTime)rv   r   r`   rX  rW  r   rc   r   rn   rG   ri   	join_timeresource_pool_bucketsr   )r   r   rs   r  r  r\   r\   r]    parse_list_resource_pool_bucketsS	  s   
r_  c                 C      t |}t|dd | _t|dd | _t|dd | _t|d| _|dD ]}t	 }t|dd |_
t|d|_| j| q%| S )NrV  r  r   r   rH   rQ  rI   )rv   r   r`   rX  rW  r   rc   r   rn   rH   rR  rO  rU   rS  requester_qos_infor   r   r   rs   r  r  r\   r\   r]   ,parse_list_resource_pool_requester_qos_infose	  s   
rc  c                 C   r`  )Nr  r  r   r   rH   rQ  rI   )rv   r   r`   r  rW  r   rc   r   rn   rH   rR  rO  rU   rS  ra  r   rb  r\   r\   r]   %parse_list_bucket_requester_qos_infosw	  s   
rd  rd   )__doc__loggingxml.etree.ElementTreeetreerv   rm  modelsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rC  rJ   rK   compatrL   rM   rN   rR   rO   rP   rQ   rT   rN  
exceptionsrS   	getLogger__name__loggerr^   r`   rc   rf   rj   rp   rt   rx   r|   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r&  r+  r4  rC  rb  rk  rp  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r3  r6  r>  rD  rA  r@  rt  rr  rq  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r+  r1  r4  rV  rX  ra  ri  rn  rq  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r#  r$  r(  r)  r5  r:  rG  rJ  rK  rL  rO  rP  rT  rU  rZ  r_  rc  rd  r\   r\   r\   r]   <module>   s,  * I



.G		 
Y]4$	.

@J-""&

