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") )
def testPoppingEmptyHeaderss(self): self.assertEqual( popHeaders("\r\n"), (tuple(), "") ) self.assertEqual( popHeaders("\r\nA"), (tuple(), "A") )
def testPoppingsWithWindowsAndUnixLinebreaksIsEquivalent(self): self.assertEqual( popHeaders( "\r\n".join(( "A: B", "C: D", "" )) ), popHeaders( "\n".join(( "A: B", "C: D", "" )) ) )
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") )
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") )
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, )
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, )