o
    Þ­j  ã                   @  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   ÚitsdangerousÚTimestampSignerr   Úsignerr   r   r   Úsecurity_flags)	Úselfr   r   r   r   r   r   r   r   © r(   úZ/var/www/html/CropPilot/venv/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)ÚhttpÚ	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   r1   )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   r4   r   Úexpiresr&   )r   ÚjsonÚdumpsÚencoder%   Úsignr   Úformatr   Údecoder   r   r&   Úappend)r2   r4   ÚheadersÚheader_value©Úinitial_session_was_emptyr+   r'   r-   r(   r)   Úsend_wrapper9   s2   €
û
ûz0SessionMiddleware.__call__.<locals>.send_wrapper)r2   r
   r!   r"   )r   r   r   Úcookiesr9   r%   Úunsignr   r7   Úloadsr   r   )r'   r+   r,   r-   Ú
connectionr4   rB   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*   rG   r(   r(   r(   r)   r      s    ÷r   )Ú
__future__r   r7   ÚtypingÚbase64r   r   r#   Úitsdangerous.excr   Ústarlette.datastructuresr   r   Ústarlette.requestsr   Ústarlette.typesr	   r
   r   r   r   r   r(   r(   r(   r)   Ú<module>   s    