a DOg@sJddlZddlZddlZddlZddlZddlZddlZddlZ ddl m Z gdZ dZ dZdZdZdZd Zeejjd d ejjDZd Zd ZdZedjZedjZ edZ!edZ"hdZ#d?ddZ$Gdddej%j&Z'ddZ(e'fddZ)Gdddej*Z+Gdd d Z,z ddl-Z-Wne.yDYn0Gd!d"d"e,Z/e 0d"Gd#d$d$e1Z2Gd%d&d&e2Z3Gd'd(d(e2Z4Gd)d*d*e2Z5Gd+d,d,e2Z6Gd-d.d.e2Z7Gd/d0d0e2Z8Gd1d2d2e2Z9Gd3d4d4e9Z:Gd5d6d6e9Z;Gd7d8d8e9ZGd=d>d>e?e=Z@e2ZAdS)@N)urlsplit) HTTPResponseHTTPConnection HTTPException NotConnectedUnknownProtocolUnknownTransferEncodingUnimplementedFileModeIncompleteRead InvalidURLImproperConnectionStateCannotSendRequestCannotSendHeaderResponseNotReady BadStatusLine LineTooLongRemoteDisconnectederror responsesPiZUNKNOWNZIdlezRequest-startedz Request-sentcCsi|] }||jqS)phrase).0vrr0/opt/alt/python39/lib64/python3.9/http/client.py kriids[^:\s][^:\r\n]*s\n(?![ \t])|\r(?![ \t\n])z[- ]z[-]>ZPATCHZPUTZPOSTdatac Csjz |dWStyd}z@t|j|j|j|jd|||j|j|fdWYd}~n d}~00dS)Nlatin-1z`%s (%.20r) is not valid Latin-1. Use %s.encode('utf-8') if you want to send it encoded in UTF-8.)encodeUnicodeEncodeErrorencodingobjectstartendtitle)rnameerrrrr_encodes r)c@seZdZddZdS) HTTPMessagecCsj|d}t|}g}d}|D]@}|d||krBd}n|ddsVd}|r$||q$|S)N:r)lowerlenkeysisspaceappend)selfr'nZlstZhitlinerrrgetallmatchingheaderss   z!HTTPMessage.getallmatchingheadersN)__name__ __module__ __qualname__r5rrrrr*sr*cCsXg}|td}t|tkr&td||t|tkrHtdt|dvrqTq|S)Nr, header linezgot more than %d headers  r)readline_MAXLINEr.rr1 _MAXHEADERSr)fpheadersr4rrr _read_headerss    rBcCs,t|}d|d}tjj|d|S)Nr iso-8859-1)_class)rBjoindecodeemailparserZParserZparsestr)r@rDrAZhstringrrr parse_headerss rIcseZdZd@ddZddZddZd d Zd d Zfd dZfddZ ddZ ddZ dAddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&ZdBd(d)ZdCd*d+ZdDfd,d- Zd.d/Zd0d1Zd2d3ZdEd4d5Zd6d7Zd8d9Zd:d;Zdd?Z Z!S)FrrNcCsR|d|_||_||_d|_|_t|_t|_t|_ t|_ t|_ t|_ t|_ dS)Nrb)Zmakefiler@ debuglevel_methodrAmsg_UNKNOWNversionstatusreasonchunked chunk_leftlength will_close)r2sockrKmethodurlrrr__init__s  zHTTPResponse.__init__c Cst|jtdd}t|tkr*td|jdkrBtdt||sNt dz| dd\}}}WnBt yz| dd\}}d}Wnt yd}Yn0Yn0| d s| t|z$t|}|d ks|d krt|Wnt yt|Yn0|||fS) Nr,rCz status linerzreply:z-Remote end closed connection without responsezHTTP/ri)strr@r=r>r.rrKprintreprrsplit ValueError startswith _close_connrint)r2r4rOrPrQrrr _read_statuss2      zHTTPResponse._read_statusc Cs|jdurdS|\}}}|tkr&qHt|j}|jdkrDtd|~q||_|_| |_ |dvrnd|_ n| drd|_ nt |t|j|_|_|jdkr|jD]\}}td|d|q|jd }|r|d krd |_d|_nd |_||_d|_|jd }|r`|js`zt||_WntyJd|_Yn0|jdkrfd|_nd|_|tks|tksd|krdksn|jdkrd|_|js|js|jdurd |_dS)Nrzheaders:)zHTTP/1.0zHTTP/0.9 zHTTP/1. header:r+transfer-encodingrRTFcontent-lengthrHEAD)rArdZCONTINUErBr@rKr]coderPstriprQrOrarrIrMitemsgetr-rRrS _check_closerUrTrcr`Z NO_CONTENTZ NOT_MODIFIEDrL) r2rOrPrQZskipped_headershdrvalZtr_encrTrrrbegin9sd               zHTTPResponse.begincCsv|jd}|jdkr.|r*d|vr*dSdS|jdr>dS|rRd|vrRdS|jd}|rrd|vrrdSdS)NZ connectionrfcloseTFz keep-alivezproxy-connection)rArorOr-)r2ZconnZpconnrrrrps    zHTTPResponse._check_closecCs|j}d|_|dSN)r@rt)r2r@rrrrbszHTTPResponse._close_conncs2ztW|jr.|n|jr,|0dSru)superrtr@rbr2 __class__rrrts   zHTTPResponse.closecst|jr|jdSru)rvflushr@rwrxrrrzs zHTTPResponse.flushcCsdS)NTrrwrrrreadableszHTTPResponse.readablecCs |jduSru)r@rwrrrisclosedszHTTPResponse.isclosedcCs|jdurdS|jdkr$|dS|durRt|}||}t|d|S|jr`|S|j durv|j }n4z| |j }Wnt y|Yn0d|_ ||SdS)Nrrkr) r@rLrb bytearrayreadinto memoryviewtobytesrR_readall_chunkedrTread _safe_readr )r2amtbr3srrrrs*      zHTTPResponse.readcCs|jdurdS|jdkr$|dS|jr4||S|jdur^t||jkr^t|d|j}|j|}|s||r||n&|jdur|j|8_|js||S)Nrrk) r@rLrbrR_readinto_chunkedrTr.rr~)r2rr3rrrr~s$       zHTTPResponse.readintocCsp|jtd}t|tkr$td|d}|dkrB|d|}z t|dWStyj|Yn0dS)Nr,z chunk size;r) r@r=r>r.rfindrcr`rb)r2r4irrr_read_next_chunk_sizes     z"HTTPResponse._read_next_chunk_sizecCs:|jtd}t|tkr$td|s*q6|dvrq6qdS)Nr,z trailer liner:)r@r=r>r.rr2r4rrr_read_and_discard_trailers z&HTTPResponse._read_and_discard_trailercCsj|j}|sf|dur|dz |}WntyBtdYn0|dkr`||d}||_|S)NrZrr)rSrrr`r rrb)r2rSrrr_get_chunk_left$s   zHTTPResponse._get_chunk_leftcCs`g}z6|}|durq0|||d|_qd|WStyZtd|Yn0dSNrr)rr1rrSrEr )r2valuerSrrrr<s  zHTTPResponse._readall_chunkedcCsd}t|}zv|}|dur$|WSt||krN||}|||_||WS|d|}||}||d}||7}d|_qWn&tytt|d|Yn0dSNr)rrr._safe_readintorSr bytes)r2r total_bytesmvbrSr3temp_mvbrrrrJs"         zHTTPResponse._readinto_chunkedcCsTg}|dkrJ|jt|t}|s2td|||||t|8}qd|Sr)r@rmin MAXAMOUNTr rEr1r.)r2rrchunkrrrrbs zHTTPResponse._safe_readcCsd}t|}|t|kr~tt|kr>|dt}|j|}n |j|}|shtt|d|t|||d}||7}q |Sr)rr.rr@r~r r)r2rrrrr3rrrrys      zHTTPResponse._safe_readintocCs|jdus|jdkrdS|jr(||S|jdurJ|dksD||jkrJ|j}|j|}|sh|rh|n|jdur|jt|8_|SNrkrr)r@rLrR_read1_chunkedrTread1rbr.)r2r3resultrrrrs    zHTTPResponse.read1cCs4|jdus|jdkrdS|jr(||S|j|S)Nrkr)r@rLrR _peek_chunkedpeek)r2r3rrrrs  zHTTPResponse.peekcs|jdus|jdkrdS|jr*t|S|jdurL|dksF||jkrL|j}|j|}|sj|rj|n|jdur|jt|8_|Sr)r@rLrRrvr=rTrbr.)r2limitrrxrrr=s    zHTTPResponse.readlinecCsd|}|dus|dkrdSd|kr0|ks6n|}|j|}|jt|8_|s`td|Sr)rr@rrSr.r )r2r3rSrrrrrs zHTTPResponse._read1_chunkedcCsBz |}Wnty YdS0|dur.dS|j|d|S)Nr)rr r@r)r2r3rSrrrrs  zHTTPResponse._peek_chunkedcCs |jSru)r@filenorwrrrrszHTTPResponse.filenocCsF|jdurt|j|p|}t|ts4t|ds8|Sd|SdS)N__iter__z, )rArZget_all isinstancer\hasattrrE)r2r'defaultrArrr getheaders zHTTPResponse.getheadercCs|jdurtt|jSru)rArlistrnrwrrr getheaderss zHTTPResponse.getheaderscCs|SrurrwrrrrszHTTPResponse.__iter__cCs|jSru)rArwrrrinfoszHTTPResponse.infocCs|jSru)rXrwrrrgeturls zHTTPResponse.geturlcCs|jSru)rPrwrrrgetcodeszHTTPResponse.getcode)rNN)N)r)r)r)N)"r6r7r8rYrdrsrprbrtrzr{r|rr~rrrrrrrrrr=rrrrrrrrr __classcell__rrrxrrs< !H  "     rc@s eZdZdZdZeZeZdZ dZ e ddZ e ddZ d ejd d fd d Zd7d dZddZddZddZddZddZddZddZddZd8d d!Zd9d"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Z d:dd.d/d0Z!d ifdd.d1d2Z"d3d4Z#d5d6Z$d S);rrfzHTTP/1.1r,rcCs t|tjSru)rio TextIOBase)streamrrr _is_textIO%szHTTPConnection._is_textIOcCsd|dur|tvrdSdSt|dr*dSzt|}|jWStyLYn0t|tr`t|SdS)Nrr) upper_METHODS_EXPECTING_BODYrrnbytes TypeErrorrr\r.)bodyrWZmvrrr_get_content_length+s    z"HTTPConnection._get_content_lengthN cCsn||_||_||_d|_g|_d|_t|_d|_d|_ d|_ i|_ | ||\|_ |_||j tj|_dSru)timeoutsource_address blocksizerV_buffer_HTTPConnection__response_CS_IDLE_HTTPConnection__staterL _tunnel_host _tunnel_port_tunnel_headers _get_hostporthostport_validate_hostsocketZcreate_connection_create_connection)r2rrrrrrrrrYKs zHTTPConnection.__init__cCs<|jrtd|||\|_|_|r.||_n |jdS)Nz.Can't set up tunnel for established connection)rV RuntimeErrorrrrrclear)r2rrrArrr set_tunnelas zHTTPConnection.set_tunnelcCs|dur|d}|d}||krzt||dd}WnFty||dddkrf|j}ntd||ddYn0|d|}n|j}|r|ddkr|ddkr|dd}||fS) Nr+]r,r[znonnumeric port: '%s'r[r)rfindrcr` default_portr )r2rrrjrrrrys    zHTTPConnection._get_hostportcCs ||_dSru)rK)r2levelrrrset_debuglevelszHTTPConnection.set_debuglevelc Cs d|jd|jf}|g}|jD]$\}}||d|ddq&|d|d|~|j|j |j d}| \}}}|t j jkr|td |d ||jtd } t| tkrtd | sq| d vrq|jdkrtd| qdS)NsCONNECT %s:%d HTTP/1.0 asciiz:  rr;rrWzTunnel connection failed:  r,r9r:rrg)rr rrrnr1sendrEresponse_classrVrLrdhttp HTTPStatusZOKrtOSErrorrmr@r=r>r.rrKr]rF) r2connectrAheaderrresponserOrlmessager4rrr_tunnels.    zHTTPConnection._tunnelc Csz||j|jf|j|j|_z|jtjtj dWn2t yf}z|j t j krRWYd}~n d}~00|j rv|dS)Nr,)rrrrrrVZ setsockoptrZ IPPROTO_TCPZ TCP_NODELAYrerrnoZ ENOPROTOOPTrrr2errrrs zHTTPConnection.connectcCsZt|_z4|j}|r d|_|W|j}|rVd|_|n|j}|rTd|_|0dSru)rrrVrtr)r2rVrrrrrts  zHTTPConnection.closecCs|jdur |jr|nt|jdkr8tdt|t|dr|jdkrTtd||}|rt|jdkrttd| |j }|sq|r| d}|j |qtdSz|j |WnHt yt|tjjr|D]}|j |qnt dt|Yn0dS)Nrzsend:rsendIng a read()ableencoding file using iso-8859-1rCz9data should be a bytes-like object or an iterable, got %r)rV auto_openrrrKr]r^rrrrr Zsendallrr collectionsabcIterabletype)r2rr datablockdrrrrs8         zHTTPConnection.sendcCs|j|dSru)rr1)r2rrrr_outputszHTTPConnection._outputccs^|jdkrtd||}|r2|jdkr2td||j}|sDqZ|rR|d}|Vq2dS)NrrrrC)rKr]rrrr )r2r{r rrrr_read_readables    zHTTPConnection._read_readableFc Cs|jdd|j}|jdd=|||durt|drN||}nVz t|WnBtyz t|}Wn"tytdt |Yn0Yn0|f}|D]R}|s|j dkrt dq|r|j dkrt |dd d |d}||q|r|j dkr|d dS) N)rrr;rzAmessage_body should be a bytes-like object or an iterable, got %rrzZero length chunk ignoredrfXrrs0 )rextendrErrrrriterrrKr] _http_vsnr.r )r2 message_bodyencode_chunkedrMZchunksrrrr _send_outputs:             zHTTPConnection._send_outputc Cs|jr|jrd|_|jtkr(t|_n t|j||||_|pHd}||d|||j f}| | ||j dkr|sd}| drt|\}}}}}|rz|d}Wnty|d}Yn0|d|n|jr|j} |j} n |j} |j} z| d} Wnty0| d} Yn0| d d krNd | d } | |jkrh|d| n| d} |dd | | f|s|ddndS)N/z%s %s %srfr[rrZidnaZHostr+r[]z%s:%szAccept-EncodingZidentity)rr|rr_CS_REQ_STARTEDr _validate_methodrL_validate_path _http_vsn_strr_encode_requestrrarr r! putheaderrrrrrrrF) r2rWrX skip_hostskip_accept_encodingrequestZnetlocZnilZ netloc_encrrZhost_encrrr putrequest=sP             zHTTPConnection.putrequestcCs |dS)Nr)r )r2rrrrrszHTTPConnection._encode_requestcCs,t|}|r(td|d|ddS)Nz)method can't contain control characters.  (found at least ))$_contains_disallowed_method_pchar_researchr`group)r2rWmatchrrrrs zHTTPConnection._validate_methodcCs,t|}|r(td|d|ddSNz&URL can't contain control characters. rr!_contains_disallowed_url_pchar_rerr r)r2rXr rrrrs   zHTTPConnection._validate_pathcCs,t|}|r(td|d|ddSr r )r2rr rrrrs   zHTTPConnection._validate_hostcGs|jtkrtt|dr$|d}t|s:td|ft|}t|D]\\}}t|drl|d||<nt |t rt |d||<t ||rJtd||fqJd |}|d|}||dS)Nr rzInvalid header name %rrzInvalid header value %rs s: )rrrrr _is_legal_header_namer`r enumeraterrcr\_is_illegal_header_valuerEr)r2rvaluesrZ one_valuerrrrrs"        zHTTPConnection.putheaderrcCs*|jtkrt|_nt|j||ddS)Nr)rr _CS_REQ_SENTrr)r2rrrrr endheaderss zHTTPConnection.endheaderscCs||||||dSru) _send_request)r2rWrXrrArrrrrszHTTPConnection.requestc Cstdd|D}i}d|vr&d|d<d|vr6d|d<|j||fi|d|vrd |vrd }|||}|dur|dur|jd krtd |d }|ddq|dt|nd }|D]\} } || | qt|trt |d}|j ||ddS)Ncss|]}|VqdSru)r-)rkrrr rz/HTTPConnection._send_request..rr,rzaccept-encodingrrirhFrzUnable to determine size of %rTzTransfer-EncodingrRzContent-Lengthrr) frozensetrrrKr]rr\rnrr)r) r2rWrXrrArZ header_namesZskipsZcontent_lengthrqrrrrrs0      zHTTPConnection._send_requestcCs|jr|jrd|_|jtks&|jr0t|j|jdkrR|j|j|j|jd}n|j|j|jd}zLz | Wnt y| Yn0t |_|j r| n||_|WS| Yn0dS)Nrr)rr|rrrrKrrVrLrsConnectionErrorrtrrU)r2rrrr getresponse5s.      zHTTPConnection.getresponse)NN)NF)FF)N)%r6r7r8rrrr HTTP_PORTrrrK staticmethodrrr_GLOBAL_DEFAULT_TIMEOUTrYrrrrrrtrrrrrrrrrrrrrrrrrrrsJ     & 6    .rcsDeZdZeZdddejdfddddfdd ZfddZZ S)HTTPSConnectionNr)contextcheck_hostnamerc stt|j||||| d|dus2|dus2|durHddl} | dtd||_||_|durtt }|j durtd|_ |j tj k} |dur|j }|r| std|s|r||||j durd|_ ||_|dur||j_ dS)N)rrzTkey_file, cert_file and check_hostname are deprecated, use a custom context instead.rZTzMcheck_hostname needs a SSL context with either CERT_OPTIONAL or CERT_REQUIRED)rvrrYwarningswarnDeprecationWarningkey_file cert_filesslZ_create_default_https_contextZpost_handshake_authZ verify_modeZ CERT_NONErr`Zload_cert_chain_context) r2rrr#r$rrrrrr Z will_verifyrxrrrYs:    zHTTPSConnection.__init__cs6t|jr|j}n|j}|jj|j|d|_dS)N)server_hostname)rvrrrr&Z wrap_socketrV)r2r'rxrrrs  zHTTPSConnection.connect) r6r7r8 HTTPS_PORTrrrrYrrrrrxrrys$rc@s eZdZdS)rNr6r7r8rrrrrsrc@s eZdZdS)rNr)rrrrrsrc@s eZdZdS)r Nr)rrrrr sr c@seZdZddZdS)rcCs|f|_||_dSru)argsrO)r2rOrrrrYszUnknownProtocol.__init__Nr6r7r8rYrrrrrsrc@s eZdZdS)rNr)rrrrrsrc@s eZdZdS)r Nr)rrrrr sr c@s$eZdZdddZddZejZdS)r NcCs|f|_||_||_dSru)r*partialexpected)r2r,r-rrrrYszIncompleteRead.__init__cCs2|jdurd|j}nd}d|jjt|j|fS)Nz, %i more expectedr[z%s(%i bytes read%s))r-ryr6r.r,rrrr__repr__s    zIncompleteRead.__repr__)N)r6r7r8rYr.r#__str__rrrrr s r c@s eZdZdS)r Nr)rrrrr sr c@s eZdZdS)r Nr)rrrrr sr c@s eZdZdS)rNr)rrrrrsrc@s eZdZdS)rNr)rrrrrsrc@seZdZddZdS)rcCs|s t|}|f|_||_dSru)r^r*r4rrrrrYszBadStatusLine.__init__Nr+rrrrrsrc@seZdZddZdS)rcCst|dt|fdS)Nz&got more than %d bytes when reading %s)rrYr>)r2Z line_typerrrrYszLineTooLong.__init__Nr+rrrrrsrc@seZdZddZdS)rcOs(t|dtj|g|Ri|dS)Nr[)rrYConnectionResetError)r2poskwrrrrYs zRemoteDisconnected.__init__Nr+rrrrrsr)r)BZ email.parserrGZ email.messagerrrrercollections.abcrZ urllib.parser__all__rr(rNrrrglobalsupdater __members__rrrr>r?compile fullmatchr rrr rrr)rZMessager*rBrIBufferedIOBaserrr% ImportErrorrr1 Exceptionrrr rrr r r r rrrrr0rrrrrrGsx       .] 8