U '7`/@sddlZddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z ddl m Z mZmZmZmZmZmZmZmZmZddlmZddlmZddlmZmZdd lmZm Z d Z!ee"d fZ#Gd d d eZ$GdddeZ%dS)N) defaultdict) BaseCookieMorsel SimpleCookie) DefaultDictDictIterableIteratorMappingOptionalSetTupleUnioncast)URL)AbstractCookieJar) is_ip_addressnext_whole_second) LooseCookiesPathLike) CookieJarDummyCookieJar Morsel[str]csxeZdZdZedZedZedZedej Z edZ e j j je jjdZe j dZd d d d eeeejd d fddZed dddZed dddZd dddZddddZedddZd dddZ e j e!e!d dd d!Z"e#fe$e#d d"d#d$Z%e#fe#e&d%d&d'd(Z'e(e!e!ed)d*d+Z)e(e!e!ed,d-d.Z*e+e!ee j d/d0d1Z,Z-S)2rz/Implements cookie storage adhering to RFC 6265.z][\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]*(?P[\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})ZtzinfoiFTN)unsafe quote_cookieloop)rrrreturncsrtj|dtt|_t|_||_||_t |_ i|_ |j |_ z|j Wntk rl|j|_ YnXdSNr)super__init__rr_cookiesset_host_only_cookies_unsafe _quote_cookier_next_expiration _expirationsMAX_TIME _max_timeZ timestamp OverflowErrorMAX_32BIT_TIME)selfrrr __class__D/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/cookiejar.pyr"9szCookieJar.__init__) file_pathrc Cs8t|}|jdd}t|j|tjW5QRXdS)Nwbmode)pathlibPathopenpickledumpr#ZHIGHEST_PROTOCOLr.r3fr1r1r2savePs zCookieJar.savec Cs2t|}|jdd}t||_W5QRXdS)Nrbr5)r7r8r9r:loadr#r<r1r1r2r@Us zCookieJar.loadrcCs*|j|jt|_|jdSN)r#clearr%rr(r)r.r1r1r2rCZs  zCookieJar.clearIterator[Morsel[str]]ccs*||jD]}|EdHqdSrB)_do_expirationr#values)r.valr1r1r2__iter__`szCookieJar.__iter__cCstdd|DS)Ncss|] }dVqdS)rNr1).0ir1r1r2 fsz$CookieJar.__len__..)sumrDr1r1r2__len__eszCookieJar.__len__c Cstjtjj}|j|krdS|js(dS|j}g}|j}|j}|D]N\\}}}||kr|| |d| ||f|j ||fqFt ||}qF|D] } || =qz|jddtjdd|_Wntk r|j|_YnXdS)Nr)Z microsecondrZseconds)datetimenowtimezoneutcr(r)r+r#itemspopappendr%discardminreplace timedeltar,) r.rQZnext_expirationZto_delcookiesZ expirationsdomainnamewhenkeyr1r1r2rFhs2   zCookieJar._do_expiration)r^r\r]rcCs t|j||_||j||f<dSrB)rXr(r))r.r^r\r]r1r1r2_expire_cookieszCookieJar._expire_cookier[ response_urlrc Cs|j}|jst|rdSt|tr*|}|D]\}}t|tsXt}|||<||}|d}|drtd}|d=|s|dk r|j ||f|}|d<| dr|dd}||d<|r| ||sq.|d}|r| ds|j }| dsd}nd|d|d}||d<|d} | rzXt| } z tjtjjtj| d } Wntk rl|j} YnX|| ||Wntk rd|d<YnXn6|d } | r|| } | r|| ||nd|d <||j||<q.|dS) zUpdate cookies.Nr\.rpath/zmax-agerOexpires)raw_hostr&r isinstancer rTrrendswithr%add startswith_is_domain_matchrerfindintrPrQrRrSrZr,r+r` ValueError _parse_dater#rF)r.r[rbhostnamer]cookieZtmpr\reZmax_ageZ delta_secondsZmax_age_expirationrgZ expire_timer1r1r2update_cookiessh           zCookieJar.update_cookies)BaseCookie[str]zSimpleCookie[str] request_urlrc Cs|t|}|jrtnt}|jp*d}|jdk}|D]}|j}|d}|s\|j||<q:|j slt |rlq:||f|j kr||krq:n| ||sq:| |j|dsq:|r|drq:td||jt}||j|j|j|||<q:|S)z8Returns this jar's cookies filtered by their attributes.rd)ZhttpsZwssr\reZsecurer)rFrr'rrrhZschemer_valuer&rr%rm_is_path_matchrergetrr$Z coded_value) r.rwZfilteredrrZ is_not_securersr]r\Zmrsl_valr1r1r2filter_cookiess6      zCookieJar.filter_cookies)r\rrrcCsD||kr dS||sdS|dt| }|ds:dSt| S)z0Implements domain matching adhering to RFC 6265.TFNrc)rjlenr)r\rr non_matchingr1r1r2rms  zCookieJar._is_domain_match)req_path cookie_pathrcCsP|dsd}||krdS||s(dS|dr6dS|t|d}|dS)z.Implements path matching adhering to RFC 6265.rfTFN)rlrjr|)r~rr}r1r1r2rys   zCookieJar._is_path_match)date_strrc Cs|sdSd}d}d}d}d}}}d} d} d} |j|D]} | d} |s||j| }|r|d}dd|D\}}}q<|s|j| }|rd}t|} q<|s|j| }|rd}|j dk st |j } q<|s<|j | }|r;sz)CookieJar._parse_date..FcilEiriA;r)DATE_TOKENS_REfinditergroupDATE_HMS_TIME_REmatchgroupsDATE_DAY_OF_MONTH_REro DATE_MONTH_RE lastindexAssertionError DATE_YEAR_RErPrRrS)clsrZ found_timeZ found_dayZ found_monthZ found_yearZhourZminutesecondZdayZmonthZyearZ token_matchrZ time_matchZ day_matchZ month_matchZ year_matchr1r1r2rq#sn        (zCookieJar._parse_date).__name__ __module__ __qualname____doc__recompilerrrIrrrPmaxrYrRrSr*Zutcfromtimestampr-boolr asyncioAbstractEventLoopr"rr>r@rCrIrorNrFstrr`rrrtrr{ staticmethodrmry classmethodrq __classcell__r1r1r/r2r"sR    N ,rcseZdZdZddeejddfddZddd d Ze dd d Z ddd dZ e fe e ddddZe ddddZZS)rzxImplements a dummy cookie storage. It can be used with the ClientSession when no cookie processing is needed. Nr )rrcstj|ddSr)r!r")r.rr/r1r2r"mszDummyCookieJar.__init__rErAccsdSrBr1rDr1r1r2rIpszDummyCookieJar.__iter__cCsdS)Nrr1rDr1r1r2rNtszDummyCookieJar.__len__cCsdSrBr1rDr1r1r2rCwszDummyCookieJar.clearracCsdSrBr1)r.r[rbr1r1r2rtzszDummyCookieJar.update_cookiesrurvcCstSrB)r)r.rwr1r1r2r{}szDummyCookieJar.filter_cookies)rrrrr rrr"rIrorNrCrrrtr{rr1r1r/r2rfs r)&rrPosr7r:r collectionsrZ http.cookiesrrrtypingrrrr r r r r rrZyarlrabcrZhelpersrrZtypedefsrr__all__rZ CookieItemrrr1r1r1r2s$ 0   F