From 5372ebb8be5a5e6669129b6dc78fa6f333b6e186 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Fri, 4 Mar 2016 23:09:53 +0100 Subject: Project 1: Config system; ETags; error pages --- project1/proj1_s4498062/webhttp/message.py | 45 +++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) (limited to 'project1/proj1_s4498062/webhttp/message.py') diff --git a/project1/proj1_s4498062/webhttp/message.py b/project1/proj1_s4498062/webhttp/message.py index 2dc4240..059c765 100644 --- a/project1/proj1_s4498062/webhttp/message.py +++ b/project1/proj1_s4498062/webhttp/message.py @@ -9,12 +9,46 @@ import regexes as r import weblogging as logging reasondict = { - # Dictionary for code reasons - # Format: code : "Reason" + 100 : 'Continue', + 101 : 'Switching Protocols', 200 : 'OK', + 201 : 'Created', + 202 : 'Accepted', + 203 : 'Non-Authoritative Information', + 204 : 'No Content', + 205 : 'Reset Content', + 206 : 'Partial Content', + 300 : 'Multiple Choices', + 301 : 'Moved Permanently', + 302 : 'Found', + 303 : 'See Other', + 304 : 'Not Modified', + 305 : 'Use Proxy', + 307 : 'Temporary Redirect', + 400 : 'Bad Request', + 401 : 'Unauthorized', + 402 : 'Payment Required', 403 : 'Forbidden', 404 : 'Not Found', - 500 : 'Internal Server Error' + 405 : 'Method Not Allowed', + 406 : 'Not Acceptable', + 407 : 'Proxy Authentication Required', + 408 : 'Request Time-out', + 409 : 'Conflict', + 410 : 'Gone', + 411 : 'Length Required', + 412 : 'Precondition Failed', + 413 : 'Request Entity Too Large', + 414 : 'Request-URI Too Large', + 415 : 'Unsupported Media Type', + 416 : 'Requested range not satisfiable', + 417 : 'Expectation Failed', + 500 : 'Internal Server Error', + 501 : 'Not Implemented', + 502 : 'Bad Gateway', + 503 : 'Service Unavailable', + 504 : 'Gateway Time-out', + 505 : 'HTTP Version not supported', } @@ -48,7 +82,7 @@ class Message(object): if name in self.headers: return self.headers[name] else: - return "" + return None def parse_headers(self, msg): for name, value in re.findall(r.MessageHeader, msg): @@ -124,6 +158,9 @@ class Response(Message): def startline(self): return "%s %d %s" % (self.version, self.code, reasondict[self.code]) + + def set_content_length(self): + self.set_header('Content-Length', len(self.body)) def __str__(self): """Convert the Response to a string -- cgit v1.2.3