
    6i                        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
      Z G d deeej2                  f         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	            P/var/www/files/kim/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 r}|j                   j                     j	                  d      }	  j
                  j                  | j                        }t        t        j                  t        |                  d<   dnt               d<   d	 fd} j                  ||       d {    y 7 # t        $ r t               d<   Y ?w xY w7 #w)
Ntype)http	websocketTutf-8)r   sessionFc                  K   | d   dk(  rJd   }t        |       }|j                  r|j                  d       |j                  r|rt	        t        j                  |      j                  d            }j                  j                  |      }dj                  j                  |j                  d      j                  j                  rdj                   d	nd
j                        }|j!                  d|       nT|j                  rHsFdj                  j                  dj                  dj                        }|j!                  d|        |        d {    y 7 w)Nr%   zhttp.response.startr)   )scopeCookier(   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   r.   r   expiresr   )r   accessedadd_vary_headermodifiedr   jsondumpsencoder   signformatr   decoder   r   r   append)	messager)   headersr.   header_valueinitial_session_was_emptyr+   r   sends	        r!   send_wrapperz0SessionMiddleware.__call__.<locals>.send_wrapper:   s>    v"77#(#3(w7##++H5##$TZZ%8%?%?%HID;;++D1D#d#k#k'+':':![[1!YY?C||(4<<. ;QS'+':': $l $L NN<>%%.G#d#k#k'+':':#!YY I'+':': $l $L NN<>w-s   EE*"E(#E*)r;   r   returnNone)r   r
   r   cookiesr6   r   unsignr   Sessionr4   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#*4::io+F#Gi ,1)  'yE)	  	 < hhug|444_ 1   -#*9i -F 	5sA   DC>AD8AD  -D8D9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 | NonerA   rB   )r+   r   rG   r   r?   r   rA   rB   )__name__
__module____qualname__r"   rI    r#   r!   r   r      sx    
 (/6; !88 !8 	8
 8 8 48 8 8 
8,15r#   r   c                       e Zd ZU dZded<   dZded<   ddZddZd fdZd fdZ	d fd	Z
d fd
Zdd fdZd fdZ xZS )rE   FrL   r1   r3   c                    d| _         y NT)r1   r   s    r!   mark_accessedzSession.mark_accessed_   s	    r#   c                     d| _         d| _        y rS   )r1   r3   rT   s    r!   mark_modifiedzSession.mark_modifiedb   s    r#   c                F    | j                          t        | 	  ||       y N)rW   super__setitem__)r   keyvalue	__class__s      r!   r[   zSession.__setitem__f   s    C'r#   c                D    | j                          t        | 	  |       y rY   )rW   rZ   __delitem__)r   r\   r^   s     r!   r`   zSession.__delitem__j   s    C r#   c                B    | j                          t        | 	          y rY   )rW   rZ   clear)r   r^   s    r!   rb   zSession.clearn   s    r#   c                R    | j                   xs || v | _         t        |   |g| S rY   )r3   rZ   pop)r   r\   argsr^   s      r!   rd   zSession.popr   s+    4w{3&&&r#   c                L    || vr| j                          t        | 	  ||      S rY   )rW   rZ   
setdefault)r   r\   defaultr^   s      r!   rg   zSession.setdefaultv   s(    d? w!#w//r#   c                D    | j                          t        |   |i | y rY   )rW   rZ   update)r   re   kwargsr^   s      r!   rj   zSession.update{   s     ''r#   )rA   rB   )r\   r   r]   
typing.AnyrA   rB   )r\   r   rA   rB   )r\   r   re   rl   rA   rl   rY   )r\   r   rh   rl   rA   rl   )re   rl   rk   rl   rA   rB   )rM   rN   rO   r1   __annotations__r3   rU   rW   r[   r`   rb   rd   rg   rj   __classcell__)r^   s   @r!   rE   rE   [   sD    HdHd(!'0
( (r#   rE   )
__future__r   r4   typingbase64r   r   r   r   itsdangerous.excr   starlette.datastructuresr   r	   starlette.requestsr
   starlette.typesr   r   r   r   r   r   dictr   AnyrE   rP   r#   r!   <module>rx      sL    "   '   ) ; - B BH5 H5V"(d3

?# "(r#   