
    rg                         d dl Z d dlZd dlZ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	m
Z
 d dlmZmZmZ d dlmZmZ d dlmZ ddZddZd Zd	 Zd
 Zd Zd ZdededefdZdededefdZdedefdZd Z ddZ!d Z"y)    N)BotoCoreErrorClientError)FastMailMessageSchemaConnectionConfig)HTTPExceptionstatus)JSONResponsec                     t         j                  j                  |       rLt        | d      5 }t	        j
                  |      }|j                         D cg c]  }|d   	 c}cd d d        S g S c c}w # 1 sw Y   g S xY w)Nrpdf_name)ospathexistsopenjsonloadvalues)	json_pathfile	pdf_uuidsdetailss       ./var/www/html/answerous/dependencies/helper.pyget_available_pdfsr      st    	ww~~i )S! 	KTiioI7@7G7G7IJGGJ'J	K 	K I K	K Is   (A3A. A3.A33A=c                 v    t        |d      5 }t        j                  | |d       d d d        y # 1 sw Y   y xY w)Nw   )indent)r   r   dump)r   r   r   s      r   save_pdf_uuidsr       s3    	i	 -		)T!,- - -s   /8c                      dj                  t        j                  t        j                  t        j
                  z   d            S )N    )k)joinrandomchoicesstringascii_uppercasedigits     r   generate_random_textr-      s+    776>>&"8"86=="HANOOr,   c                 4    t        j                  dd|       }|S )Nz[^a-zA-Z0-9]_)resub)input_stringsanitized_strings     r   replace_special_charactersr4      s    vvosLAr,   c                     t        | d      5 }t        j                  |j                               j	                  d      cd d d        S # 1 sw Y   y xY w)Nrbutf-8)r   base64	b64encodereaddecode)
image_path
image_files     r   encode_imager>   #   sG    	j$	 C:
 1299'BC C Cs   2A		Ac                 T    | j                  dg       D cg c]  }|d   	 }}|S c c}w )Nerrorsmessage)get)responseerrormessagess      r   get_error_messagerF   '   s0    .6ll8R.HIUi IHIO Js   %c                 >    t        |       |k  st        |       |kD  ryy)NTF)len)text
min_length
max_lengths      r   validate_string_lengthrL   +   s    
4y:TZ!7r,   	recipientsubjectbodyc           
        K   t        t        j                  d      t        j                  d      t        j                  d      dt        j                  d      ddd      }t        || g|d	
      }t	        |      }	 |j                  |       d {    y 7 # t        $ r}t        dt        |            d }~ww xY ww)NSES_ACCESS_KEY_IDSES_SECRET_ACCESS_KEYSES_SENDER_EMAILi  SES_AWS_HOSTFT)MAIL_USERNAMEMAIL_PASSWORD	MAIL_FROM	MAIL_PORTMAIL_SERVERMAIL_STARTTLSMAIL_SSL_TLSUSE_CREDENTIALShtml)rN   
recipientsrO   subtype  status_codedetail)	r   r   getenvr   r   send_message	Exceptionr   str)rM   rN   rO   confrA   fmes          r   
send_emailrk   1   s     ii 34ii 78))./IIn-	D ;	G 
$B<oog&&& <CF;;<s<   A;C>B BB CB 	B>#B99B>>Cc                 |   t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }	 t        j                  d|||      }|j	                  |d| gid|id	d|iid
      }|S # t
        t        f$ r}	t        dt        |	            d }	~	ww xY w)NSES_AWS_REGIONrQ   rR   rS   ses)region_nameaws_access_key_idaws_secret_access_keyToAddressesDataText)SubjectBody)SourceDestinationMessager`   ra   )	r   rd   boto3clientrk   r   r   r   rg   )
rM   rN   rO   
AWS_REGIONAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYrS   
ses_clientrC   rD   s
             r   send_email_sesr   K   s    +,J		"56II&=>yy!34@\\"/"7	

 ((#	{
 G 		 ) 
  ;' @CJ??@s   :B B; B66B;	directoryreturnc                     g }t        j                  |       D ]  \  }}}|D ]  }|j                  d      s|j                  d      s&t        t         j                  j                  ||      d      5 }|j                         }t        j                  |      d   }|sd}	 |j                  |      }	|j                  ||	d       d d d          |S # t        $ r |j                  |d      }	Y @w xY w# 1 sw Y   xY w)	Nz.htmlz.txtr6   encodingr7   replace)r@   )idrI   )r   walkendswithr   r   r%   r:   chardetdetectr;   UnicodeDecodeErrorappend)
r   content_datarootr/   filesr   fraw_datadetected_encodingrI   s
             r   parse_scorm_contentr   n   s	   L''), Da 	DD}}W%v)>"'',,tT2D9 DQ vvxH(/x(@(L%,,3)T'/@A !''tT(BCD D	DD 	 . T'/@STD Ds0   1-C4C0C4C1	.C40C1	1C44C=c                 L    t        j                  dd|       j                         S )Nz\s+ )r0   r1   strip)r2   s    r   normalize_spacesr      s    66&#|,2244r,   c                 F    |st         j                  }t        ||| d      S )N)r	   rA   rb   content)r	   HTTP_400_BAD_REQUESTr
   )rA   rb   s     r   errorResponser      s+    11!
 r,   c                 \    t        t        j                  t        j                  | |d      S )N)r	   rA   datar   )r
   r	   HTTP_200_OK)rA   r   s     r   successReponser      s,    &&((
	 r,   )zpdf_uuids.json)i  )#r   r   r&   r(   r0   r8   rz   r   botocore.exceptionsr   r   fastapi_mailr   r   r   fastapir   r	   fastapi.responsesr
   r   r    r-   r4   r>   rF   rL   rg   rk   r   listr   r   r   r   r+   r,   r   <module>r      s     	   	    : B B ) *-P
C< <c < <4@c @C @s @F3 4 &5
r,   