Add reponse handling utils for MPC
This commit is contained in:
parent
76518dcf6f
commit
c2e9f27a50
@ -1,6 +1,14 @@
|
||||
#coding:utf8
|
||||
|
||||
from twisted.internet.protocol import ProcessProtocol
|
||||
try:
|
||||
from cStringIO import StringIO
|
||||
except ImportError:
|
||||
from StringIO import StringIO
|
||||
|
||||
from twisted.internet.protocol import (
|
||||
ProcessProtocol,
|
||||
Protocol,
|
||||
)
|
||||
from twisted.protocols.basic import LineReceiver
|
||||
|
||||
class CommandProtocol(LineReceiver):
|
||||
@ -79,3 +87,28 @@ class LineProcessProtocol(ProcessProtocol):
|
||||
for line in lines:
|
||||
self.transport.write(line+'\n')
|
||||
|
||||
|
||||
class BodyGetter(Protocol):
|
||||
def __init__(self, length, callback):
|
||||
self.length = length
|
||||
self.callback = callback
|
||||
self.body = StringIO()
|
||||
|
||||
def dataReceived(self, data):
|
||||
if self.length > 0:
|
||||
data = data[:self.length]
|
||||
self.body.write(data)
|
||||
self.length -= len(length)
|
||||
|
||||
def connectionLost(self, reason):
|
||||
self.callback(self.body.getvalue())
|
||||
|
||||
def handle_response(callback):
|
||||
def defer_callback(response):
|
||||
status = response.code
|
||||
headers = response.headers.getAllRawHeaders()
|
||||
def body_callback(body):
|
||||
callback(status, headers, body)
|
||||
response.deliverBody(BodyGetter(response.length, body_callback))
|
||||
return defer_callback
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user