
                             S r SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  SSKJ
r
  S	 rS
 rS r " S S\	R                  5      r " S S\	R                   5      rg)z$S3 API-specific resource subclasses.    )absolute_import)division)unicode_literalsN)errors)resource_reference)resource_utilc                    [        U [        5      (       a  U  Vs/ s H  n[        U5      PM     sn$ [        U [        5      (       d  [        R
                  " U 5      $ [        R                  " [        U R                  5       5      5      nUR                  5        H  u  p4[        U[        5      (       a  [        U5      X#'   M)  [        U[        5      (       a*  U Vs/ s H  n[        U5      PM     nnU(       a  XRU'   Mf  Mh  U(       d  [        R                  " U5      (       d  M  [        R
                  " U5      X#'   M     U$ s  snf s  snf )zSee _get_json_dump docstring.)
isinstancelist_json_dump_recursion_helperdictr   convert_to_json_parsable_typecollectionsOrderedDictsorteditems$should_preserve_falsy_metadata_value)metadataitemformatted_dictkeyvalueformatted_lists         Ilib/googlecloudsdk/command_lib/storage/resources/s3_resource_reference.pyr   r      s   $:BC($'-(CC	Hd	#	#66x@@ **6(..2B+CD."((*jc%7>n	E4	 	 FKLed3D9enL	,s 
 
-DDUKK)GGNn + 
) D Ms   EE	c           
          [         R                  " [        R                  " SU R                  R
                  4SU R                  4S[        U R                  5      4/5      5      $ )zFormats S3 resource metadata as JSON.

Args:
  resource (S3BucketResource|S3ObjectResource): Resource object.

Returns:
  Formatted JSON string.
urltyper   )	r   configured_json_dumpsr   r   storage_url
url_stringTYPE_STRINGr   r   )resources    r   _get_json_dumpr#   6   s`     
	,	,(&&11
28''
(283D3DE
F 	

 
    c                 p    [        U [        R                  5      (       a  U $ [        R                  " U 5      $ )z4Returns error if value is error or existence string.)r
   r   XmlApiErrorr   get_exists_string)r   s    r   _get_error_or_exists_stringr(   G   s+    v))**L**511r$   c                       \ rS rSrSrS rSrg)S3BucketResourceO   ,API-specific subclass for handling metadata.c                     [        U 5      $ Nr#   selfs    r   get_json_dumpS3BucketResource.get_json_dumpR       $r$    N)__name__
__module____qualname____firstlineno____doc__r2   __static_attributes__r5   r$   r   r*   r*   O   s
    4 r$   r*   c                      ^  \ rS rSrSrSSSSSSS\R                  SSSSSSSSSSSSSSSSSS4U 4S jjrS rU 4S jr	Sr
U =r$ )S3ObjectResourceV   r,   Nc                 j   > [         [        U ]  UUUUUUUUU	U
UUUUUUUUUUUUUUUU5        Xl        g)zInitializes S3ObjectResource.N)superr=   __init__tags)r1   storage_url_objectaclcache_controlcomponent_countcontent_dispositioncontent_encodingcontent_languagecontent_typecrc32c_hashcreation_timerB   custom_fieldscustom_timedecryption_key_hash_sha256encryption_algorithmetagevent_based_holdkms_keymd5_hashr   metagenerationnoncurrent_timeretention_expirationsizestorage_classtemporary_holdupdate_time	__class__s                               r   rA   S3ObjectResource.__init__Z   sk    B 

D*"58 Ir$   c                     [        U 5      $ r.   r/   r0   s    r   r2   S3ObjectResource.get_json_dump   r4   r$   c                    > [        XR                  5      (       d  [        $ [        [        U ]  U5      =(       a    U R                  UR                  :H  $ r.   )r
   r\   NotImplementedr@   r=   __eq__rB   )r1   otherr\   s     r   rb   S3ObjectResource.__eq__   sB    e^^,,,U3 	$II#r$   )rB   )r6   r7   r8   r9   r:   r   NOT_SUPPORTED_DO_NOT_DISPLAYrA   r2   rb   r;   __classcell__)r\   s   @r   r=   r=   V   ss    4  %AA!%?=B  r$   r=   )r:   
__future__r   r   r   r   googlecloudsdk.api_lib.storager   ,googlecloudsdk.command_lib.storage.resourcesr   r   r   r#   r(   BucketResourcer*   ObjectResourcer=   r5   r$   r   <module>rl      sV    + &  '  1 K F4
"2 )88  N)88 Nr$   