ó ¿öYc@@s¿dZddlmZddlmZddlmZddlmZyBddl m Z m Z m Z m Z mZddlmZeZWnek r¡eZnXdeefd „ƒYZd S( s¬ raven.transport.twisted ~~~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. i(tabsolute_import(tBytesIO(tAsyncTransport(t HTTPTransport(tAgenttFileBodyProducertHTTPConnectionPooltResponseNeverReceivedtreadBody(tHeaderstTwistedHTTPTransportcB@s&eZddgZd„Zd„ZRS(s twisted+https twisted+httpscO@s]tstdƒ‚ntt|ƒj||Žddlm}t|dt|ƒƒ|_ dS(Ns*TwistedHTTPTransport requires twisted.web.i(treactortpool( t has_twistedt ImportErrortsuperR t__init__ttwisted.internetR RRt_agent(tselftargstkwargsR ((sH/opt/alt/python27/lib/python2.7/site-packages/raven/transport/twisted.pyRs c @s„|jjd|dtt|ƒƒdttd„|jƒDƒƒƒƒ}‡fd†}‡‡fd†}|j|ƒj|ƒdS(NtPOSTt bodyProducertheaderscs@s$|]\}}||gfVqdS(N((t.0tktv((sH/opt/alt/python27/lib/python2.7/site-packages/raven/transport/twisted.pys -sc@sO|jtƒ}|r>ˆg|jjD]}|j^q%ƒn ˆ|jƒdS(N(tcheckRtvaluetreasons(tfailuretextf(t failure_cb(sH/opt/alt/python27/lib/python2.7/site-packages/raven/transport/twisted.pyt on_failure0s)c@sBˆjdkrˆƒn%‡‡fd†}tˆƒj|ƒSdS(s… Success only means that the request succeeded, *not* that the actual submission was successful. iÈc@s ˆtˆjˆj|ƒƒdS(N(t Exceptiontcodetphrase(tbody(R"tresponse(sH/opt/alt/python27/lib/python2.7/site-packages/raven/transport/twisted.pyt on_error_body@sN(R%Rt addCallback(R(R)(R"t success_cb(R(sH/opt/alt/python27/lib/python2.7/site-packages/raven/transport/twisted.pyt on_success8s   ( RtrequestRRR tdicttitemsR*t addErrback( RturltdataRR+R"tdR#R,((R"R+sH/opt/alt/python27/lib/python2.7/site-packages/raven/transport/twisted.pyt async_send)s  % (t__name__t __module__tschemeRR4(((sH/opt/alt/python27/lib/python2.7/site-packages/raven/transport/twisted.pyR s  N(t__doc__t __future__Rtraven.utils.compatRtraven.transport.baseRtraven.transport.httpRttwisted.web.clientRRRRRttwisted.web.http_headersR tTrueR RtFalseR (((sH/opt/alt/python27/lib/python2.7/site-packages/raven/transport/twisted.pyts(