mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-08 03:14:21 +00:00
De-Nevow `render
`
This commit is contained in:
parent
304a9880e6
commit
637bb2e576
@ -1,50 +0,0 @@
|
||||
"""
|
||||
General helpers related to Nevow.
|
||||
"""
|
||||
|
||||
from twisted.internet.defer import (
|
||||
maybeDeferred,
|
||||
)
|
||||
|
||||
from nevow.context import WebContext
|
||||
from nevow.testutil import FakeRequest
|
||||
from nevow.appserver import (
|
||||
processingFailed,
|
||||
DefaultExceptionHandler,
|
||||
)
|
||||
from nevow.inevow import (
|
||||
ICanHandleException,
|
||||
IRequest,
|
||||
IResource as INevowResource,
|
||||
IData,
|
||||
)
|
||||
|
||||
def render(resource, query_args):
|
||||
"""
|
||||
Render (in the manner of the Nevow appserver) a Nevow ``Page`` or a
|
||||
Twisted ``Resource`` against a request with the given query arguments .
|
||||
|
||||
:param resource: The page or resource to render.
|
||||
|
||||
:param query_args: The query arguments to put into the request being
|
||||
rendered. A mapping from ``bytes`` to ``list`` of ``bytes``.
|
||||
|
||||
:return Deferred: A Deferred that fires with the rendered response body as
|
||||
``bytes``.
|
||||
"""
|
||||
ctx = WebContext(tag=resource)
|
||||
req = FakeRequest(args=query_args)
|
||||
ctx.remember(DefaultExceptionHandler(), ICanHandleException)
|
||||
ctx.remember(req, IRequest)
|
||||
ctx.remember(None, IData)
|
||||
|
||||
def maybe_concat(res):
|
||||
if isinstance(res, bytes):
|
||||
return req.v + res
|
||||
return req.v
|
||||
|
||||
resource = INevowResource(resource)
|
||||
d = maybeDeferred(resource.renderHTTP, ctx)
|
||||
d.addErrback(processingFailed, req, ctx)
|
||||
d.addCallback(maybe_concat)
|
||||
return d
|
@ -13,6 +13,10 @@ from twisted.internet.defer import (
|
||||
)
|
||||
from twisted.web.error import Error
|
||||
|
||||
from .common_tweb import (
|
||||
render,
|
||||
)
|
||||
|
||||
@inlineCallbacks
|
||||
def do_http(method, url, **kwargs):
|
||||
response = yield treq.request(method, url, persistent=False, **kwargs)
|
||||
@ -22,18 +26,3 @@ def do_http(method, url, **kwargs):
|
||||
if 400 <= response.code < 600:
|
||||
raise Error(response.code, response=body)
|
||||
returnValue(body)
|
||||
|
||||
|
||||
if PY2:
|
||||
# We can only use Nevow on Python 2 and Tahoe-LAFS still *does* use Nevow
|
||||
# so prefer the Nevow-based renderer if we can get it.
|
||||
from .common_nevow import (
|
||||
render,
|
||||
)
|
||||
else:
|
||||
# However, Tahoe-LAFS *will* use Twisted Web before too much longer so go
|
||||
# ahead and let some tests run against the Twisted Web-based renderer on
|
||||
# Python 3. Later this will become the only codepath.
|
||||
from .common_tweb import (
|
||||
render,
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user