B /RoA@sfddlZddlZddlZddlZddlZddlZddlZddl m Z ddddddd d d d d dddddddgZ dZ dZ dZdZdZdZeejjddejjDZdZdZdZed jZed!jZed"Z ed#Z!d$d%d&hZ"dBd(d)Z#Gd*d+d+ej$j%Z&d,d-Z'e&fd.d/Z(Gd0ddej)Z*Gd1ddZ+y ddl,Z,Wne-k r`YnXGd2d3d3e+Z.e /d3Gd4dde0Z1Gd5dde1Z2Gd6d d e1Z3Gd7dde1Z4Gd8dde1Z5Gd9d d e1Z6Gd:d d e1Z7Gd;d d e1Z8Gddde8Z;Gd?dde1Ze<Z?e1Z@dS)CN)urlsplit HTTPResponseHTTPConnection HTTPException NotConnectedUnknownProtocolUnknownTransferEncodingUnimplementedFileModeIncompleteRead InvalidURLImproperConnectionStateCannotSendRequestCannotSendHeaderResponseNotReady BadStatusLine LineTooLongRemoteDisconnectederror responsesPiZUNKNOWNZIdlezRequest-startedz Request-sentcCsi|] }|j|qS)phrase).0vrr./opt/alt/python37/lib/python3.7/http/client.py jsriids[^:\s][^:\r\n]*s\n(?![ \t])|\r(?![ \t\n])z[- ]z[-]ZPATCHZPOSTZPUTdatac Csfy |dStk r`}z8t|j|j|j|jd|||j|j|fdWdd}~XYnXdS)Nzlatin-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) HTTPMessagecCsn|d}t|}g}d}xL|D]@}|d||krDd}n|ddsXd}|r&||q&W|S)N:r)lowerlenkeysisspaceappend)selfr%nZlstZhitlinerrrgetallmatchingheaderss z!HTTPMessage.getallmatchingheadersN)__name__ __module__ __qualname__r3rrrrr(sr(cCs\g}xR|td}t|tkr(td||t|tkrJtdt|dkrPqW|S)Nr*z header linezgot more than %d headers)s  )readline_MAXLINEr,rr/ _MAXHEADERSr)fpheadersr2rrr _read_headerss    r>cCs,t|}d|d}tjj|d|S)Nr8z iso-8859-1)_class)r>joindecodeemailparserZParserZparsestr)r<r?r=Zhstringrrr parse_headerss rDcseZdZd@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_methodr=msg_UNKNOWNversionstatusreasonchunked chunk_leftlength will_close)r0sockrFmethodurlrrr__init__s  zHTTPResponse.__init__c Cst|jtdd}t|tkr*td|jdkrBtdt||sNt dy| dd\}}}WnFt k ry| dd\}}d}Wnt k rd}YnXYnX| d s| t|y$t|}|d ks|d krt|Wnt k rt|YnX|||fS) Nr*z iso-8859-1z status linerzreply:z-Remote end closed connection without responsezHTTP/ri)strr<r9r:r,rrFprintreprrsplit ValueError startswith _close_connrint)r0r2rJrKrLrrr _read_statuss2    zHTTPResponse._read_statusc Cs|jdk rdSx<|\}}}|tkr(Pt|j}|jdkrFtd|~qW||_|_| |_ |dkrrd|_ n| drd|_ nt |t|j|_|_|jdkrx&|jD]\}}td|d|qW|jd }|r|d krd |_d|_nd |_||_d|_|jd }|jd }|rv|jsvyt||_Wntk r`d|_YnX|jdkr|d|_nd|_|tks|tksd|krdksn|jdkrd|_|js|js|jdkrd |_dS)Nrzheaders:)zHTTP/1.0zHTTP/0.9 zHTTP/1. zheader:r)ztransfer-encodingrMTFzcontent-lengthrHEAD)r=r_ZCONTINUEr>r<rFrXcoderKstriprLrJr\rrDrHitemsgetr+rMrN _check_closerPrOr^r[Z NO_CONTENTZ NOT_MODIFIEDrG) r0rJrKrLZskipped_headershdrvalZtr_encrOrrrbegin8s\                zHTTPResponse.begincCsv|jd}|jdkr.|r*d|kr*dSdS|jdr>dS|rRd|krRdS|jd}|rrd|krrdSdS)NZ connectionracloseTFz keep-alivezproxy-connection)r=rgrJr+)r0ZconnZpconnrrrrhs    zHTTPResponse._check_closecCs|j}d|_|dS)N)r<rl)r0r<rrrr]szHTTPResponse._close_conncs$ztWd|jr|XdS)N)superrlr<r])r0) __class__rrrlszHTTPResponse.closecst|jr|jdS)N)rmflushr<)r0)rnrrros zHTTPResponse.flushcCsdS)NTr)r0rrrreadableszHTTPResponse.readablecCs |jdkS)N)r<)r0rrrisclosedszHTTPResponse.isclosedcCs|jdkrdS|jdkr$|dS|dk rRt|}||}t|d|S|jr`|S|j dkrv|j }n6y| |j }Wnt k r|YnXd|_ ||SdS)Nr8rcr) r<rGr] bytearrayreadinto memoryviewtobytesrM_readall_chunkedrOread _safe_readr )r0amtbr1srrrrws*     zHTTPResponse.readcCs|jdkrdS|jdkr$|dS|jr4||S|jdk r^t||jkr^t|d|j}|j|}|s||r||n&|jdk r|j|8_|js||S)Nrrc) r<rGr]rM_readinto_chunkedrOr,rtrs)r0rzr1rrrrss$       zHTTPResponse.readintocCsp|jtd}t|tkr$td|d}|dkrB|d|}y t|dStk rj|YnXdS)Nr*z chunk size;r) r<r9r:r,rfindr^r[r])r0r2irrr_read_next_chunk_sizes    z"HTTPResponse._read_next_chunk_sizecCs>x8|jtd}t|tkr&td|s,P|dkrPqWdS)Nr*z trailer line)s r7r8)r<r9r:r,r)r0r2rrr_read_and_discard_trailers z&HTTPResponse._read_and_discard_trailercCsl|j}|sh|dk r|dy |}Wntk rDtdYnX|dkrb||d}||_|S)NrUr8r)rNrxrr[r rr])r0rNrrr_get_chunk_left&s  zHTTPResponse._get_chunk_leftcCsdg}y8x,|}|dkrP|||d|_qWd|Stk r^td|YnXdS)Nrr8)rr/rxrNr@r )r0valuerNrrrrv>s  zHTTPResponse._readall_chunkedcCsd}t|}yvxp|}|dkr$|St||krL||}|||_||S|d|}||}||d}||7}d|_qWWn(tk rtt|d|YnXdS)Nr)rtrr,_safe_readintorNr bytes)r0rz total_bytesmvbrNr1temp_mvbrrrr|Ls$      zHTTPResponse._readinto_chunkedcCsXg}xH|dkrL|jt|t}|s4td|||||t|8}qWd|S)Nrr8)r<rwmin MAXAMOUNTr r@r/r,)r0ryr{chunkrrrrxds  zHTTPResponse._safe_readcCsd}t|}xt|t|krtt|kr@|dt}|j|}n |j|}|sjtt|d|t|||d}||7}qW|S)Nr)rtr,rr<rsr r)r0rzrrrr1rrrr{s     zHTTPResponse._safe_readintocCs|jdks|jdkrdS|jr(||S|jdk rJ|dksD||jkrJ|j}|j|}|sh|rh|n|jdk r|jt|8_|S)Nrcr8r)r<rGrM_read1_chunkedrOread1r]r,)r0r1resultrrrrs    zHTTPResponse.read1cCs4|jdks|jdkrdS|jr(||S|j|S)Nrcr8)r<rGrM _peek_chunkedpeek)r0r1rrrrs  zHTTPResponse.peekcs|jdks|jdkrdS|jr*t|S|jdk rL|dksF||jkrL|j}|j|}|sj|rj|n|jdk r|jt|8_|S)Nrcr8r)r<rGrMrmr9rOr]r,)r0limitr)rnrrr9s    zHTTPResponse.readlinecCsd|}|dks|dkrdSd|kr0|ks6n|}|j|}|jt|8_|s`td|S)Nrr8)rr<rrNr,r )r0r1rNrwrrrrs zHTTPResponse._read1_chunkedcCsBy |}Wntk r dSX|dkr.dS|j|d|S)Nr8)rr r<r)r0r1rNrrrrs zHTTPResponse._peek_chunkedcCs |jS)N)r<fileno)r0rrrrszHTTPResponse.filenocCsF|jdkrt|j|p|}t|ts4t|ds8|Sd|SdS)N__iter__z, )r=rZget_all isinstancerWhasattrr@)r0r%defaultr=rrr getheaders zHTTPResponse.getheadercCs|jdkrtt|jS)N)r=rlistrf)r0rrr getheaderss zHTTPResponse.getheaderscCs|S)Nr)r0rrrrszHTTPResponse.__iter__cCs|jS)N)r=)r0rrrinfoszHTTPResponse.infocCs|jS)N)rS)r0rrrgeturl s zHTTPResponse.geturlcCs|jS)N)rK)r0rrrgetcodeszHTTPResponse.getcode)rNN)N)r)r)r)N)"r4r5r6rTr_rkrhr]rlrorprqrwrsrrrrvr|rxrrrr9rrrrrrrrr __classcell__rr)rnrrs< !K  "     c@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);rrazHTTP/1.1r*rcCs t|tjS)N)rio TextIOBase)streamrrr _is_textIO'szHTTPConnection._is_textIOcCsd|dkr|tkrdSdSt|dr*dSyt|}|jStk rLYnXt|tr`t|SdS)Nrrw) upper_METHODS_EXPECTING_BODYrrtnbytes TypeErrorrrWr,)bodyrRZmvrrr_get_content_length-s   z"HTTPConnection._get_content_lengthNi cCsn||_||_||_d|_g|_d|_t|_d|_d|_ d|_ i|_ | ||\|_ |_||j tj|_dS)N)timeoutsource_address blocksizerQ_buffer_HTTPConnection__response_CS_IDLE_HTTPConnection__staterG _tunnel_host _tunnel_port_tunnel_headers _get_hostporthostport_validate_hostsocketZcreate_connection_create_connection)r0rrrrrrrrrTMs zHTTPConnection.__init__cCs<|jrtd|||\|_|_|r.||_n |jdS)Nz.Can't set up tunnel for established connection)rQ RuntimeErrorrrrrclear)r0rrr=rrr set_tunnelcs zHTTPConnection.set_tunnelcCs|dkr|d}|d}||kryt||dd}WnHtk r||dddkrh|j}ntd||ddYnX|d|}n|j}|r|ddkr|ddkr|dd}||fS) Nr)]r*rVznonnumeric port: '%s'r[r)rfindr^r[ default_portr )r0rrrjrrrr{s   zHTTPConnection._get_hostportcCs ||_dS)N)rF)r0levelrrrset_debuglevelszHTTPConnection.set_debuglevelc Csd|j|jf}|d}||x6|jD](\}}d||f}|d}||q0W|d|j|j|jd}| \}} } | t j j kr| td| | fxP|jtd} t| tkrtd | sP| d krP|jd krtd | qWdS) NzCONNECT %s:%d HTTP/1.0 asciiz%s: %s zlatin-1s )rRzTunnel connection failed: %d %sr*z header line)s r7r8rzheader:)rrrsendrrfresponse_classrQrGr_http HTTPStatusZOKrlOSErrorrer<r9r:r,rrFrXrA) r0Z connect_strZ connect_bytesheaderrZ header_strZ header_bytesresponserJrdmessager2rrr_tunnels2         zHTTPConnection._tunnelcCsB||j|jf|j|j|_|jtjtj d|j r>| dS)Nr*) rrrrrrQZ setsockoptrZ IPPROTO_TCPZ TCP_NODELAYrr)r0rrrconnects zHTTPConnection.connectcCsBt|_z|j}|r d|_|Wd|j}|rsz/HTTPConnection._send_request..rr*rzaccept-encodingrzcontent-lengthztransfer-encodingFrzUnable to determine size of %rTzTransfer-EncodingrMzContent-Lengthr)r) frozensetrrrFrXrrWrfrr'r) r0rRrSrr=rZ header_namesZskipsZcontent_lengthrirrrrrs0      zHTTPConnection._send_requestcCs|jr|jrd|_|jtks&|jr0t|j|jdkrR|j|j|j|jd}n|j|j|jd}yLy | Wnt k r| YnXt |_|j r| n||_|S| YnXdS)Nr)rR)rrqrrrrFrrQrGrkConnectionErrorrlrrP)r0rrrr getresponse1s,      zHTTPConnection.getresponse)NN)NF)FF)N)%r4r5r6rrrr HTTP_PORTrrrF staticmethodrrr_GLOBAL_DEFAULT_TIMEOUTrTrrrrrrlrrrrrrrrrrrrrrrrrrrs@    & 6 ~  .csDeZdZeZdddejdfddddfdd ZfddZZ S)HTTPSConnectionNi )contextcheck_hostnamerc stt|j||||| d|dk s2|dk s2|dk rHddl} | dtd||_||_|dkrtt }|j dk rtd|_ |j tj k} |dkr|j }|r| std|s|r||||j dk rd|_ ||_|dk r||j_ dS)N)rrzTkey_file, cert_file and check_hostname are deprecated, use a custom context instead.rUTzMcheck_hostname needs a SSL context with either CERT_OPTIONAL or CERT_REQUIRED)rmrrTwarningswarnDeprecationWarningkey_file cert_filesslZ_create_default_https_contextZpost_handshake_authZ verify_modeZ CERT_NONErr[Zload_cert_chain_context) r0rrrr rrrrrrZ will_verify)rnrrrT|s4    zHTTPSConnection.__init__cs6t|jr|j}n|j}|jj|j|d|_dS)N)server_hostname)rmrrrr Z wrap_socketrQ)r0r )rnrrrs   zHTTPSConnection.connect) r4r5r6 HTTPS_PORTrrrrTrrrr)rnrrus !rc@s eZdZdS)rN)r4r5r6rrrrrsc@s eZdZdS)rN)r4r5r6rrrrrsc@s eZdZdS)r N)r4r5r6rrrrr sc@seZdZddZdS)rcCs|f|_||_dS)N)argsrJ)r0rJrrrrTszUnknownProtocol.__init__N)r4r5r6rTrrrrrsc@s eZdZdS)rN)r4r5r6rrrrrsc@s eZdZdS)r N)r4r5r6rrrrr sc@s&eZdZdddZddZddZdS) r NcCs|f|_||_||_dS)N)rpartialexpected)r0rrrrrrTszIncompleteRead.__init__cCs2|jdk rd|j}nd}d|jjt|j|fS)Nz, %i more expectedrVz%s(%i bytes read%s))rrnr4r,r)r0errr__repr__s   zIncompleteRead.__repr__cCst|S)N)rY)r0rrr__str__szIncompleteRead.__str__)N)r4r5r6rTrrrrrrr s c@s eZdZdS)r N)r4r5r6rrrrr sc@s eZdZdS)r N)r4r5r6rrrrr sc@s eZdZdS)rN)r4r5r6rrrrrsc@s eZdZdS)rN)r4r5r6rrrrrsc@seZdZddZdS)rcCs|s t|}|f|_||_dS)N)rYrr2)r0r2rrrrTszBadStatusLine.__init__N)r4r5r6rTrrrrrsc@seZdZddZdS)rcCst|dt|fdS)Nz&got more than %d bytes when reading %s)rrTr:)r0Z line_typerrrrTszLineTooLong.__init__N)r4r5r6rTrrrrrsc@seZdZddZdS)rcOs"t|dtj|f||dS)NrV)rrTConnectionResetError)r0poskwrrrrTs zRemoteDisconnected.__init__N)r4r5r6rTrrrrrs)r)AZ email.parserrBZ email.messagerrrerZcollections.abcrZ urllib.parser__all__rr rIrrrglobalsupdater __members__rrrr:r;compile fullmatchrrrrrrr'rZMessager(r>rDBufferedIOBaserrr  ImportErrorrr/ Exceptionrrr rrr r r r rrrrrrrrrrrGs        1W 8