a
     ÑOcÊ4  ã                   @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZmZ d dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ ddlmZmZ ddlmZm Z  dd	l!m"Z"m#Z#m$Z$ d
Z%ee&df Z'G dd„ deƒZ(G dd„ deƒZ)dS )é    N)Údefaultdict)Ú
BaseCookieÚMorselÚSimpleCookie)ÚDefaultDictÚDictÚIterableÚIteratorÚListÚMappingÚOptionalÚSetÚTupleÚUnionÚcast)ÚURLé   )ÚAbstractCookieJarÚClearCookiePredicate)Úis_ip_addressÚnext_whole_second)ÚLooseCookiesÚPathLikeÚStrOrURL)Ú	CookieJarÚDummyCookieJarúMorsel[str]c                       s¢  e Zd ZdZe d¡Ze d¡Ze d¡Ze dej	¡Z
e d¡Zejjjejjd�Zej d¡Zd	d
dddœeeeeee df eej ddœ‡ fdd„Zeddœdd„Zeddœdd„Zd6ee ddœdd„Z e!ddœdd„Z"ddœdd„Z#e$dœdd „Z%ddœd!d"„Z&eje!e!dd#œd$d%„Z'e(ƒ fe)e(dd&œd'd(„Z*e(ƒ fe(ed) d*œd+d,„Z+e,e!e!ed-œd.d/„ƒZ-e,e!e!ed0œd1d2„ƒZ.e/e!eej d3œd4d5„ƒZ0‡  Z1S )7r   z/Implements cookie storage adhering to RFC 6265.z][\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]*(?P<token>[\x00-\x08\x0A-\x1F\d:a-zA-Z\x7F-\xFF]+)z(\d{1,2}):(\d{1,2}):(\d{1,2})z	(\d{1,2})zG(jan)|(feb)|(mar)|(apr)|(may)|(jun)|(jul)|(aug)|(sep)|(oct)|(nov)|(dec)z	(\d{2,4})©ÚtzinfoiÿÿÿFTN)ÚunsafeÚquote_cookieÚtreat_as_secure_originÚloop)r   r    r!   r"   Úreturnc                   sÂ   t ƒ j|d� ttƒ| _tƒ | _|| _|| _|d u r:g }n>t	|t
ƒrP| ¡ g}n(t	|tƒrjt
|ƒ ¡ g}ndd„ |D ƒ}|| _tƒ | _i | _| j| _z| j ¡  W n ty¼   | j| _Y n0 d S )N©r"   c                 S   s*   g | ]"}t |tƒrt|ƒ ¡ n| ¡ ‘qS © )Ú
isinstanceÚstrr   Úorigin)Ú.0Úurlr%   r%   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/aiohttp/cookiejar.pyÚ
<listcomp>O   s   ÿz&CookieJar.__init__.<locals>.<listcomp>)ÚsuperÚ__init__r   r   Ú_cookiesÚsetÚ_host_only_cookiesÚ_unsafeÚ_quote_cookier&   r   r(   r'   Ú_treat_as_secure_originr   Ú_next_expirationÚ_expirationsÚMAX_TIMEÚ	_max_timeÚ	timestampÚOverflowErrorÚMAX_32BIT_TIME)Úselfr   r    r!   r"   ©Ú	__class__r%   r+   r.   ;   s,    


þzCookieJar.__init__)Ú	file_pathr#   c                 C   sL   t  |¡}|jdd��"}t | j|tj¡ W d   ƒ n1 s>0    Y  d S )NÚwb©Úmode)ÚpathlibÚPathÚopenÚpickleÚdumpr/   ÚHIGHEST_PROTOCOL©r<   r?   Úfr%   r%   r+   Úsave]   s    
zCookieJar.savec                 C   sF   t  |¡}|jdd��}t |¡| _W d   ƒ n1 s80    Y  d S )NÚrbrA   )rC   rD   rE   rF   Úloadr/   rI   r%   r%   r+   rM   b   s    
zCookieJar.load©Ú	predicater#   c           
      C   s<  |d u r2t ƒ | _| j ¡  | j ¡  | j ¡  d S g }tj tjj	¡}| j 
¡ D ]L\}}| 
¡ D ]:\}}||f}|| jv rˆ| j| |ks�||ƒr`| |¡ q`qP|D ]D\}}||f}| j |¡ || jv rÔ| j||f= | j|  |d ¡ q¢t| j ¡ | jd�}	z|	jdd�tjdd� | _W n t�y6   | j| _Y n0 d S )N)Údefaultr   )Úmicrosecondr   ©Úseconds)r   r5   r/   Úclearr1   r6   ÚdatetimeÚnowÚtimezoneÚutcÚitemsÚappendÚdiscardÚpopÚminÚvaluesr8   ÚreplaceÚ	timedeltar:   )
r<   rO   Zto_delrV   ÚdomainÚcookieÚnameÚmorselÚkeyZnext_expirationr%   r%   r+   rT   g   sB    


