Пример #1
0
 def test_read_partial(self):
     txt = b"This is a test of the emergency broadcasting system."
     response = binding.ResponseReader(BytesIO(txt))
     self.assertEqual(response.peek(5), txt[:5])
     self.assertFalse(response.empty)
     self.assertEqual(response.read(), txt)
     self.assertTrue(response.empty)
     self.assertEqual(response.read(), b'')
Пример #2
0
 def test_read_past_end(self):
     txt = b"abcd"
     response = binding.ResponseReader(BytesIO(txt))
     self.assertFalse(response.empty)
     self.assertEqual(response.peek(10), txt)
     self.assertEqual(response.read(10), txt)
     self.assertTrue(response.empty)
     self.assertEqual(response.peek(10), b"")
     self.assertEqual(response.read(10), b"")
Пример #3
0
    def test_empty(self):
        response = binding.ResponseReader(BytesIO(b""))
        self.assertTrue(response.empty)
        self.assertEqual(response.peek(10), b"")
        self.assertEqual(response.read(10), b"")

        arr = bytearray(10)
        self.assertEqual(response.readinto(arr), 0)
        self.assertEqual(arr, bytearray(10))
        self.assertTrue(response.empty)
Пример #4
0
 def test_readinto_bytearray(self):
     txt = b"Checking readinto works as expected"
     response = binding.ResponseReader(BytesIO(txt))
     arr = bytearray(10)
     self.assertEqual(response.readinto(arr), 10)
     self.assertEqual(arr[:10], b"Checking r")
     self.assertEqual(response.readinto(arr), 10)
     self.assertEqual(arr[:10], b"eadinto wo")
     self.assertEqual(response.readinto(arr), 10)
     self.assertEqual(arr[:10], b"rks as exp")
     self.assertEqual(response.readinto(arr), 5)
     self.assertEqual(arr[:5], b"ected")
     self.assertTrue(response.empty)
Пример #5
0
def request(url, message, **kwargs):
    # Split the URL into constituent components.
    scheme, host, port, path = _spliturl(url)
    body = message.get("body", "")

    # Setup the default headers.
    head = {
        "Content-Length": str(len(body)),
        "Host": host,
        "User-Agent": "http.py/1.0",
        "Accept": "*/*",
    }

    # Add in the passed in headers.
    for key, value in message["headers"]:
        head[key] = value

    # Note the HTTP method we're using, defaulting
    # to `GET`.
    method = message.get("method", "GET")

    # Note that we do not support proxies in this example
    # If running Python 2.7.9+, disable SSL certificate validation
    if sys.version_info >= (2, 7, 9):
        unverified_ssl_handler = urllib2.HTTPSHandler(
            context=ssl._create_unverified_context())
        opener = urllib2.build_opener(unverified_ssl_handler)
    else:
        opener = urllib2.build_opener()

    # Unfortunately, we need to use the hack of
    # "overriding" `request.get_method` to specify
    # a method other than `GET` or `POST`.
    request = urllib2.Request(url, body, head)
    request.get_method = lambda: method

    # Make the request and get the response
    response = None
    try:
        response = opener.open(request)
    except Exception as e:
        response = e

    # Normalize the response to something the SDK expects, and
    # return it.
    return {
        'status': response.code,
        'reason': response.msg,
        'headers': response.info().dict,
        'body': binding.ResponseReader(response)
    }
Пример #6
0
 def test_readinto_memoryview(self):
     import sys
     if sys.version_info < (2, 7, 0):
         return  # memoryview is new to Python 2.7
     txt = b"Checking readinto works as expected"
     response = binding.ResponseReader(BytesIO(txt))
     arr = bytearray(10)
     mv = memoryview(arr)
     self.assertEqual(response.readinto(mv), 10)
     self.assertEqual(arr[:10], b"Checking r")
     self.assertEqual(response.readinto(mv), 10)
     self.assertEqual(arr[:10], b"eadinto wo")
     self.assertEqual(response.readinto(mv), 10)
     self.assertEqual(arr[:10], b"rks as exp")
     self.assertEqual(response.readinto(mv), 5)
     self.assertEqual(arr[:5], b"ected")
     self.assertTrue(response.empty)
Пример #7
0
def make_response_record(body, status=200):
    class _MocBufReader(object):
        def __init__(self, buf):
            if isinstance(buf, str):
                self._buf = buf.encode("utf-8")
            else:
                self._buf = buf

        def read(self, size=None):
            return self._buf

    return record({
        "body": binding.ResponseReader(_MocBufReader(body)),
        "status": status,
        "reason": "",
        "headers": None,
    })
Пример #8
0
 def test_readable(self):
     txt = "abcd"
     response = binding.ResponseReader(six.StringIO(txt))
     self.assertTrue(response.readable())
Пример #9
0
 def test_empty(self):
     response = binding.ResponseReader(StringIO(""))
     self.assertTrue(response.empty)
     self.assertEqual(response.peek(10), "")
     self.assertEqual(response.read(10), "")
     self.assertTrue(response.empty)