o
    tf                     @  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Zd$d d!ZdS )%SessionMiddlewaresession u /laxFNappr	   
secret_keystr | Secretsession_cookiestrmax_age
int | Nonepath	same_site'typing.Literal['lax', 'strict', 'none']
https_onlybooldomain
str | NonereturnNonec	           	      C  sh   || _ tt|| _|| _|| _|| _d| | _|r"|  jd7  _|d ur2|  jd| 7  _d S 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'   f/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/starlette/middleware/sessions.py__init__   s   
zSessionMiddleware.__init__scoper   receiver   sendr   c                   s   d dvr |I d H  d S t}d j|jv rL|jj d}zjj|jd}t	t
|d< d W n tyK   i d< Y nw i d< d fdd} ||I d H  d S )Ntype)httpZ	websocketTutf-8)r   r   Fmessager
   r!   r"   c                   s   | d dkr]d rCt td d}j|}t| d}djj|	dj
jr6dj dnd	jd
}|d| n s]t| 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   r2   r   expiresr%   )r   jsondumpsencoder$   signr   formatr   decoder   r   r%   append)r0   r2   headersheader_valueZinitial_session_was_emptyr*   r&   r,   r'   r(   send_wrapper9   s2   

z0SessionMiddleware.__call__.<locals>.send_wrapper)r0   r
   r!   r"   )r   r   r   cookiesr7   r$   Zunsignr   r5   loadsr   r   )r&   r*   r+   r,   
connectionr2   r?   r'   r>   r(   __call__&   s$   zSessionMiddleware.__call__)r   r   r   r   FN)r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   )r*   r   r+   r   r,   r   r!   r"   )__name__
__module____qualname__r)   rC   r'   r'   r'   r(   r      s    r   )
__future__r   r5   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    