예제 #1
0
def websocket_connect(url, io_loop=None, callback=None, connect_timeout=None):
    """Client-side websocket support.

    Takes a url and returns a Future whose result is a
    `WebSocketClientConnection`.

    .. versionchanged:: 3.2
       Also accepts ``HTTPRequest`` objects in place of urls.
    """
    if io_loop is None:
        io_loop = IOLoop.current()
    if isinstance(url, httpclient.HTTPRequest):
        assert connect_timeout is None
        request = url
        # Copy and convert the headers dict/object (see comments in
        # AsyncHTTPClient.fetch)
        request.headers = httputil.HTTPHeaders(request.headers)
    else:
        request = httpclient.HTTPRequest(url, connect_timeout=connect_timeout)
    request = httpclient._RequestProxy(
        request, httpclient.HTTPRequest._DEFAULTS)
    conn = WebSocketClientConnection(io_loop, request)
    if callback is not None:
        io_loop.add_future(conn.connect_future, callback)
    return conn.connect_future
예제 #2
0
 def raw_fetch(self, headers, body):
     with closing(Resolver(io_loop=self.io_loop)) as resolver:
         with closing(SimpleAsyncHTTPClient(self.io_loop,
                                            resolver=resolver)) as client:
             conn = RawRequestHTTPConnection(
                 self.io_loop, client,
                 httpclient._RequestProxy(
                     httpclient.HTTPRequest(self.get_url("/")),
                     dict(httpclient.HTTPRequest._DEFAULTS)),
                 None, self.stop,
                 1024 * 1024, resolver)
             conn.set_request(
                 b"\r\n".join(headers +
                              [utf8("Content-Length: %d\r\n" % len(body))]) +
                 b"\r\n" + body)
             response = self.wait()
             response.rethrow()
             return response
예제 #3
0
 def test_defaults_none(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/'), None)
     self.assertIs(proxy.auth_username, None)
예제 #4
0
 def test_bad_attribute(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/'),
                           dict())
     with self.assertRaises(AttributeError):
         proxy.foo
예제 #5
0
 def test_neither_set(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/'),
                           dict())
     self.assertIs(proxy.auth_username, None)
예제 #6
0
 def test_both_set(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/',
                                       proxy_host='foo'),
                           dict(proxy_host='bar'))
     self.assertEqual(proxy.proxy_host, 'foo')
예제 #7
0
 def test_default_set(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/'),
                           dict(network_interface='foo'))
     self.assertEqual(proxy.network_interface, 'foo')
예제 #8
0
 def test_request_set(self):
     proxy = _RequestProxy(HTTPRequest('http://example.com/',
                                       user_agent='foo'),
                           dict())
     self.assertEqual(proxy.user_agent, 'foo')