wce6&ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z m Z mZddlmZddlmZmZmZmZmZmZmZmZmZmZmZddlmZddlm Z m!Z!dd l"m#Z#dd l$m%Z%m&Z&m'Z'd Z(ee)d fZ*Gd de Z+Gdde Z,y)N) defaultdict) BaseCookieMorsel SimpleCookie)ceil) DefaultDictDictIterableIteratorListMappingOptionalSetTupleUnioncast)URL)AbstractCookieJarClearCookiePredicate) is_ip_address) LooseCookiesPathLikeStrOrURL) CookieJarDummyCookieJar Morsel[str]c eZdZdZej dZej dZej dZej dejZ ej dZ e e jjje j j"j%dz Z ej*ej.eedz Zd d d d ddededeeeed fde e!jDdd f fdZ#de$dd fdZ%de$dd fdZ&d0de e'dd fdZ(de)dd fdZ*d1dZ+de fdZ,d2dZ-de.de)d e)d!e)dd f d"Z/e0fd#e1d$e0dd fd%Z2e0fd&e0dd'fd(Z3e4de)d)e)defd*Z5e4d+e)d,e)defd-Z6e7d.e)de e fd/Z8xZ9S#eef$rej*d ZYe$rd ZYwxYw)3rz/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}))tzinfor) i ;r#r$r$iFTN)unsafe quote_cookietreat_as_secure_originloopr%r&r'r(returnc"t||tt|_t |_||_||_|g}nt|tr|jg}nqt|trt|jg}nF|Dcgc];}t|trt|jn|j=}}||_ ttj|_i|_ycc}wNr()super__init__rr_cookiesset_host_only_cookies_unsafe _quote_cookie isinstanceroriginstr_treat_as_secure_originrtime_next_expiration _expirations)selfr%r&r'r(url __class__s 3/usr/lib/python3/dist-packages/aiohttp/cookiejar.pyr.zCookieJar.__init__Ls d#DO E  9< ) ! )%' " . 4&<&C&C&E%F " . 4&)*@&A&H&H&J%K "2&&0S%9C!szz|K& "&(>$'+DIIK'8?A &sAD  file_pathctj|}|jd5}tj|j |tj dddy#1swYyxYw)Nwbmode)pathlibPathopenpickledumpr/HIGHEST_PROTOCOLr;r?fs r>savezCookieJar.savejsSLL+ ^^^ & C! KK q&*A*A B C C Cs 0A!!A*ctj|}|jd5}tj||_dddy#1swYyxYw)NrbrB)rDrErFrGloadr/rJs r>rOzCookieJar.loadosDLL+ ^^^ & +!"KKNDM + + +s A  A predicatec|qttj|_|jj |j j |j j yg}tj}|jjD]_\\}}}|jD]D\}}|||f} | |j vr|j | |ks ||s4|j| Fa|D]g\}}}|j j||f|||f} | |j vr|j |||f=|j||fj|di|j r8tg|j j|jdz|_y|j|_y)Nr)rr8r9r/clearr1r:itemsappenddiscardpopminvalues SUB_MAX_TIMEMAX_TIME) r;rPto_delnowdomainpathcookienamemorselkeys r>rRzCookieJar.clearts  $($5D ! MM   !  # # ) ) +    # # % iik&*mm&9&9&; ' "NVTF &  ' ftT*4,,,1B1B31G31Nv&MM#&  ' '#) : FD$  # # + +VTN ;4&Cd'''%%vtT&:; MM64. ) - -dD 9  :    ?""))+ ?T->-> ?! C  r]c2jfdy)Nc.j|dS)Nr])_is_domain_match)xr]r;s r>z(CookieJar.clear_domain..sT2261X;GrcrRr;r]s``r> clear_domainzCookieJar.clear_domains GHrcc#K|j|jjD]}|jEd{y7wN)_do_expirationr/rX)r;vals r>__iter__zCookieJar.__iter__s@ =='') $Czz| # # $ #sAA A A c&td|DS)Nc3 K|]}dyw)rN).0is r> z$CookieJar.__len__..s#1#s )sumr;s r>__len__zCookieJar.__len__s#d###rcc(|jdy)Ncy)NFrs)rgs r>rhz*CookieJar._do_expiration..srcrirxs r>rnzCookieJar._do_expirations ?#rcwhenr^r`c^t|j||_||j|||f<yrm)rWr9r:)r;r|r]r^r`s r>_expire_cookiezCookieJar._expire_cookies. #D$9$94 @2664./rccookies response_urlc|j}|js t|ryt|tr|j }|D]\}}t|t st}|||<||}|d}|jdrd}|d=|s&|$|jj||f|x}|d<|jdr |dd}||d<|r|j||s|d}|r|jds<|j}|jdsd}nd|d|jdz}||d<|d} | rL t| } t!t#j"| z|j$} |j'| |||n4|d } | r-|j+| } | r|j'| |||nd|d <||j,||f|<|j/y#t($rd|d<Y8wxYw) zUpdate cookies.Nr].rr^/zmax-ageexpires)raw_hostr2rr4r rSrrendswithr1add startswithrfr^rfindintrWr8rZr~ ValueError _parse_dater/rn)r;rrhostnamer`r_tmpr]r^max_age delta_secondsmax_age_expirationr expire_times r>update_cookieszCookieJar.update_cookiess((|| h 7  gw 'mmoG#9 9LD&ff-"n"D TH%Fs#8$h2''++Xt,<=,44)  %#)x  5 5fh G&>Dts3#((s+Da$**S/!::D!%vY'G+$'LM),TYY[=-H$--)X&''(:FD$O !+"&"2"27";K"++KtL,.y)28DMM64. )$ /s9 9v "+(*F9%+sA G((G98G9 request_urlBaseCookie[str]c |jr tn t}|js|S|j |js|St |}|j xsd}|jdv}|rV|jrJt }tjt5|j}ddd||jv}t|dD]}|j}|d}|s|j||<&|j s t#|r>||f|j$vr||k7rT|j'||sg|j)|j*|ds|r|drt-d |j/|jt1} | j3|j|j|j4| ||<|S#1swYxYw) z8Returns this jar's cookies filtered by their attributes.r)httpswssNct|dS)Nr^)len)cs r>rhz*CookieJar.filter_cookies..sQvYrc)rbr]r^securer)r3rrr/rnrrschemer7 contextlibsuppressrr5sortedrbvaluer2rr1rf_is_path_matchr^rgetrr0 coded_value) r;rfilteredr is_not_securerequest_originr_r`r]mrsl_vals r>filter_cookieszCookieJar.filter_cookiess#00LNjl }}O }}O+& ''-2#**2BB T99 UN$$Z0 6!,!3!3!5 6*$2N2NNMT'?@ &F::DH%F!'<rfzCookieJar._is_domain_match$sQ v   (3v;,/ $$S) ***rcreq_path cookie_pathc|jdsd}||k(ry|j|sy|jdry|t|d}|jdS)z.Implements path matching adhering to RFC 6265.rTFN)rrr)rrrs r>rzCookieJar._is_path_match4sg""3'H { """;/    $K 0 23 &&s++rcdate_strc X|syd}d}d}d}dx}x}}d} d} d} |jj|D]} | jd} |s;|jj | }|rd}d|j D\}}}R|s9|j j | }|rd}t|j} |s:|jj | }|rd}|jJ|j} |r|jj | }|sd}t|j} d| cxkrdkr nn| d z } nd| cxkrd krnn| d z } d||||fvryd | cxkrd ksyy| dks|dkDs |dkDs|dkDrytj| | | |||dddf S)z4Implements date string parsing adhering to RFC 6265.NFrtokenTc32K|]}t|ywrm)r)rtss r>rvz(CookieJar._parse_date.._s+PqCF+PsFcilEirr!iAr"r#r$) DATE_TOKENS_REfinditergroupDATE_HMS_TIME_REmatchgroupsDATE_DAY_OF_MONTH_REr DATE_MONTH_RE lastindex DATE_YEAR_REcalendartimegm)clsr found_time found_day found_month found_yearhourminuteseconddaymonthyear token_matchr time_match day_match month_match year_matchs r>rzCookieJar._parse_dateGs    !"""v--66x@ 3K%%g.E 1177> !%J+PJrr's9RZZ >N "rzz"BC%2::l3BJJT M 2::l+L H   ! ! ) )1B1B1F1F ) G Q Q STWXX    H-.aI3I4I$ $$$757#7S77PT7ILFlF#FRVFP145#5:K5n + + + + +,,3,4,,$=U3=U8C==U=UO Z K#8??#IJ s?"F$$G?GGrceZdZdZdddeej ddffdZddZde fdZ dd ee ddfd Z d e ddfd Zefd ededdfdZdeddfdZxZS)rzxImplements a dummy cookie storage. It can be used with the ClientSession when no cookie processing is needed. Nr,r(r)c&t||yr+)r-r.)r;r(r=s r>r.zDummyCookieJar.__init__s d#rcc# Kywrmrsrxs r>rpzDummyCookieJar.__iter__s scy)Nrrsrxs r>ryzDummyCookieJar.__len__srcrPcyrmrs)r;rPs r>rRzDummyCookieJar.clear rcr]cyrmrsrjs r>rkzDummyCookieJar.clear_domainrrcrrcyrmrs)r;rrs r>rzDummyCookieJar.update_cookiesrrcrrctSrm)r)r;rs r>rzDummyCookieJar.filter_cookiess ~rcrrm)rrrrrrrr.rprryrrRr6rkrrrrrrs@r>rrs GK$)B)B C$t$ x(<=   3 4 IL l # RV #2Crcr)-rrrrosrDrGrr8 collectionsr http.cookiesrrrmathrtypingrr r r r r rrrrryarlrabcrrhelpersrtypedefsrrr__all__r6 CookieItemrrrsrcr>rs  #99    8"66 )3 % & ^U!^UB &rc