o
    ii                     @  s   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
 d
ZG dd deeejf ZdS )    )annotationsN)	b64decode	b64encode)Literal)BadSignature)MutableHeadersSecret)HTTPConnection)ASGIAppMessageReceiveScopeSendc                   @  s.   e Zd Z						d"d#ddZd$d d!ZdS )%SessionMiddlewaresession u /laxFNappr
   
secret_keystr | Secretsession_cookiestrmax_age
int | Nonepath	same_site Literal['lax', 'strict', 'none']
https_onlybooldomain
str | NonereturnNonec	           	      C  sh   || _ tt|| _|| _|| _|| _d| | _|r"|  jd7  _|d ur2|  jd| 7  _d S d S )Nzhttponly; samesite=z; securez	; domain=)	r   itsdangerousTimestampSignerr   signerr   r   r   security_flags)	selfr   r   r   r   r   r   r   r     r)   e/var/www/scraper.webshop2u.hu/html/venv/lib/python3.10/site-packages/starlette/middleware/sessions.py__init__   s   
zSessionMiddleware.__init__scoper   receiver   sendr   c                   s   d dvr |I d H  d S t}d j|jv rO|jj d}zjj|jd}tt	
t|d< d W n tyN   t d< Y nw t d< d fdd} ||I d H  d S )Ntype)http	websocketTutf-8)r   r   Fmessager   r"   r#   c                   s   | d dkrfd }t | d}|jr|d |jrN|rNtt|d}j	|}dj
j|djjrAdj d	nd
jd}|d| n|jrf sfdj
jdjdjd}|d| | I d H  d S )Nr/   zhttp.response.startr   )r,   Cookier2   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   r6   r   expiresr'   )r   accessedadd_vary_headermodifiedr   jsondumpsencoder&   signformatr   decoder   r   r'   append)r3   r   headersr6   header_valueinitial_session_was_emptyr,   r(   r.   r)   r*   send_wrapper:   s6   



z0SessionMiddleware.__call__.<locals>.send_wrapper)r3   r   r"   r#   )r   r	   r   cookiesr>   r&   unsignr   Sessionr<   loadsr   r   )r(   r,   r-   r.   
connectionr6   rG   r)   rE   r*   __call__'   s$   
zSessionMiddleware.__call__)r   r   r   r   FN)r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   )r,   r   r-   r   r.   r   r"   r#   )__name__
__module____qualname__r+   rM   r)   r)   r)   r*   r      s    r   c                      s   e Zd ZU dZded< dZded< dddZdd	d
Zd  fddZd! fddZ	d fddZ
d" fddZd#d$ fddZd% fddZ  ZS )&rJ   Fr   r9   r;   r"   r#   c                 C  s
   d| _ d S NT)r9   r(   r)   r)   r*   mark_accessed_   s   
zSession.mark_accessedc                 C  s   d| _ d| _d S rQ   )r9   r;   rR   r)   r)   r*   mark_modifiedb   s   
zSession.mark_modifiedkeyr   value
typing.Anyc                   s   |    t || d S N)rT   super__setitem__)r(   rU   rV   	__class__r)   r*   rZ   f   s   zSession.__setitem__c                   s   |    t | d S rX   )rT   rY   __delitem__)r(   rU   r[   r)   r*   r]   j   s   zSession.__delitem__c                   s   |    t   d S rX   )rT   rY   clearrR   r[   r)   r*   r^   n   s   zSession.clearargsc                   s$   | j p|| v | _ t j|g|R  S rX   )r;   rY   pop)r(   rU   r_   r[   r)   r*   r`   r   s   zSession.popNdefaultc                   s   || vr|    t ||S rX   )rT   rY   
setdefault)r(   rU   ra   r[   r)   r*   rb   v   s   zSession.setdefaultkwargsc                   s   |    t j|i | d S rX   )rT   rY   update)r(   r_   rc   r[   r)   r*   rd   {   s   zSession.update)r"   r#   )rU   r   rV   rW   r"   r#   )rU   r   r"   r#   )rU   r   r_   rW   r"   rW   rX   )rU   r   ra   rW   r"   rW   )r_   rW   rc   rW   r"   r#   )rN   rO   rP   r9   __annotations__r;   rS   rT   rZ   r]   r^   r`   rb   rd   __classcell__r)   r)   r[   r*   rJ   [   s   
 

rJ   )
__future__r   r<   typingbase64r   r   r   r$   itsdangerous.excr   starlette.datastructuresr   r   starlette.requestsr	   starlette.typesr
   r   r   r   r   r   dictr   AnyrJ   r)   r)   r)   r*   <module>   s    K