
    =h                         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y)	    N)	b64decode	b64encode)BadSignature)MutableHeadersSecret)HTTPConnection)ASGIAppMessageReceiveScopeSendc                       e Zd Z	 	 	 	 	 	 ddedej
                  eef   dedej                  e	   dedej                  d   d	ed
ej                  e   ddfdZdedededdfdZy)SessionMiddlewareNapp
secret_keysession_cookiemax_agepath	same_site)laxstrictnone
https_onlydomainreturnc	                     || _         t        j                  t        |            | _        || _        || _        || _        d|z   | _        |r| xj                  dz  c_        || xj                  d| z  c_        y y )Nzhttponly; samesite=z; securez	; domain=)	r   itsdangerousTimestampSignerstrsignerr   r   r   security_flags)	selfr   r   r   r   r   r   r   r   s	            m/var/www/html/phonemate/phone_mate_backend/venv/lib/python3.12/site-packages/starlette/middleware/sessions.py__init__zSessionMiddleware.__init__   s{     "223z?C,	3i?:-Yvh#77     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.startr.   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   r2   r   expiresr!   )r   jsondumpsencoder    signr   formatr   decoder   r   r!   append)r/   r2   headersheader_valueinitial_session_was_emptyr&   r"   r(   s       r#   send_wrapperz0SessionMiddleware.__call__.<locals>.send_wrapper7   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   cookiesr7   r    unsignr   r5   loadsr   r   r
   )r"   r&   r'   r(   
connectionr2   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)	  	 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)r.   i u /r   FN)__name__
__module____qualname__r	   typingUnionr   r   OptionalintLiteralboolr$   r   r   r   rD    r%   r#   r   r      s    
 ((9=B '+88 LLf-8 	8
 %8 8 >>"9:8 8 $8 
8,/5E /5G /54 /5D /5r%   r   )r5   rI   base64r   r   r   itsdangerous.excr   starlette.datastructuresr   r   starlette.requestsr   starlette.typesr	   r
   r   r   r   r   rO   r%   r#   <module>rU      s,      '  ) ; - B BF5 F5r%   