
    h                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ  ej                  ej                          ej                  d      Z e j"                  d      Z e j"                  d	      Z e j"                  d
      Z e j"                  dd      Z e j"                  d      Z e j"                  dd      Zg Zesej3                  d       esej3                  d	       esej3                  d
       esej3                  d       er eddj7                  e              eeddddddddd      Z	  ej:                  deeeee      Zej?                  d       de#d e#fd!Z$d4d#e#d$e%dz  d%e#d e#fd&Z&d'dd(d)e'd*e#d+e#d,e#dz  d e#dz  f
d-Z(d.d"d/d)e'd+e#d%e#fd0Z)d.d"d/d)e'd$e%d+e#d%e#fd1Z*d2e+d*e#fd3Z,y# e $ r3 ejC                  d       ejC                   ejD                                 w xY w)5    N)datetime)Config)BotoCoreErrorClientError)urlparse)level
ovh_uploadACCESS_KEY_IDSECRET_ACCESS_KEYSTORAGE_BUCKET_NAMEOVH_ENDPOINTzhttps://s3.waw.io.cloud.ovh.netOVH_PUBLIC_URLOVH_CLOUD_REGION_NAMEwawzMissing environment variables: z, s3v4   standard)max_attemptsmode   pathF)addressing_stylepayload_signing_enabled)region_namesignature_versionretriesconnect_timeoutread_timeouts3r   )aws_access_key_idaws_secret_access_keyendpoint_urlr   configz'OVH S3 client initialized successfully.zFailed to initialize S3 client:keyreturnc                    t         r)t         j                  d       d| j                  d       S t        j	                  dd      j	                  dd      j                  d      }dt         d| d| j                  d       S )N/zhttps:// zhttp://.)r   rstriplstripr   replacestripr   )r$   hosts     ,/var/www/extractly/cloud_storage/services.py_public_url_forr0   ;   sy     '',-Qszz#.?@@
B/77	2FLLSQD)*!D63::c?2CDD    .webpbase_folderindexextc                 &   | xs dj                  d      } t        j                         }|5|  d|j                   d|j                  dd|j
                  dd| d| | S |  d|j                   d|j                  dd|j
                  dd| | 
S )Nr(   r'   02d)r-   r   todayyearmonthday)r3   	object_idr4   r5   r8   s        r/   generate_file_pathr=   B   s    $"++C0KNNEa

|1U[[,=QuyyoQykYZ[`Zabeafgg]!EJJ<qS(9599S/9+VYUZ[[r1   zapplication/octet-streamcontent_typecache_control	file_data	file_namer?   r@   c                   | st         j                  d|        y 	 t         j                  d| dt        |        d       |t        |       dd}|r||d<   t	        j
                  dt        || d| t        |      }t         j                  d	|        |S # t        $ r? t         j                  d
       t         j                  t        j                                Y y t        $ r? t         j                  d       t         j                  t        j                                Y y t        $ r? t         j                  d       t         j                  t        j                                Y y w xY w)NzNo data to upload for file: zUpload to OVH:  ( bytes)public-read)ContentTypeContentLengthACLCacheControl)BucketKeyBodyUpload completed: OVH error (ClientError):zBoto error (BotoCoreError):z&Unexpected error during upload to OVH: )loggerwarninginfolen
ovh_client
put_objectr   r0   r   error	traceback
format_excr   	Exception)rA   rB   r?   r@   extraurls         r/   upload_to_ovhr]   J   s=   5i[ABoi[3y>2B'JK' ^ 

 $1E.! 	
&	
 		
 i((./
 /0Y))+, 23Y))+, =>Y))+,s!   A<B AE.!AE.'AE.-E.z
image/webp)r?   r5   c                <    t        d||      }t        | ||d      S )Navatars)r5   #public, max-age=31536000, immutabler>   r=   r]   )rA   user_idr?   r5   r$   s        r/   upload_avatar_to_ovhrc   q   s"    
YS
9CClRwxxr1   c                >    t        d|||      }t        | ||d      S )Nadvertisements)r4   r5   r`   r>   ra   )rA   advertisement_idr4   r?   r5   r$   s         r/   !upload_advertisement_image_to_ovhrg   v   s'    
-/?uRU
VCClRwxxr1   	json_datac           	      d   t        j                  | ddt              j                  d      }	 t        j                  d| dt        |       d       t        j                  t        ||dt        |      d	d
       t        |      }t        j                  d|        |S # t        $ r? t        j                  d       t        j                  t        j                                Y y t        $ r? t        j                  d       t        j                  t        j                                Y y w xY w)NF   )ensure_asciiindentdefaultzutf-8zUpload JSON to OVH: rD   rE   zapplication/json; charset=utf-8rF   zno-cache, max-age=0)rK   rL   rM   rG   rH   rI   rJ   rN   rO   z+Unexpected error during JSON upload to OVH:)jsondumpsstrencoderQ   rS   rT   rU   rV   r   r0   r   rW   rX   rY   rZ   )rh   r<   rB   payloadr\   s        r/   upload_html_json_to_ovhrs   |   s    jjq#NUUV]^G*9+RG~WMN&9g,. 	 	
 i((./
 /0Y))+, BCY))+,s   A2B! !AD/(AD/.D/)Nr2   )-osboto3loggingrn   rX   r   botocore.configr   botocore.exceptionsr   r   urllib.parser   basicConfigINFO	getLoggerrQ   getenvr
   r   r   r   r   REGIONmissingappendEnvironmentErrorjoinr#   clientrU   rS   rZ   rW   rY   rp   r0   intr=   bytesr]   rc   rg   dictrs   rP   r1   r/   <module>r      s   	      " : !   ',, '			<	(  bii0bii 34 bii 56 bii0QRbii 01bii 7?
GNN?;GNN+>?GNN+@AGNN+BC

<TYYw=O<PQ
RR 

3"uE

'/!J KK9:E E E\C \3: \SV \eh \ Lf.2$U $s $S $!$t$7:Tz$N LXdk yE yS y^a y >JV]y yQT y7:yPSyt 3 O  

LL23
LL%%%'(	
s   )G 8H