ÿÿþ
ÿ
þ
zCookieJar.clear©ra   r#   c                    s   ˆ  ‡ ‡fdd„¡ d S )Nc                    s   ˆ  ˆ | d ¡S )Nra   )Ú_is_domain_match©Úx©ra   r<   r%   r+   Ú<lambda>‰   ó    z(CookieJar.clear_domain.<locals>.<lambda>©rT   ©r<   ra   r%   rj   r+   Úclear_domainˆ   s    zCookieJar.clear_domainúIterator[Morsel[str]]©r#   c                 c   s*   |   ¡  | j ¡ D ]}| ¡ E d H  qd S ©N)Ú_do_expirationr/   r^   )r<   Úvalr%   r%   r+   Ú__iter__‹   s    zCookieJar.__iter__c                 C   s   t dd„ | D ƒƒS )Nc                 s   s   | ]
}d V  qdS )r   Nr%   )r)   Úir%   r%   r+   Ú	<genexpr>‘   rl   z$CookieJar.__len__.<locals>.<genexpr>)Úsum©r<   r%   r%   r+   Ú__len__�   s    zCookieJar.__len__c                 C   s   |   dd„ ¡ d S )Nc                 S   s   dS )NFr%   rh   r%   r%   r+   rk   ”   rl   z*CookieJar._do_expiration.<locals>.<lambda>rm   ry   r%   r%   r+   rs   “   s    zCookieJar._do_expiration)Úwhenra   rc   r#   c                 C   s    t | j|ƒ| _|| j||f< d S rr   )r]   r5   r6   )r<   r{   ra   rc   r%   r%   r+   Ú_expire_cookie–   s    zCookieJar._expire_cookie©ÚcookiesÚresponse_urlr#   c              	   C   sî  |j }| jst|ƒrdS t|tƒr*| ¡ }|D �]°\}}t|tƒsXtƒ }|||< || }|d }| d¡rtd}|d= |sœ|durœ| j	 
||f¡ | }|d< | d¡rº|dd… }||d< |rÌ|  ||¡sÌq.|d }|rä| d¡�s|j}| d¡súd}nd|d| d¡…  }||d< |d }	|	�rœzVt|	ƒ}
z tj tjj¡tj|
d	� }W n t�yj   | j}Y n0 |  |||¡ W n t�y˜   d|d< Y n0 n6|d
 }|�rÒ|  |¡}|�rÊ|  |||¡ nd|d
