wcewFUddlZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z m Z ddl Z ddlmZddlmZddlmZddlmZmZddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"dd l#m$Z$dd l%m&Z&m'Z'dd l(m)Z)m*Z*dd l+m,Z,m-Z-dd l.m/Z/ddl0m1Z1ejddk\rddlZ3nddl3Z3dZ4dZ5ee6e7d<e jpdddGddZ9Gdde1Z:y)N)AnyFinalIterableOptionalTuplecast) CIMultiDict)hdrs)AbstractStreamWriter) call_later set_result) WS_CLOSED_MESSAGEWS_CLOSING_MESSAGEWS_KEYWebSocketErrorWebSocketReaderWebSocketWriter WSCloseCode WSMessage WSMsgType ws_ext_gen ws_ext_parse) ws_logger) EofStreamFlowControlDataQueue) JSONDecoder JSONEncoder)HTTPBadRequest HTTPException) BaseRequest)StreamResponse) )WebSocketResponseWebSocketReadyrTHRESHOLD_CONNLOST_ACCESST) auto_attribsfrozenslotsc4eZdZUeed<eeed<defdZy)r&okprotocolreturnc|jSN)r-selfs 0/usr/lib/python3/dist-packages/aiohttp/web_ws.py__bool__zWebSocketReady.__bool__6s wwN)__name__ __module__ __qualname__bool__annotations__rstrr5r6r4r&r&1s Hsm$r6r&ceZdZdZdddddddddded eed ed ed eed eedede ddffdZ dAdZ dAdZ dAdZ dAdZdedeffd ZdededeeeffdZdedeeeffdZdedededdfdZdedefdZedefdZedee fd Zedeefd!Zedefd"ZdBd#ed$edefd%Zdee fd&Z!dCd(e"ddfd)Z#dCd(e"ddfd*Z$dBd+edeeddfd,Z%dBd+e"deeddfd-Z& dBe'jPd.d+edeed/e)ddfd0Z*dAd1Z+e,jZd'd2d3e d(e"defd4Z.dBdeede/fd5Z0dd6deedefd7Z1dd6deede"fd8Z2e'jfdd9d:e4deedefd;Z5d+e"ddfd<Z6dDd=Z7de/fd>Z8d?e ddfd@Z9xZ:S)Er%Fg$@NTr=i@)timeoutreceive_timeout autocloseautoping heartbeat protocolscompress max_msg_sizer?r@rArBrCrDrErFr/cVt |d||_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ ||_ ||_||_||_||_d|_| |dz |_d|_||_||_y)Ne)statusFrg@)super__init__ _protocols _ws_protocol_writer_reader_closed_closing _conn_lost _close_code_loop_waiting _exception_timeout_receive_timeout _autoclose _autoping _heartbeat _heartbeat_cb_pong_heartbeat_pong_response_cb _compress _max_msg_size) r3r?r@rArBrCrDrErF __class__s r4rKzWebSocketResponse.__init__>s $#+/26 BF   *.:> 8< 37 /#!#<@  #,s?D @D!)r6c|j!|jjd|_|j"|jjd|_yyr1)r^cancelr\r2s r4_cancel_heartbeatz#WebSocketResponse._cancel_heartbeatbsS  ! ! -  " " ) ) +%)D "    )    % % '!%D  *r6c|j|jm|jJt|j|j|j|j |j j jnd|_yyNr')timeout_ceil_threshold) rdr[rTr _send_heartbeat_req _protocol_timeout_ceil_thresholdr\r2s r4_reset_heartbeatz"WebSocketResponse._reset_heartbeatkss  ?? &::) ))!+$$ 99((,yy':':'R'R "D  'r6c|j|js|jJ|jj|jj |j |j jt|j|j|j|j |jjjnd|_yyyrf)r[rPrT create_taskrNpingr^rcr _pong_not_receivedr]rirjrkr2s r4rhz!WebSocketResponse._send_heartbeatys ?? &t||::) )) JJ " "4<<#4#4#6 7%%1&&--/%/''$$ 99((,yy':':'R'R &D "0< &r6c|jq|jjZd|_tj|_t j|_|jjjyyy)NT) ri transportrPrABNORMAL_CLOSURErSasyncio TimeoutErrorrVcloser2s r4rpz$WebSocketResponse._pong_not_receiveds_ 99 TYY%8%8%DDL*;;D %224DO II   % % ' &E r6requestcK|j |jS|j|\}}t| |d{}|J|j ||||j d{|S757wr1)_payload_writer _pre_startrJprepare _post_startdrain)r3rwr.writerpayload_writerras r4r{zWebSocketResponse.prepares    +'' '??73&$ww77))) (F3""$$$ 8 %s#?A<A8.A<1A:2A<:A<zCIMultiDict[str]c|j}d|jtjdj j k7r8t dj|jtjd|jtjdj vr8t dj|jtjd}tj|vr|tjjdDcgc]}t|j }}|D]}||jvs|}n"tjd||j|jtjd}|d vrt d ||jtj } |r!t#t%j&|d k7rt d | t%j,t/j0|j3t4zj7j9}t;tjdtjdtj<|i} d } d} |j>rR|jtj@} tC| d\} } | r!tE| d| } | | tj@<|r|| tj<| || | fScc}w#t(j*$rt d |dwxYw)N websocketz@No WebSocket UPGRADE hdr: {} Can "Upgrade" only to "WebSocket".)textupgradezNo CONNECTION upgrade hdr: {},u8Client protocols %r don’t overlap server-known ones %r)1387zUnsupported version: zHandshake error: FrT)isserver)rErserver_notakeover)#headersgetr UPGRADElowerstriprformat CONNECTIONSEC_WEBSOCKET_PROTOCOLsplitr<rLrwarningSEC_WEBSOCKET_VERSIONSEC_WEBSOCKET_KEYlenbase64 b64decodebinasciiError b64encodehashlibsha1encoderdigestdecoder SEC_WEBSOCKET_ACCEPTr_SEC_WEBSOCKET_EXTENSIONSrr)r3rwrr.proto req_protocolsversionkey accept_valresponse_headers notakeoverrE extensions enabledexts r4 _handshakezWebSocketResponse._handshakes// '++dllB7==?EEG G 5&T\\23   GKK<BBD D 4;;KK0   & &' 1%T%@%@AGGLEKKM"M ' DOO+$H  !!N!OO++d88"= * * (=gY&GH Hkk$001 M#f..s34:$,=cW*EFF; %% LL. / 6 6 8 &( ' k)):    >> T%B%BCJ$0 T#J Hj'%  CM !>!>? N$$  N''g66r6c|jSr1)rVr2s r4 exceptionzWebSocketResponse.exception=s r6r6messagecK|j td|jj|d{y7wNCall .prepare() first)rNrror3rs r4rozWebSocketResponse.ping@s4 << 67 7ll(((6A>AcK|j td|jj|d{y7wr)rNrpongrs r4rzWebSocketResponse.pongEs4 << 67 7ll(((rdatacK|j tdt|tst dt |z|jj |d|d{y7w)Nrzdata argument must be str (%r)FbinaryrE)rNr isinstancer< TypeErrortypesendr3rrEs r4send_strzWebSocketResponse.send_strKsZ << 67 7$$?ADJNO OllTHEEEsA+A5-A3.A5)dumpsrcRK|j|||d{y7w)Nr)r)r3rrErs r4 send_jsonzWebSocketResponse.send_jsonYs"mmE$K(m;;;s '%'cK|jry|j td|jd{d|_y7 w)NzResponse has not been startedT) _eof_sentryrrvr2s r4 write_eofzWebSocketResponse.write_eofbsC >>     '>? ?jjl s8A A A )coderrc$K|j td|j|j}|J|j6|j s*|j td|jd{|j s d|_ |jj||d{|j}|J|jd{|j&ry|j}|J t)j*|j,4d{|j/d{}dddd{j0t2j4k(r|j6|_ytj|_tj|_yy7377#tjtjf$rtj|_t"$r&}tj|_||_Yd}~yd}~wwxYw777#1d{7swYxYw#tj$rtj|_t"$r&}tj|_||_Yd}~yd}~wwxYww)NrrTF)rNrrdrOrUrP feed_datarrvryr}rtCancelledErrorrurrsrS ExceptionrVrQ async_timeoutr?rWreadrrCLOSEr)r3rrreaderr~excmsgs r4rvzWebSocketResponse.closeks( << 67 7  !!! == $T\\   / 3--  ||DL ll((w777--)))lln$$}}\\F% %% (00?.. & -C..xx9??*#&88 *;;D %224DOS 8%**G,@,@A #.#?#?  #.#?#? "% .-....)) #.#?#?  #.#?#? "% sA5J7F*8JF10F-1'F1F/F1J;#H6HH6"H!6H7H!; H6HH6 A J-F1/F11AH2HJHJH6H!H6!H3'H* (H3/H661J 'JJJ  JcK|j td|j}|J |j td|jr9|xj dz c_|j t k\r tdtS|jrtS |j|_ tj|xs |j4d{|jjd{}dddd{|j|j}t!|dd|_ jDt6jFk(rJd|_|jH|_|js$|jJr|j3d{|S|jDt6jLk(r d|_|S|jDt6jNk(r1|jPr%|jS|jHd{|jDt6jTk(r|jPr|S7o7P7C#1d{7swYTxYw#|j}t!|dd|_wxYw#t"j$t"j&f$rt(j*|_t.$rLt(j0|_|j3d{7t5t6j8ddcYSt:$r[}|j<|_|j3|j<d{7t5t6j>|dcYd}~Sd}~wt@$ra}||_!d|_t(j*|_|j3d{7t5t6j>|dcYd}~Sd}~wwxYw7E7ԭw)NrTz+Concurrent call to receive() is not allowedr zWebSocket connection is closed.)r)+rOrrTrUrPrRr(rrQr create_futurerr?rXrrlrrtrrurrsrSrOKrvrrCLOSEDrrERRORrrVrrrrYCLOSINGPINGrZrPONG)r3r?rrwaiterrs r4receivezWebSocketResponse.receives << 67 7zz}}("#PQQ||1$??&??&'HII(()) = $ 2 2 4 ),44W5U@U@UV88$(LL$5$5$7788))+!]]Fvt,$(DM&xx9??* $ #&88 ||**,&&JY... $ J Y^^+ii)))Y^^+JM878888"]]Fvt,$(DM**G,@,@A #.#?#?  ?#.>> jjl"" !1!14>>! =#&88 jjchhj/// #t<< ="% $ #.#?#? jjl"" #t<<  ='*sBO)J 0'I%II%I9I :I> I% I  I%J =A!O)O#A3O)O&3O)I% I I%I"I I"I%%!JJ A)O 2K53 O O)O 0M3 MM3-O .O)3 O ?6O5N86OO O)O  O)&O)r?c K|j|d{}|jtjk7r/t dj |j|j tt|j S7jw)Nz.Received message {}:{!r} is not WSMsgType.TEXT) rrrTEXTrrrrr<r3r?rs r4 receive_strzWebSocketResponse.receive_strsgLL)) 88y~~ %@GGHHchh  C""*sBBA+BcK|j|d{}|jtjk7r&t d|jd|j dt t|j S7aw)NzReceived message :z is not bytes)rrrBINARYrrrrrs r4 receive_byteszWebSocketResponse.receive_bytessbLL)) 88y'' '/z388,mTU UE388$$*sA;A9A"A;)loadsr?rcRK|j|d{}||S7 w)Nr)r)r3rr?rs r4 receive_jsonzWebSocketResponse.receive_jsons-%%g%66T{7s '% 'c Ktdw)Nz"Cannot call .write() for websocket)r)r3rs r4writezWebSocketResponse.writes?@@s c|Sr1r=r2s r4 __aiter__zWebSocketResponse.__aiter__s r6cK|jd{}|jtjtjtj fvrt |S7Gwr1)rrrrrrStopAsyncIteration)r3rs r4 __anext__zWebSocketResponse.__anext__sGLLN" 88 ):):I2 HSM  !Xc]!!$ 73 7 7 78M2)%)$) )%)$) G3G(4.GDGFUFhtnFPTF$(< "ZZ <<4.<  <  <*5#535%5RV5n;Xe_; ;z?C#HUO#s#AE%huo%%'+jjT#;CE?  AA$A ,=,T,r6r%);rtrrrrsystypingrrrrrrattr multidictr rr abcr helpersr rhttprrrrrrrrrrrlogrstreamsrrtypedefsrrweb_exceptionsrr web_requestr! web_responser" version_infor__all__r(rr;sr&r%r=r6r4r(s  >> !%+    4.9$(w#  )*5:)T$d34I,I,r6