
    vh                        d dl m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
      Zy)    )annotationsN)	b64decode	b64encode)Literal)BadSignature)MutableHeadersSecret)HTTPConnection)ASGIAppMessageReceiveScopeSendc                  L    e Zd Z	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZddZy)SessionMiddlewareNc	                    || _         t        j                  t        |            | _        || _        || _        || _        d|z   | _        |r| xj                  dz  c_        || xj                  d| z  c_        y y )Nzhttponly; samesite=z; securez	; domain=)	appitsdangerousTimestampSignerstrsignersession_cookiemax_agepathsecurity_flags)	selfr   
secret_keyr   r   r   	same_site
https_onlydomains	            U/var/www/html/luna/venv/lib/python3.12/site-packages/starlette/middleware/sessions.py__init__zSessionMiddleware.__init__   s{     "223z?C,	3i?:-Yvh#77     c                   K   d   dvr j                  |       d {    y t              }d j                  |j                  v rt|j                   j                     j	                  d      }	  j
                  j                  | j                        }t        j                  t        |            d<   dni d<   d	 fd} j                  ||       d {    y 7 # t        $ r i d<   Y 7w xY w7 w)
Ntype)http	websocketTutf-8)r   sessionFc                  K   | d   dk(  r"d   rt        t        j                  d         j                  d            }j                  j                  |      }t        |       }dj                  j                  |j                  d      j                  j                  rdj                   dnd	j                  
      }|j                  d|       nTsRt        |       }dj                  j                  dj                  dj                        }|j                  d|        |        d {    y 7 w)Nr%   zhttp.response.startr)   r(   )scopez?{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)messager-   headersheader_valueinitial_session_was_emptyr+   r   sends       r!   send_wrapperz0SessionMiddleware.__call__.<locals>.send_wrapper9   s     v"77#$TZZi0@%A%H%H%QRD;;++D1D,7;G#d#k#k'+':':![[1!YY?C||(4<<. ;QS'+':': $l $L NN<>2,7;G#d#k#k'+':':#!YY I'+':': $l $L NN<>w-s   D7E:E ;E)r7   r   returnNone)r   r
   r   cookiesr2   r   unsignr   r0   loadsr   r   )r   r+   receiver;   
connectionr-   r<   r:   s   `` `   @r!   __call__zSessionMiddleware.__call__&   s    = 55((5'4000#E*
$(!*"4"44%%d&9&9:AA'JD&{{))$)E#'::io#>i ,1)  "E)	  	 8 hhug|444[ 1   &#%i &B 	5sA   DC-AD8A
C/ %D'D(D/D =D?D  D)r)   i u /laxFN)r   r   r   zstr | Secretr   r   r   z
int | Noner   r   r   z Literal['lax', 'strict', 'none']r   boolr    z
str | Noner=   r>   )r+   r   rB   r   r;   r   r=   r>   )__name__
__module____qualname__r"   rD    r#   r!   r   r      sx    
 (/6; !88 !8 	8
 8 8 48 8 8 
8,/5r#   r   )
__future__r   r0   base64r   r   typingr   r   itsdangerous.excr   starlette.datastructuresr   r	   starlette.requestsr
   starlette.typesr   r   r   r   r   r   rK   r#   r!   <module>rS      s/    "  '   ) ; - B BF5 F5r#   