
    9Cg                        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	          ZdS )
    )annotationsN)	b64decode	b64encode)BadSignature)MutableHeadersSecret)HTTPConnection)ASGIAppMessageReceiveScopeSendc                  ,    e Zd Z	 	 	 	 	 	 d d!dZ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	                    || _         t          j        t          |                    | _        || _        || _        || _        d|z   | _        |r| xj        dz  c_        || xj        d| z  c_        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!   s	            O/var/www/api/venv/lib/python3.11/site-packages/starlette/middleware/sessions.py__init__zSessionMiddleware.__init__   s     "23z??CC,	3i? 	.:-#7v#7#77     scoper   receiver   sendr   c                   K   d         dvr                      |           d {V  d S t                    }d j        |j        v r|j         j                                     d          }	  j                            | j                  }t          j	        t          |                    d<   dn# t          $ r i d<   Y n	w xY wi d<   d fd}                      ||           d {V  d S )Ntype)http	websocketTutf-8)r   r   Fmessager   r#   r$   c                  K   | d         dk    r"d         rt          t          j        d                                       d                    }j                            |          }t          |           }d                    j        |	                    d          j
        j        rdj         dnd	j        
          }|                    d|           nQsOt          |           }d                    j        dj
        dj                  }|                    d|            |            d {V  d S )Nr2   zhttp.response.startr   r5   )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   r9   r   expiresr)   )r   jsondumpsencoder(   signr   formatr   decoder   r   r)   append)r6   r9   headersheader_valueinitial_session_was_emptyr.   r*   r0   s       r+   send_wrapperz0SessionMiddleware.__call__.<locals>.send_wrapper9   sk     v"777# ?$TZi0@%A%A%H%H%Q%QRRD;++D11D,7;;;G#d#k#k'+':![[11!Y?C| S ;4< ; ; ; ;QS'+': $l $ $L NN<>>>>2 
?,7;;;G#d#k#k'+':#!Y I'+': $l $ $L NN<>>>$w--r-   )r6   r   r#   r$   )r   r	   r   cookiesr>   r(   unsignr   r<   loadsr   r   )r*   r.   r/   r0   
connectionr9   rF   rE   s   `` `   @r+   __call__zSessionMiddleware.__call__&   sa     = 555((5'4000000000F#E**
$(!*"444%d&9:AA'JJD&{))$)EE#':ioo#>#>i ,1)) & & &#%i   &  "E)	  	  	  	  	  	  	  	  	 8 hhug|44444444444s   5AB= =CC)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   r0   r   r#   r$   )__name__
__module____qualname__r,   rK    r-   r+   r   r      sU        
 (/=B !8 8 8 8 8,/5 /5 /5 /5 /5 /5r-   r   )
__future__r   r<   typingbase64r   r   r&   itsdangerous.excr   starlette.datastructuresr   r   starlette.requestsr	   starlette.typesr
   r   r   r   r   r   rO   r-   r+   <module>rW      s    " " " " " "   ' ' ' ' ' ' ' '     ) ) ) ) ) ) ; ; ; ; ; ; ; ; - - - - - - B B B B B B B B B B B B B BF5 F5 F5 F5 F5 F5 F5 F5 F5 F5r-   