Files
deluge-streaming/streaming/resource.py

36 lines
1.2 KiB
Python
Raw Normal View History

2015-01-22 19:41:44 +01:00
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