U
    &%e                     @   s   d dl Z d dlZd dlZd dlmZmZ d dlZd dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZmZmZmZ ejdkrd dlmZ nd dlmZ G d	d
 d
ZdS )    N)	b64decode	b64encode)BadSignature)MutableHeadersSecret)HTTPConnection)ASGIAppMessageReceiveScopeSend)      )Literalc                
   @   sR   e Zd Zdeejeef eeje	 ee
d eddd	d
ZeeeddddZdS )SessionMiddlewaresession u /laxF)r   strictnoneN)app
secret_keysession_cookiemax_agepath	same_site
https_onlyreturnc                 C   sH   || _ tt|| _|| _|| _|| _d| | _|rD|  jd7  _d S )Nzhttponly; samesite=z; secure)	r   itsdangerousZTimestampSignerstrsignerr   r   r   security_flags)selfr   r   r   r   r   r   r    r$   \/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/starlette/middleware/sessions.py__init__   s    

zSessionMiddleware.__init__)scopereceivesendr   c                    s   d dkr$ |I d H  d S t}d j|jkr|jj d}z,jj|jd}t	t
|d< d W q tk
r   i d< Y qX ni d< td d fd	d
} ||I d H  d S )Ntype)httpZ	websocketTutf-8)r   r   F)messager   c                    s   | d dkrd rt td d}j|}t| d}djj|	dj
jrjdj dnd	jd
}|d| n4 st| d}djjdj
djd}|d| | I d H  d S )Nr*   zhttp.response.startr   r,   )r'   z?{session_cookie}={data}; path={path}; {max_age}{security_flags}zMax-Age=z;  )r   datar   r   r"   z
Set-Cookiez?{session_cookie}={data}; path={path}; {expires}{security_flags}nullz'expires=Thu, 01 Jan 1970 00:00:00 GMT; )r   r/   r   expiresr"   )r   jsondumpsencoder!   signr   formatr   decoder   r   r"   append)r-   r/   headersheader_valueZinitial_session_was_emptyr'   r#   r)   r$   r%   send_wrapper:   s0    

z0SessionMiddleware.__call__.<locals>.send_wrapper)r   r   r   cookiesr4   r!   Zunsignr   r2   loadsr   r   r	   )r#   r'   r(   r)   
connectionr/   r<   r$   r;   r%   __call__'   s     zSessionMiddleware.__call__)r   r   r   r   F)__name__
__module____qualname__r   typingUnionr    r   Optionalintr   boolr&   r   r
   r   r@   r$   r$   r$   r%   r      s         r   )r2   sysrD   base64r   r   r   Zitsdangerous.excr   Zstarlette.datastructuresr   r   Zstarlette.requestsr   Zstarlette.typesr   r	   r
   r   r   version_infor   Ztyping_extensionsr   r$   r$   r$   r%   <module>   s   
