B Y @sdZddlmZddlmZddlmZddlmZy0ddl m Z m Z m Z m Z mZddlmZdZWnek r|d ZYnXGd d d eeZd S) z raven.transport.twisted ~~~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. )absolute_import)BytesIO)AsyncTransport) HTTPTransport)AgentFileBodyProducerHTTPConnectionPoolResponseNeverReceivedreadBody)HeadersTFcs,eZdZddgZfddZddZZS)TwistedHTTPTransportz twisted+httpz twisted+httpscs@ts tdtt|j||ddlm}t|t|d|_ dS)Nz*TwistedHTTPTransport requires twisted.web.r)reactor)pool) has_twisted ImportErrorsuperr __init__Ztwisted.internetr rr_agent)selfargskwargsr ) __class__H/opt/alt/python37/lib/python3.7/site-packages/raven/transport/twisted.pyrs  zTwistedHTTPTransport.__init__c s`|jjd|tt|ttdd|Dd}fdd}fdd}|||dS) NsPOSTcss|]\}}||gfVqdS)Nr).0kvrrr -sz2TwistedHTTPTransport.async_send..)Z bodyProducerheaderscs4|t}|r&dd|jjDn |jdS)NcSsg|] }|jqSr)value)rfrrr 4szGTwistedHTTPTransport.async_send..on_failure..)checkr rZreasons)Zfailureex) failure_cbrr on_failure0s z3TwistedHTTPTransport.async_send..on_failurecs2jdkrnfdd}t|SdS)z Success only means that the request succeeded, *not* that the actual submission was successful. cstjj|dS)N) Exceptioncodephrase)body)r$responserr on_error_body@szJTwistedHTTPTransport.async_send..on_success..on_error_bodyN)r(r addCallback)r+r,)r$ success_cb)r+r on_success8s  z3TwistedHTTPTransport.async_send..on_success) rZrequestrrr dictitemsr-Z addErrback) rurldatarr.r$dr%r/r)r$r.r async_send)s  zTwistedHTTPTransport.async_send)__name__ __module__ __qualname__schemerr5 __classcell__rr)rrr s r N)__doc__ __future__rZraven.utils.compatrZraven.transport.baserZraven.transport.httprZtwisted.web.clientrrrr r Ztwisted.web.http_headersr rrr rrrrs