
    df                         d dl 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 ej(                  dk\  rd dlmZ nd dlmZ  G d	 d
      Zy)    N)	b64decode	b64encode)BadSignature)MutableHeadersSecret)HTTPConnection)ASGIAppMessageReceiveScopeSend)      )Literalc                       e Zd Z	 	 	 	 	 ddedej
                  eef   dedej                  e	   dede
d   ded	d
fdZdededed	d
fdZy
)SessionMiddlewareapp
secret_keysession_cookiemax_agepath	same_site)laxstrictnone
https_onlyreturnNc                     || _         t        j                  t        |            | _        || _        || _        || _        d|z   | _        |r| xj                  dz  c_        y y )Nzhttponly; samesite=z; secure)	r   itsdangerousTimestampSignerstrsignerr   r   r   security_flags)selfr   r   r   r   r   r   r   s           V/home/api-vastappli/venv/lib/python3.12/site-packages/starlette/middleware/sessions.py__init__zSessionMiddleware.__init__   s]     "223z?C,	3i?:-     scopereceivesendc                    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t        d	d f fd
} j                  ||       d {    y 7 # t        $ r i d<   Y ?w xY w7 w)Ntype)http	websocketTutf-8)r   sessionFmessager   c                   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.startr0   r/   )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)r1   r4   headersheader_valueinitial_session_was_emptyr(   r$   r*   s       r%   send_wrapperz0SessionMiddleware.__call__.<locals>.send_wrapper:   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)r   r   r   cookiesr9   r"   unsignr   r7   loadsr   r   r
   )r$   r(   r)   r*   
connectionr4   rA   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)	  	 D 	  	 8 hhug|444[ 1   &#%i &B 	5sA   DC5AD8A
C7 -D/D0D7DDDD)r0   i u /r   F)__name__
__module____qualname__r	   typingUnionr!   r   Optionalintr   boolr&   r   r   r   rF    r'   r%   r   r      s    
 ((96; .. LLf-. 	.
 %. . 23. . 
.&/5E /5G /54 /5D /5r'   r   )r7   sysrK   base64r   r   r   itsdangerous.excr   starlette.datastructuresr   r   starlette.requestsr   starlette.typesr	   r
   r   r   r   version_infor   typing_extensionsr   rP   r'   r%   <module>rY      sC     
  '  ) ; - B Bv)C5 C5r'   