示例#1
0
文件: request.py 项目: glyph/brytly
def get(url, headers=None):
    """
    Fetch a URL and return a Deferred firing with a L{Response}.

    @param url: The URL to get.
    """
    result = Deferred()
    if headers is None:
        headers = {}

    req = Request()

    def fireIfNotFired(event):
        "Things have either started or completed; fire."
        if not result.called:
            result.callback(Response(req))

    # the "interactive" handler is where the deliverBody stuff would go
    req.bind("interactive", fireIfNotFired)

    def completeHandler(result):
        fireIfNotFired(result)

    req.bind("complete", completeHandler)
    req.open("GET", url, True)
    req.send()
    return result
示例#2
0
def getOwie():
    from twisted.internet import reactor
    d = Deferred()

    def CRAP():
        d.errback(ZeroDivisionError('OMG'))

    reactor.callLater(0, CRAP)
    return d
示例#3
0
 def testHandledTerminalAsyncFailure(self):
     """
     Just like testHandledTerminalFailure, only with a Deferred which fires
     asynchronously with an error.
     """
     d = Deferred()
     deferredGeneratorResultDeferred = self._genHandledTerminalAsyncFailure(
         d)
     d.errback(TerminalException("Handled Terminal Failure"))
     return deferredGeneratorResultDeferred.addCallback(
         self.assertEqual, None)
示例#4
0
文件: request.py 项目: glyph/brytly
    def __init__(self, req):
        """
        Create a L{Response} from a brython ajax L{Request}.
        """
        self._request = req
        self.code = getattr(req, "status", 0)
        self._contentDeferred = Deferred()

        def callContent(xmlHttpEvent):
            self._contentDeferred.callback(xmlHttpEvent.text)

        req.bind("complete", callContent)
示例#5
0
 def test_slowly(self):
     """
     This test should wait for 5 seconds for its Deferred to fire, then
     pass.
     """
     from browser import window
     d = Deferred()
     print("one")
     def later():
         d.callback(None)
     print("two")
     window.setTimeout(later, 5000)
     print("three")
     return d
示例#6
0
    def test_plus(self):
        result = []

        def get_value():
            return 42

        def got_value(value):
            self.assertEqual(value, 42)
            return value * 2

        def got_value2(value):
            self.assertEqual(value, 84)
            result.append(value)

        d = Deferred()
        d.then(get_value)\
            .then(got_value)\
            .then(got_value2)

        self.assertEqual(result, [])
        d.resolve()
        self.assertEqual(result, [84])
示例#7
0
def getThing():
    from twisted.internet import reactor
    d = Deferred()
    reactor.callLater(0, d.callback, "hi")
    return d
示例#8
0
 def __init__(self):
     self.d = Deferred()