def testParsingRequests(self): r = "\r\n".join(( "POST / HTTP/1.1", "Host: test.com", "Connection: close", "HeaDer: valUe", "Content-length: 1", "", "A" )) self.assertEqual( parseRequest(r), { "method": "POST", "path": "/", "version": "HTTP/1.1", "entity": "A", "headers": ( ("Host", "test.com"), ("Connection", "close"), ("HeaDer", "valUe"), ("Content-length", "1"), ) } )
def load(self, arguments): """ Looks through the arguments to find directives specifying the message (ie, -M, --stdin, etc). If none are found, the defaultRequest/ defaultResponse are used. """ request = arguments.messageType == REQUEST type = "request" if request else "response" if arguments.message: if request: message = parseRequest(arguments.message) else: message = parseResponse(arguments.message) elif arguments.stdin: info( "Reading {} from stdin".format(type), arguments.verbose ) if request: message = readRequest() else: message = self.readResponse() elif arguments.file: info( "Reading {} from {}".format(type, arguments.file), arguments.verbose ) f = open(arguments.file, "r") if request: message = readRequest(f) else: message = self.readResponse(f) else: if request: message = self.defaultRequest else: message = self.defaultResponse return message
def readRequest(file=stdin): """ Reads an entire file & parses it as a request. """ return parseRequest(file.read())