o
    Q?h                  	   @   s  d dl Z d dl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mZ dZdd	d
edZG dd deZG dd deZddeegeeB f dedefddZdedededdfddZd dedededdfddZd deegeeB f dedefddZdS )!    N)Callable)RequestResponse)SERVER_TIMESTAMPdb)main)ParamsPublicParamszapplication/jsonzPOST, GET, OPTIONS, DELETE, PUTz>Content-Type, Authorization, x-uid, x-api-key,X-Api-Key, X-Uid*)zAccess-Control-Request-MethodszAccess-Control-Request-HeaderszAccess-Control-Allow-OriginzContent-Typec                       sJ   e Zd Zdd fddZdefddZdefdd	Zdefd
dZ	  Z
S )PrintifyError  Nreturnc                    s*   t || _|| _|| _t |   dS z New Error Instance N)intstatus_codekwargs	requestIdsuper__init__to_dict)selfr   r   r   	__class__ H/var/www/html/riverr-enterprise-integrations-main/V2/middlewares/auth.pyr      s   
zPrintifyError.__init__c                 C   s   t di | jS ) dict Error object Nr   )dictr   r   r   r   r   r      s   zPrintifyError.to_dictc                 C      t |  S z  JSON serializable Error object jsondumpsr   r   r   r   r   to_json      zPrintifyError.to_jsonc                 C      t |  | jttdS Nstatusheadersmimetyper   r#   r   post_headersr*   r   r   r   r   response      zPrintifyError.responser   N)r   N)__name__
__module____qualname__r   r   r   strr#   r   r-   __classcell__r   r   r   r   r      s
    r   c                       sR   e Zd Zddeddf fddZdefddZdefd	d
ZdefddZ	  Z
S )	API_Errorr   Nmessager   c                    s2   || _ t|| _|r|ni | _t |   dS r   )r6   r   r   metar   r   r   )r   r6   r   r7   r   r   r   r   $   s   
zAPI_Error.__init__c                 C   s   t | j| j| jdS )r   )r6   r   r7   )r   r6   r   r7   r   r   r   r   r   +   s
   zAPI_Error.to_dictc                 C   r   r   r    r   r   r   r   r#   2   r$   zAPI_Error.to_jsonc                 C   r%   r&   r+   r   r   r   r   r-   6   r.   zAPI_Error.responser/   )r0   r1   r2   r3   r   r   r   r#   r   r-   r4   r   r   r   r   r5   #   s
    r5   Tfunctionrequestr   c           
      C   s^  zg|j dkrtddttdW S t|j }||jr|jni  |t|j	 |j	
d|j	
d}t|}|sB|rBtddt||j	
d	d
|rN|n|
d|d}| |}ttj|tddttdW S  ty }	 ztt  |	 W  Y d }	~	S d }	~	w ty }	 z tt  tttdddt|	iddttdW  Y d }	~	S d }	~	ww )NOPTIONS    r'   zx-uidzX-UidzAuthentication failed.i  domain-hostnamehttps://app.riverr.appid)currentUserhostnamer?   argsdefaultr*   r   Internal Server Errorerrorr(   r6   r7   )methodr   r,   r*   r   rB   r   updater!   r)   getUsersgetUserr5   r   r"   r3   print	traceback
format_excr-   	Exception)
r8   r9   r?   authRequired
parametersuidr@   paramsdataer   r   r   sendResponse:   s2   
4rX   rT   functionNameuserMessagec                 K   s0   t t| ||dd}|| td| d S )Npython)	createdAtrT   rZ   rY   serverLOGS)r   r   rJ   r   
collectionadd)rT   rY   rZ   r   rG   r   r   r   	saveErrorR   s   
ra   c                 K   s@   t t| ||d|d}|| td| td| || d S )Nr[   )r\   rT   rZ   rY   r]   serverMessagePRIORITY_LOGSzERROR LOGGED)r   r   rJ   r   r_   r`   rN   )rT   rY   rZ   rb   r   rG   r   r   r   priorityLogger]   s   
rd   c           	      C   sL  z^|j dkrtddttdW S t|j }||jr|jni  |j	
d}zt|}W n   d }Y t||j	
dd|rA|n|
d|t|j	d}| |}ttj|td	dttd
W S  tyz } ztt  | W  Y d }~S d }~w ty } z tt  tttdddt|iddttdW  Y d }~S d }~ww )Nr:   r;   r<   r'   r=   r>   r?   )
enterpriserA   r?   rB   r)   rC   rE   r   rF   rG   rH   )rI   r   r,   r*   r   rB   r   rJ   r!   r)   rK   rL   getEnterpriseByHostnamer	   r"   r3   r5   rN   rO   rP   r-   rQ   )	r8   r9   r?   rS   domainhostnamere   rU   rV   rW   r   r   r   sendPublicResponsel   s4   
4rh   )NT)N)r!   rO   typingr   flaskr   r   configs.firebaser   r   V2.functions.Usersr   rL   	V2.Paramsr   r	   r*   r,   rQ   r   r5   r   listrX   r3   ra   rd   rh   r   r   r   r   <module>   s    &*