mirror of
https://github.com/JohnDoee/deluge-streaming/
synced 2026-07-01 07:31:17 -07:00
initial version
This commit is contained in:
36
streaming/resource.py
Normal file
36
streaming/resource.py
Normal 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
|
||||
Reference in New Issue
Block a user