o
    RÊÆhn6  ã                   @   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Zd dlZd dl	m
Z
 d dlmZmZmZ d dl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# 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)Úceil)ÚDefaultDictÚDictÚIterableÚIteratorÚListÚMappingÚOptionalÚSetÚTupleÚUnionÚcast)ÚURLé   )ÚAbstractCookieJarÚClearCookiePredicate)Úis_ip_address)Ú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ejjjejjd� ¡ ƒd Zz
e e e¡¡ W n eyI   e d	¡ZY n eyS   d
ZY nw ed Zdddddœdededeeee df dee j! ddf
‡ fdd„Z"de#ddfdd„Z$de#ddfdd„Z%d?dee& ddfdd„Z'de(ddfdd „Z)d@d"d#„Z*defd$d%„Z+dAd&d'„Z,d(e-de(d)e(d*e(ddf
d+d,„Z.e/ƒ fd-e0d.e/ddfd/d0„Z1e/ƒ fd1e/dd2fd3d4„Z2e3de(d5e(defd6d7„ƒZ4e3d8e(d9e(defd:d;„ƒZ5e6d<e(dee fd=d>„ƒZ7‡  Z8S )Br   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}))Útzinfor   )	i¸  é   é   é   é;   r!   éÿÿÿÿr"   r"   iÿÿÿFTN)ÚunsafeÚquote_cookieÚtreat_as_secure_originÚloopr#   r$   r%   r&   Úreturnc                   s–   t ƒ j|d� ttƒ| _tƒ | _|| _|| _|d u rg }nt	|t
ƒr(| ¡ g}nt	|tƒr5t
|ƒ ¡ g}ndd„ |D ƒ}|| _tt ¡ ƒ| _i | _d S )N©r&   c                 S   s*   g | ]}t |tƒrt|ƒ ¡ n| ¡ ‘qS © )Ú
isinstanceÚstrr   Úorigin)Ú.0Úurlr)   r)   ú^/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/aiohttp/cookiejar.pyÚ
<listcomp>a   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   ÚtimeÚ_next_expirationÚ_expirations)Úselfr#   r$   r%   r&   ©Ú	__class__r)   r/   r2   K   s&   ÿ

þ
zCookieJar.__init__Ú	file_pathc                 C   sN   t  |¡}|jdd��}t | j|tj¡ W d   ƒ d S 1 s w   Y  d S )NÚwb©Úmode)ÚpathlibÚPathÚopenÚpickleÚdumpr3   ÚHIGHEST_PROTOCOL©r<   r?   Úfr)   r)   r/   Úsavei   s   
"ÿzCookieJar.savec                 C   sH   t  |¡}|jdd��}t |¡| _W d   ƒ d S 1 sw   Y  d S )NÚrbrA   )rC   rD   rE   rF   Úloadr3   rI   r)   r)   r/   rM   n   s   
"ÿzCookieJar.loadÚ	predicatec           
      C   s0  |d u rt t ¡ ƒ| _| j ¡  | j ¡  | j ¡  d S g }t ¡ }| j ¡ D ])\\}}}| ¡ D ]\}}|||f}	|	| jv rF| j|	 |ksJ||ƒrO| |	¡ q1q'|D ])\}}}| j 	||f¡ |||f}	|	| jv rq| j|||f= | j||f  
|d ¡ qS| jr’tg | j ¡ ¢| j‘R Ž d | _d S | j| _d S )Nr   )r   r9   r:   r3   Úclearr5   r;   ÚitemsÚappendÚdiscardÚpopÚminÚvaluesÚSUB_MAX_TIMEÚMAX_TIME)
r<   rN   Úto_delÚnowÚdomainÚpathÚcookieÚnameÚmorselÚkeyr)   r)   r/   rO   s   s8   



ÿ
€û

