
    Oj7                        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                  R    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_        |	r| xj                  dz  c_        y y )Nzhttponly; samesite=z; securez	; domain=z; partitioned)	appitsdangerousTimestampSignerstrsignersession_cookiemax_agepathsecurity_flags)
selfr   
secret_keyr   r   r   	same_site
https_onlydomainpartitioneds
             t/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/starlette/middleware/sessions.py__init__zSessionMiddleware.__init__   s     "223z?C,	3i?:-Yvh#77?2     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   cookiesr7   r   unsignr   Sessionr5   loadsr   r   )r   r,   receiver@   
connectionr/   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#*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 /laxFNF)r   r   r   zstr | Secretr   r   r   z
int | Noner   r   r   z Literal['lax', 'strict', 'none']r   boolr    z
str | Noner!   rM   rB   rC   )r,   r   rH   r   r@   r   rB   rC   )__name__
__module____qualname__r#   rJ    r$   r"   r   r      s    
 (/6; !!33 !3 	3
 3 3 43 3 3 3 
321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 fdZdd fdZd fdZd fdZ xZS )rF   FrM   r2   r4   c                    d| _         y NT)r2   r   s    r"   mark_accessedzSession.mark_accessedb   s	    r$   c                     d| _         d| _        y rT   )r2   r4   rU   s    r"   mark_modifiedzSession.mark_modifiede   s    r$   c                F    | j                          t        | 	  ||       y N)rX   super__setitem__)r   keyvalue	__class__s      r"   r\   zSession.__setitem__i   s    C'r$   c                D    | j                          t        | 	  |       y rZ   )rX   r[   __delitem__)r   r]   r_   s     r"   ra   zSession.__delitem__m   s    C r$   c                B    | j                          t        | 	          y rZ   )rX   r[   clear)r   r_   s    r"   rc   zSession.clearq   s    r$   c                R    | j                   xs || v | _         t        |   |g| S rZ   )r4   r[   pop)r   r]   argsr_   s      r"   re   zSession.popu   s+    4w{3&&&r$   c                D    t         |          }| j                          |S rZ   )r[   popitemrX   )r   itemr_   s     r"   rh   zSession.popitemy   s     w r$   c                L    || vr| j                          t        | 	  ||      S rZ   )rX   r[   
setdefault)r   r]   defaultr_   s      r"   rk   zSession.setdefault~   s(    d? w!#w//r$   c                D    | j                          t        |   |i | y rZ   )rX   r[   update)r   rf   kwargsr_   s      r"   rn   zSession.update   s     ''r$   c               B    | j                          t        | 	  |      S rZ   )rX   r[   __ior__)r   otherr_   s     r"   rq   zSession.__ior__   s    wu%%r$   )rB   rC   )r]   r   r^   
typing.AnyrB   rC   )r]   r   rB   rC   )r]   r   rf   rs   rB   rs   )rB   ztuple[str, typing.Any]rZ   )r]   r   rl   rs   rB   rs   )rf   rs   ro   rs   rB   rC   )rr   rs   rB   rF   )rN   rO   rP   r2   __annotations__r4   rV   rX   r\   ra   rc   re   rh   rk   rn   rq   __classcell__)r_   s   @r"   rF   rF   ^   sN    HdHd(!'
0
(& &r$   rF   )
__future__r   r5   typingbase64r   r   r   r   itsdangerous.excr   starlette.datastructuresr   r	   starlette.requestsr
   starlette.typesr   r   r   r   r   r   dictr   AnyrF   rQ   r$   r"   <module>r      sL    "   '   ) ; - B BK5 K5\+&d3

?# +&r$   