o
    é’Ojª  ã                   @  s°   d dl mZ d dlZd dlZd dlmZmZ d dl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G dd„ deeejf ƒZdS )é    )ÚannotationsN)Ú	b64decodeÚ	b64encode)ÚLiteral)Ú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ú 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)   úc/var/www/html/pharmsmart-cdr-gen/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 rO|jˆj  d¡}zˆjj|ˆjd�}tt	 
t|ƒ¡ƒˆd< d‰ W n tyN   tƒ ˆd< Y nw tƒ ˆ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rfˆd }t | d�}|jr| d¡ |jrN|rNtt |¡ d¡ƒ}ˆj 	|¡}dj
ˆj| d¡ˆjˆjrAdˆj› d	�nd
ˆjd�}| d|¡ n|jrfˆ sfdj
ˆjdˆjdˆjd�}| d|¡ ˆ| ƒI d H  d S )Nr/   zhttp.response.startr   )r,   ÚCookier2   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   r6   r   Úexpiresr'   )r   ÚaccessedÚadd_vary_headerÚmodifiedr   ÚjsonÚdumpsÚencoder&   ÚsignÚformatr   Údecoder   r   r'   Úappend)r3   r   Úheadersr6   Úheader_value©Úinitial_session_was_emptyr,   r(   r.   r)   r*   Úsend_wrapper:   s6   €


û
ûz0SessionMiddleware.__call__.<locals>.send_wrapper)r3   r   r"   r#   )r   r	   r   Úcookiesr>   r&   Úunsignr   ÚSessionr<   Úloadsr   r   )r(   r,   r-   r.   Ú
connectionr6   rG   r)   rE   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+   rM   r)   r)   r)   r*   r      s    ÷r   c                      s”   e Zd ZU dZded< dZded< ddd„Zdd	d
„Zd ‡ fdd„Zd!‡ fdd„Z	d‡ fdd„Z
d"‡ fdd„Zd#d$‡ fdd„Zd%‡ fdd„Z‡  ZS )&rJ   Fr   r9   r;   r"   r#   c                 C  s
   d| _ d S ©NT)r9   ©r(   r)   r)   r*   Úmark_accessed_   s   
zSession.mark_accessedc                 C  s   d| _ d| _d S rQ   )r9   r;   rR   r)   r)   r*   Úmark_modifiedb   s   
zSession.mark_modifiedÚkeyr   Úvalueú
typing.Anyc                   s   |   ¡  tƒ  ||¡ d S ©N)rT   ÚsuperÚ__setitem__)r(   rU   rV   ©Ú	__class__r)   r*   rZ   f   s   zSession.__setitem__c                   s   |   ¡  tƒ  |¡ d S rX   )rT   rY   Ú__delitem__)r(   rU   r[   r)   r*   r]   j   s   zSession.__delitem__c                   s   |   ¡  tƒ  ¡  d S rX   )rT   rY   ÚclearrR   r[   r)   r*   r^   n   s   zSession.clearÚargsc                   s$   | j p|| v | _ tƒ j|g|¢R Ž S rX   )r;   rY   Úpop)r(   rU   r_   r[   r)   r*   r`   r   s   zSession.popNÚdefaultc                   s   || vr|   ¡  tƒ  ||¡S rX   )rT   rY   Ú
setdefault)r(   rU   ra   r[   r)   r*   rb   v   s   zSession.setdefaultÚkwargsc                   s   |   ¡  tƒ j|i |¤Ž d S rX   )rT   rY   Úupdate)r(   r_   rc   r[   r)   r*   rd   {   s   zSession.update)r"   r#   )rU   r   rV   rW   r"   r#   )rU   r   r"   r#   )rU   r   r_   rW   r"   rW   rX   )rU   r   ra   rW   r"   rW   )r_   rW   rc   rW   r"   r#   )rN   rO   rP   r9   Ú__annotations__r;   rS   rT   rZ   r]   r^   r`   rb   rd   Ú__classcell__r)   r)   r[   r*   rJ   [   s   
 

rJ   )Ú
__future__r   r<   ÚtypingÚbase64r   r   r   r$   Úitsdangerous.excr   Ústarlette.datastructuresr   r   Ústarlette.requestsr	   Ústarlette.typesr
   r   r   r   r   r   Údictr   ÚAnyrJ   r)   r)   r)   r*   Ú<module>   s    K