a
    ^g                     @  s   d dl m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 G dd	 d	ZdS )
    )annotationsN)	b64decode	b64encode)BadSignature)MutableHeadersSecret)HTTPConnection)ASGIAppMessageReceiveScopeSendc                   @  s@   e Zd Zdddd	d
d	ddddd	ddZdddddddZdS )SessionMiddlewaresession u /laxFNr	   zstr | Secretstrz
int | Nonez'typing.Literal['lax', 'strict', 'none']boolz
str | NoneNone)	app
secret_keysession_cookiemax_agepath	same_site
https_onlydomainreturnc	           	      C  sd   || _ tt|| _|| _|| _|| _d| | _|rD|  jd7  _|d ur`|  jd| 7  _d S )Nzhttponly; samesite=z; securez	; domain=)	r   itsdangerousZTimestampSignerr   signerr   r   r   security_flags)	selfr   r   r   r   r   r   r   r    r#   k/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/starlette/middleware/sessions.py__init__   s    
zSessionMiddleware.__init__r   r   r   )scopereceivesendr   c                   s   d dvr$ |I d H  d S t}d j|jv r|jj d}z,jj|jd}t	t
|d< d W q ty   i d< Y q0 ni d< dd	d
 fdd} ||I d H  d S )Ntype)httpZ	websocketTutf-8)r   r   Fr
   r   )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_wrapper9   s0    

z0SessionMiddleware.__call__.<locals>.send_wrapper)r   r   r   cookiesr3   r    Zunsignr   r1   loadsr   r   )r"   r&   r'   r(   
connectionr.   r;   r#   r:   r$   __call__&   s     zSessionMiddleware.__call__)r   r   r   r   FN)__name__
__module____qualname__r%   r?   r#   r#   r#   r$   r      s          r   )
__future__r   r1   typingbase64r   r   r   Zitsdangerous.excr   Zstarlette.datastructuresr   r   Zstarlette.requestsr   Zstarlette.typesr	   r
   r   r   r   r   r#   r#   r#   r$   <module>   s   