summaryrefslogtreecommitdiff
path: root/service/test/unit/resources/__init__.py
blob: b8214a8c9301879e4d3029ee2576744992320e8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from twisted.internet.defer import succeed
from twisted.web import server
from twisted.web.server import Site


def resolve_result(request, result):
    if isinstance(result, str):
        request.write(result)
        request.finish()
        return succeed(request)
    elif result is server.NOT_DONE_YET:
        if request.finished:
            return succeed(request)
        else:
            return request.notifyFinish().addCallback(lambda _: request)
    else:
        raise ValueError("Unexpected return value: %r" % (result,))


class DummySite(Site):
    def get(self, request):
        return resolve_result(request, self.getResourceFor(request).render(request))