
    	]jA                         d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZ ddlmZ ddlmZ  ej$                  e      Z G d	 d
      Z G d dee      Z G d dee      Zy)zThis file and its contents are licensed under the Apache License 2.0. Please see the included NOTICE for copyright information and LICENSE for a copy of the license.
    N)ClientErrorParamValidationError)validate_bucket_name)S3ExportStorageS3ImportStorage)ExportStorageSerializerImportStorageSerializer)serializers)ValidationErrorc                   6     e Zd ZddgZ fdZd Z fdZ xZS )S3StorageSerializerMixinaws_access_key_idaws_secret_access_keyc                 j    t         |   |      }| j                  D ]  }|j                  |        |S )N)superto_representationsecure_fieldspop)selfinstanceresultattr	__class__s       Q/root/env/lib/python3.12/site-packages/label_studio/io_storages/s3/serializers.pyr   z*S3StorageSerializerMixin.to_representation   s8    *84&& 	DJJt	    c                 ~    |s|S 	 t        d|i       |S # t        $ r}t        |j                  d         |d }~ww xY w)NBucketreport)r   r   r   kwargs)r   valueexcs      r   validate_bucketz(S3StorageSerializerMixin.validate_bucket   sN    L	A (E!23  $ 	A!#**X"67S@	As    	<7<c           	      d   t         |   |      }|j                  dd       s|S | j                  }|r&|j	                         D ]  \  }}t        |||        nd| j                  v rp| j                  j                  j                  j                  | j                  d         }| j                  D ]$  }|j                  |      xs t        ||      ||<   &  | j                  j                  di |}	 |j                          |S # t        $ r& t        dj                  |j                               t"        $ r}|j$                  j                  d      j                  d      dv s-|j$                  j                  d	      j                  d
      dk(  r%t        dj                  |j                               |j$                  j                  d      j                  d      dv s-|j$                  j                  d	      j                  d
      dk(  r%t        dj                  |j                               Y d }~|S d }~wt&        $ r*}t(        j+                  d| d       t        d      d }~wt,        $ r3 t        |j.                   d|j                    d|j0                   d      w xY w)Nbucketid)r%   z&Wrong credentials for S3 {bucket_name})bucket_nameErrorCode)SignatureDoesNotMatch403ResponseMetadataHTTPStatusCodei  zACannot connect to S3 {bucket_name} with specified AWS credentials)NoSuchBucket404i  z&Cannot find bucket {bucket_name} in S3z$It seems access keys are incorrect: T)exc_infoz"It seems access keys are incorrectz:///z not found. )r   validategetr   itemssetattrinitial_dataMetamodelobjectsr   getattrvalidate_connectionr   r   formatr$   r   response	TypeErrorloggerinfoKeyError
url_schemeprefix)	r   datastoragekeyr    storage_objectr   er   s	           r   r2   z!S3StorageSerializerMixin.validate"   s|   w%xx$'K--"jjl -
Ue,- t(((!%!8!8!<!<@Q@QRV@W!<!X .. QD!%$!P7>43PDJQ%diioo--G	j''). - $ 	o!"J"Q"Q^e^l^l"Q"mnn 	s

w'++F37WW::>>"4599:JKsR%W^^$+NN _   

w'++F37NN::>>"4599:JKsR%&N&U&Ubibpbp&U&qrr S   	HKK>qcBTKR!"FGG 	j!W%7%7$8GNN;K1W^^L\\g"hii	js%   4D 7J/=C<H??J/%I00?J/)__name__
__module____qualname__r   r   r"   r2   __classcell__)r   s   @r   r   r      s"    (*ABM' 'r   r   c                       e Zd Z ej                  ej                  j                  ej                  j                  e	                  Z
 ej                  dd      Z G d d      Zy)S3ImportStorageSerializerdefaultFT)requiredrP   c                       e Zd ZeZdZy)S3ImportStorageSerializer.Meta__all__N)rI   rJ   rK   r   r8   fieldsr1   r   r   r7   rS   P       r   r7   N)rI   rJ   rK   r
   ReadOnlyFieldospathbasenamedirname__file__typeBooleanFieldpresignr7   r1   r   r   rN   rN   L   sN    $;$$RWW-=-=bggooh>W-XYD&k&&tDG r   rN   c                       e Zd Z ej                  ej                  j                  ej                  j                  e	                  Z
 G d d      Zy)S3ExportStorageSerializerrO   c                       e Zd ZeZdZy)S3ExportStorageSerializer.MetarT   N)rI   rJ   rK   r   r8   rU   r1   r   r   r7   rc   X   rV   r   r7   N)rI   rJ   rK   r
   rW   rX   rY   rZ   r[   r\   r]   r7   r1   r   r   ra   ra   U   s:    $;$$RWW-=-=bggooh>W-XYD r   ra   )__doc__loggingrX   botocore.exceptionsr   r   botocore.handlersr   io_storages.s3.modelsr   r   io_storages.serializersr   r	   rest_frameworkr
   rest_framework.exceptionsr   	getLoggerrI   r?   r   rN   ra   r1   r   r   <module>rm      s_     	 A 2 B T & 5			8	$9 9x 8:Q  8:Q r   