Beispiel #1
0
    def testPopPreservesOrder(self):

        self.assertEqual(
            popHeaders(
                "\r\n".join((
                    "A: 1",
                    "A: 2",
                    "a: 3",
                    "",
                ))
            ),
            ((("A", "1"), ("A", "2"), ("a", "3")), "")
        )
        self.assertEqual(
            popHeaders(
                "\r\n".join((
                    "A: 1",
                    "A: 2",
                    "a: 3",
                    "",
                    "B"
                ))
            ),
            ((("A", "1"), ("A", "2"), ("a", "3")), "B")
        )
Beispiel #2
0
    def testPoppingEmptyHeaderss(self):

        self.assertEqual(
            popHeaders("\r\n"),
            (tuple(), "")
        )
        self.assertEqual(
            popHeaders("\r\nA"),
            (tuple(), "A")
        )
Beispiel #3
0
    def testPoppingsWithWindowsAndUnixLinebreaksIsEquivalent(self):

        self.assertEqual(
            popHeaders(
                "\r\n".join((
                "A: B",
                "C: D",
                ""
                ))
            ),
            popHeaders(
                "\n".join((
                "A: B",
                "C: D",
                ""
                ))
            )
        )
Beispiel #4
0
    def testPopIsCaseSensitive(self):

        self.assertEqual(
            popHeaders(
                "\r\n".join((
                    "a: B",
                    "C: d",
                    "",
                ))
            ),
            ((("a", "B"), ("C", "d")), "")
        )
        self.assertEqual(
            popHeaders(
                "\r\n".join((
                    "a: B",
                    "C: d",
                    "",
                    "e"
                ))
            ),
            ((("a", "B"), ("C", "d")), "e")
        )
Beispiel #5
0
    def testPopping(self):

        self.assertEqual(
            popHeaders(
                "\r\n".join((
                    "A: B",
                    "C: D",
                    "",
                ))
            ),
            ((self.a1, self.c), "")
        )
        self.assertEqual(
            popHeaders(
                "\r\n".join((
                    "A: B",
                    "C: D",
                    "",
                    "E",
                ))
            ),
            ((self.a1, self.c), "E")
        )
Beispiel #6
0
def parseResponse(response):
    """
    Naively parses an HTTP response.

    Returns a dictionary with the entity, version, status, and reason as strings,
    and the headers as a tuple of (name, value) pairs.
    """

    version, status, reason, response = _popTopLine(response)
    headers, entity = popHeaders(response)

    return dict(
        version=version,
        status=status,
        reason=reason,
        headers=headers,
        entity=entity,
    )
Beispiel #7
0
def parseRequest(request):
    """
    Naively parses an HTTP request.

    Returns a dictionary with the entity, version, method, and path as strings,
    and the headers as a tuple of (name, value) pairs.
    """

    method, path, version, request = _popTopLine(request)
    headers, entity = popHeaders(request)

    return dict(
        method=method,
        path=path,
        version=version,
        headers=headers,
        entity=entity,
    )