o
    g                     @   s  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dZd'd	d
Zdd Zdd Zdd Zdd Zdd ZdededefddZdededefddZdedefddZd d! Z d(d#d$Z!d%d& Z"dS ))    N)BotoCoreErrorClientError)FastMailMessageSchemaConnectionConfig)HTTPExceptionstatus)JSONResponsepdf_uuids.jsonc                 C   sV   t j| r)t| d}t|}dd | D W  d    S 1 s$w   Y  g S )Nrc                 S      g | ]}|d  qS )pdf_name ).0detailsr   r   2/var/www/html/answerous_api/dependencies/helper.py
<listcomp>       z&get_available_pdfs.<locals>.<listcomp>)ospathexistsopenjsonloadvalues)	json_pathfile	pdf_uuidsr   r   r   get_available_pdfs   s   
 r   c                 C   s@   t |d}tj| |dd W d    d S 1 sw   Y  d S )Nw   )indent)r   r   dump)r   r   r   r   r   r   save_pdf_uuids   s   "r#   c                   C   s   d tjtjtj ddS )N    )k)joinrandomchoicesstringascii_uppercasedigitsr   r   r   r   generate_random_text   s   r-   c                 C   s   t dd| }|S )Nz[^a-zA-Z0-9]_)resub)input_stringsanitized_stringr   r   r   replace_special_characters   s   r3   c                 C   sB   t | d}t| dW  d    S 1 sw   Y  d S )Nrbutf-8)r   base64	b64encodereaddecode)
image_path
image_filer   r   r   encode_image#   s   $r<   c                 C   s   dd |  dg D }|S )Nc                 S   r   )messager   )r   errorr   r   r   r   (   r   z%get_error_message.<locals>.<listcomp>errors)get)responsemessagesr   r   r   get_error_message'   s   rC   c                 C   s    t | |k st | |krdS dS )NTF)len)text
min_length
max_lengthr   r   r   validate_string_length+   s   rH   	recipientsubjectbodyc              
      s   t tdtdtddtddddd}t|| g|d	d
}t|}z||I d H  W d S  tyE } ztdt|dd }~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)rJ   
recipientsrK   subtype  status_codedetail)	r   r   getenvr   r   send_message	Exceptionr   str)rI   rJ   rK   confr=   fmer   r   r   
send_email1   s0   rf   c           
   
   C   s   t d}t d}t d}t d}z tjd|||d}|j|d| gid|id	d|iid
d}|W S  ttfyJ }	 ztdt|	dd }	~	ww )NSES_AWS_REGIONrL   rM   rN   ses)region_nameaws_access_key_idaws_secret_access_keyToAddressesDataText)SubjectBody)SourceDestinationMessager[   r\   )	r   r_   boto3clientrf   r   r   r   rb   )
rI   rJ   rK   
AWS_REGIONAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYrN   
ses_clientrA   r>   r   r   r   send_email_sesK   s8   



rz   	directoryreturnc           
      C   s   g }t | D ]]\}}}|D ]U}|ds|drctt j||d7}| }t|d }|s4d}z|	|}	W n t
yK   |j	|dd}	Y nw |||	d W d    n1 s^w   Y  qq|S )	Nz.htmlz.txtr4   encodingr5   replace)r?   )idrE   )r   walkendswithr   r   r'   r8   chardetdetectr9   UnicodeDecodeErrorappend)
r{   content_datarootr.   filesr   fraw_datadetected_encodingrE   r   r   r   parse_scorm_contentn   s&   r   c                 C   s   t dd|  S )Nz\s+ )r/   r0   strip)r1   r   r   r   normalize_spaces   s   r     c                 C   s   |st j}t||| ddS )N)r   r=   r]   content)r   HTTP_400_BAD_REQUESTr	   )r=   r]   r   r   r   errorResponse   s   r   c                 C   s   t tjtj| |ddS )N)r   r=   datar   )r	   r   HTTP_200_OK)r=   r   r   r   r   successReponse   s   r   )r
   )r   )#r   r   r(   r*   r/   r6   rt   r   botocore.exceptionsr   r   fastapi_mailr   r   r   fastapir   r   fastapi.responsesr	   r   r#   r-   r3   r<   rC   rH   rb   rf   rz   listr   r   r   r   r   r   r   r   <module>   s2    

#