ÿÿýzCookieJar.clearrZ   c                    s   ˆ  ‡ ‡fdd„¡ d S )Nc                    s   ˆ  ˆ | d ¡S )NrZ   )Ú_is_domain_match©Úx©rZ   r<   r)   r/   Ú<lambda>“   s    z(CookieJar.clear_domain.<locals>.<lambda>©rO   ©r<   rZ   r)   rc   r/   Úclear_domain’   s   zCookieJar.clear_domainúIterator[Morsel[str]]c                 c   s,   � |   ¡  | j ¡ D ]	}| ¡ E d H  q
d S ©N)Ú_do_expirationr3   rU   )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>›   s   € z$CookieJar.__len__.<locals>.<genexpr>)Úsum©r<   r)   r)   r/   Ú__len__š   ó   zCookieJar.__len__c                 C   s   |   dd„ ¡ d S )Nc                 S   ó   dS )NFr)   ra   r)   r)   r/   rd   ž   s    z*CookieJar._do_expiration.<locals>.<lambda>re   rp   r)   r)   r/   rj   �   rr   zCookieJar._do_expirationÚwhenr[   r]   c                 C   s"   t | j|ƒ| _|| j|||f< d S ri   )rT   r:   r;   )r<   rt   rZ   r[   r]   r)   r)   r/   Ú_expire_cookie    s   zCookieJar._expire_cookieÚcookiesÚresponse_urlc              	   C   sÀ  |j }| jst|ƒrdS t|tƒr| ¡ }|D ]Â\}}t|tƒs+tƒ }|||< || }|d }| d¡r9d}|d= |sM|durM| j	 
||f¡ | }|d< | d¡r\|dd… }||d< |re|  ||¡seq|d }|rp| d¡sŠ|j}| d¡s{d}nd|d| d¡…  }||d< |d }	|	r¶zt|	ƒ}
tt ¡ |
 | jƒ}|  ||||¡ W n' tyµ   d|d< Y nw |d	 }|rÐ|  |¡}|rÌ|  ||||¡ nd|d	< || j||f |< q|  ¡  dS )
zUpdate cookies.NrZ   Ú.Ú r   r[   ú/zmax-ageÚexpires)Úraw_hostr6   r   r*   r   rP   r   r   Úendswithr5   ÚaddÚ
startswithr`   r[   ÚrfindÚintrT   r9   rW   ru   Ú
ValueErrorÚ_parse_dater3   rj   )r<   rv   rw   Úhostnamer]   r\   ÚtmprZ   r[   Úmax_ageÚdelta_secondsÚmax_age_expirationr{   Úexpire_timer)   r)   r/   Úupdate_cookies¤   s\   




ÿ
zCookieJar.update_cookiesÚrequest_urlúBaseCookie[str]c           
      C   sZ  | j rtƒ ntƒ }| js|S |  ¡  | js|S t|ƒ}|jpd}|jdv}|rK| jrKtƒ }t	 
t¡� | ¡ }W d  ƒ n1 sAw   Y  || jv}t| dd„ d�D ]W}|j}|d }|sd|j||< qS| jslt|ƒrlqS||f| jv ry||krxqSn|  ||¡s€qS|  |j|d ¡sŠqS|r‘|d	 r‘qStd
| |jtƒ ¡ƒ}	|	 |j|j|j¡ |	||< qS|S )z8Returns this jar's cookies filtered by their attributes.ry   )ÚhttpsÚwssNc                 S   s   t | d ƒS )Nr[   )Úlen)Úcr)   r)   r/   rd     s    z*CookieJar.filter_cookies.<locals>.<lambda>)r_   rZ   r[   Úsecurer   )r7   r   r   r3   rj   r   r|   Úschemer8   Ú
contextlibÚsuppressr‚   r,   Úsortedr_   Úvaluer6   r   r5   r`   Ú_is_path_matchr[   r   Úgetr   r4   Úcoded_value)
r<   r‹   Úfilteredr„   Úis_not_secureÚrequest_originr\   r]   rZ   Úmrsl_valr)   r)   r/   Úfilter_cookiesì   sL   ÿ



ÿ