< || j| |< q.|  ¡  dS )zUpdate cookies.Nra   Ú.Ú r   Úpathú/zmax-agerR   Úexpires)Úraw_hostr2   r   r&   r   rY   r   r   Úendswithr1   ÚaddÚ
startswithrg   r‚   ÚrfindÚintrU   rV   rW   rX   r`   r:   r8   r|   Ú
ValueErrorÚ_parse_dater/   rs   )r<   r~   r   Úhostnamerc   rb   Útmpra   r‚   Zmax_ageZdelta_secondsZmax_age_expirationr„   Úexpire_timer%   r%   r+   Úupdate_cookiesš   sh    




ÿ
þ
zCookieJar.update_cookies)úBaseCookie[str]zSimpleCookie[str]©Úrequest_urlr#   c           
      C   s0  |   ¡  t|ƒ}| jrtƒ ntƒ }|jp*d}tƒ }t t¡� | 	¡ }W d  ƒ n1 sZ0    Y  |j
dvov|| jv}| D ]®}|j}|d }|sž|j||< q|| js®t|ƒr®q|||f| jv rÈ||krÖq|n|  ||¡sÖq||  |j|d ¡sêq||rø|d røq|td| |jtƒ ¡ƒ}	|	 |j|j|j¡ |	||< q||S )z8Returns this jar's cookies filtered by their attributes.r�   N)ÚhttpsÚwssra   r‚   Úsecurer   )rs   r   r3   r   r   r…   Ú
contextlibÚsuppressr‹   r(   Úschemer4   re   Úvaluer2   r   r1   rg   Ú_is_path_matchr‚   r   Úgetr   r0   Úcoded_value)
r<   r“   Úfilteredr�   Zrequest_originZis_not_securerb   rc   ra   Zmrsl_valr%   r%   r+   Úfilter_cookiesç   s@    ÿ
&
þ

zCookieJar.filter_cookies)ra   r�   r#   c                 C   sD   || krdS |  | ¡sdS |dt| ƒ … }|  d¡s:dS t|ƒ S )z0Implements domain matching adhering to RFC 6265.TFNr€   )r†   Úlenr   )ra   r�   Únon_matchingr%   r%   r+   rg     s    

zCookieJar._is_domain_match)Úreq_pathÚcookie_pathr#   c                 C   sP   |   d¡sd} | |krdS |   |¡s(dS | d¡r6dS | t|ƒd… }|  d¡S )z.Implements path matching adhering to RFC 6265.rƒ   TFN)rˆ   r†   r    )r¢   r£   r¡   r%   r%   r+   r›   *  s    


zCookieJar._is_path_match)Údate_strr#   c              	   C   s¼  |sdS d}d}d}d}d } }}d}	d}
d}| j  |¡D ]¸}| d¡}|s|| j |¡}|r|d}dd„ | ¡ D ƒ\}}}q<|s¢| j |¡}|r¢d}t| ¡ ƒ}	q<|sÐ| j |¡}|rÐd}|j	dusÈJ ‚|j	}
q<|s<| j
 |¡}|r<d}t| ¡ ƒ}q<d|  k�rd	k�rn n
|d
7 }n$d|  k�r4dk�r@n n|d7 }d||||fv �rVdS d|	  k�rndk�stn dS |dk �sœ|dk�sœ|dk�sœ|dk�r dS tj||
|	|||tjjd�S )z4Implements date string parsing adhering to RFC 6265.NFr   ÚtokenTc                 s   s   | ]}t |ƒV  qd S rr   )rŠ   )r)   Úsr%   r%   r+   rw   U  rl   z(CookieJar._parse_date.<locals>.<genexpr>éF   éc   il  éE   iÐ  r   é   iA  é   é;   r   )ÚDATE_TOKENS_REÚfinditerÚgroupÚDATE_HMS_TIME_REÚmatchÚgroupsÚDATE_DAY_OF_MONTH_RErŠ   ÚDATE_MONTH_REÚ	lastindexÚDATE_YEAR_RErU   rW   rX   )Úclsr¤   Z
found_timeZ	found_dayZfound_monthZ
found_yearÚhourÚminuteÚsecondÚdayÚmonthÚyearZtoken_matchr¥   Z
time_matchZ	day_matchZmonth_matchZ
year_matchr%   r%   r+   rŒ   =  sb    

(ÿzCookieJar._parse_date)N)2Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚreÚcompiler­   r°   r³   ÚIr´   r¶   rU   Úmaxr_   rW   rX   r7   Úutcfromtimestampr;   Úboolr   r   r
   r   ÚasyncioÚAbstractEventLoopr.   r   rK   rM   r   rT   r'   ro   ru   rŠ   rz   rs   r|   r   r   r�   rŸ   Ústaticmethodrg   r›   ÚclassmethodrŒ   Ú__classcell__r%   r%   r=   r+   r   $   sX   ÿ

þ
úù"!Nÿþ3r   c                       sž   e Zd ZdZddœeej ddœ‡ fdd„Zddœd	d
„Ze	dœdd„Z
dee ddœdd„Zeddœdd„Zeƒ feeddœdd„Zeddœdd„Z‡  ZS )r   zxImplements a dummy cookie storage.

    It can be used with the ClientSession when no cookie processing is needed.

    Nr$   )r"   r#   c                   s   t ƒ j|d� d S )Nr$   )r-   r.   )r<   r"   r=   r%   r+   r.   ‡  s    zDummyCookieJar.__init__rp   rq   c                 c   s   d S rr   r%   ry   r%   r%   r+   ru   Š  s    zDummyCookieJar.__iter__c                 C   s   dS )Nr   r%   ry   r%   r%   r+   rz   Ž  s    zDummyCookieJar.__len__rN   c                 C   s   d S rr   r%   )r<   rO   r%   r%   r+   rT   ‘  s    zDummyCookieJar.clearrf   c                 C   s   d S rr   r%   rn   r%   r%   r+   ro   ”  s    zDummyCookieJar.clear_domainr}   c                 C   s   d S rr   r%   )r<   r~   r   r%   r%   r+   r�   —  s    zDummyCookieJar.update_cookiesr‘   r’   c                 C   s   t ƒ S rr   )r   )r<   r“   r%   r%   r+   rŸ   š  s    zDummyCookieJar.filter_cookies)N)r¾   r¿   rÀ   rÁ   r   rÈ   rÉ   r.   ru   rŠ   rz   r   rT   r'   ro   r   r   r�   rŸ   rÌ   r%   r%   r=   r+   r   €  s    r   )*rÈ   r—   rU   ÚosrC   rF   rÂ   Úcollectionsr   Úhttp.cookiesr   r   r   Útypingr   r   r   r	   r
   r   r   r   r   r   r   Zyarlr   Úabcr   r   Zhelpersr   r   Ztypedefsr   r   r   Ú__all__r'   Z
CookieItemr   r   r%   r%   r%   r+   Ú<module>   s&   4  ^