initial version

This commit is contained in:
JohnDoee
2015-01-22 19:41:44 +01:00
commit a9854e80ea
11 changed files with 1062 additions and 0 deletions

36
streaming/resource.py Normal file
View File

@@ -0,0 +1,36 @@
from twisted.web.resource import Resource as TwistedResource, _computeAllowedMethods
from twisted.web import server, guard
from twisted.internet import defer
class Resource(TwistedResource):
content_type = 'application/json'
def render(self, request):
"""
Adds support for deferred render methods
"""
m = getattr(self, 'render_' + request.method, None)
if not m:
# This needs to be here until the deprecated subclasses of the
# below three error resources in twisted.web.error are removed.
from twisted.web.error import UnsupportedMethod
allowedMethods = (getattr(self, 'allowedMethods', 0) or
_computeAllowedMethods(self))
raise UnsupportedMethod(allowedMethods)
result = defer.maybeDeferred(m, request)
def write_rest(defer_result, request):
request.write(defer_result)
request.finish()
def err_rest(defer_result=None):
defer_result.printTraceback()
request.finish()
result.addCallback(write_rest, request)
result.addErrback(err_rest)
return server.NOT_DONE_YET