ÿ
zCookieJar.filter_cookiesr„   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.TFNrx   )r}   r�   r   )rZ   r„   Únon_matchingr)   r)   r/   r`   #  s   


zCookieJar._is_domain_matchÚreq_pathÚcookie_pathc                 C   sP   |   d¡sd} | |krdS |   |¡sdS | d¡rdS | t|ƒd… }|  d¡S )z.Implements path matching adhering to RFC 6265.rz   TFN)r   r}   r�   )r    r¡   rŸ   r)   r)   r/   r—   3  s   



zCookieJar._is_path_matchÚdate_strc                 C   s¨  |sdS d}d}d}d}d } }}d}	d}
d}| j  |¡D ]\}| d¡}|s>| j |¡}|r>d}dd„ | ¡ D ƒ\}}}q|sQ| j |¡}|rQd}t| ¡ ƒ}	q|sh| j |¡}|rhd}|j	dusdJ ‚|j	}
q|sz| j
 |¡}|rzd}t| ¡ ƒ}qd|  kr…d	krŒn n|d
7 }nd|  kr–dkrœn n|d7 }d||||fv r¦dS d|	  kr±dks´dS  dS |dk sÄ|dksÄ|dksÄ|dkrÆdS t ||
|	|||dddf	¡S )z4Implements date string parsing adhering to RFC 6265.NFr   ÚtokenTc                 s   s   � | ]}t |ƒV  qd S ri   )r�   )r-   Úsr)   r)   r/   rn   ^  s   € z(CookieJar._parse_date.<locals>.<genexpr>éF   éc   il  éE   iÐ  r   r   iA  r    r!   r"   )ÚDATE_TOKENS_REÚfinditerÚgroupÚDATE_HMS_TIME_REÚmatchÚgroupsÚDATE_DAY_OF_MONTH_REr�   ÚDATE_MONTH_REÚ	lastindexÚDATE_YEAR_REÚcalendarÚtimegm)Úclsr¢   Ú
found_timeÚ	found_dayÚfound_monthÚ
found_yearÚhourÚminuteÚsecondÚdayÚmonthÚyearÚtoken_matchr£   Ú
time_matchÚ	day_matchÚmonth_matchÚ
year_matchr)   r)   r/   rƒ   F  sd   
€
ÿ zCookieJar._parse_dateri   ©r'   rh   )r'   N)9Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚreÚcompiler¨   r«   r®   ÚIr¯   r±   r�   ÚdatetimeÚmaxÚreplaceÚtimezoneÚutcÚ	timestamprW   r²   r³   r9   ÚgmtimeÚOSErrorÚOverflowErrorrV   Úboolr   r   r   r   ÚasyncioÚAbstractEventLoopr2   r   rK   rM   r   rO   r+   rg   rl   rq   rj   Úfloatru   r   r   rŠ   rž   Ústaticmethodr`   r—   Úclassmethodrƒ   Ú__classcell__r)   r)   r=   r/   r   '   sj    ÿ

þ
ÿþúýüûúù

H7 r   c                       s¦   e Zd ZdZddœdeej ddf‡ fdd„Zdd	d
„Zde	fdd„Z
ddee ddfdd„Zdeddfdd„Zeƒ fdededdfdd„Zdeddf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(   )r1   r2   )r<   r&   r=   r)   r/   r2   Ž  rr   zDummyCookieJar.__init__rh   c                 c   s   � d S ri   r)   rp   r)   r)   r/   rl   ‘  s   €zDummyCookieJar.__iter__c                 C   rs   )Nr   r)   rp   r)   r)   r/   rq   •  ó   zDummyCookieJar.__len__rN   c                 C   ó   d S ri   r)   )r<   rN   r)   r)   r/   rO   ˜  rÜ   zDummyCookieJar.clearrZ   c                 C   rÝ   ri   r)   rf   r)   r)   r/   rg   ›  rÜ   zDummyCookieJar.clear_domainrv   rw   c                 C   rÝ   ri   r)   )r<   rv   rw   r)   r)   r/   rŠ   ž  rÜ   zDummyCookieJar.update_cookiesr‹   rŒ   c                 C   s   t ƒ S ri   )r   )r<   r‹   r)   r)   r/   rž   ¡  s   zDummyCookieJar.filter_cookiesrÄ   ri   )rÅ   rÆ   rÇ   rÈ   r   rÖ   r×   r2   rl   r�   rq   r   rO   r+   rg   r   r   rŠ   rž   rÛ   r)   r)   r=   r/   r   ‡  s    "
r   )-rÖ   r²   r“   rÌ   ÚosrC   rF   rÉ   r9   Úcollectionsr   Úhttp.cookiesr   r   r   Úmathr   Útypingr   r   r	   r
   r   r   r   r   r   r   r   Úyarlr   Úabcr   r   Úhelpersr   Útypedefsr   r   r   Ú__all__r+   Ú
CookieItemr   r   r)   r)   r)   r/   Ú<module>   s.    4  b