All pastes #1727698 Raw Edit

Untitled

public python v1 · immutable
#1727698 ·published 2009-12-26 19:07 UTC
rendered paste body
from httplib import responsesclass _HeaderContainer:	_container = {}	def add_header(self, header, value):		if not header in self._container: self._container[header] = []		self._container[header].append(value)	def set_header(self, header, value):		if header in self._container: del self._container[header]		self.add_header(header, value)	def get_header(self, header):		if not header in self._container: return None		if len(self._container[header]) > 1: return self.get_headers(header)		return self._container[header][0]	def get_headers(self, header):		if not header in self._container: return []		return self._container[header]	def http_headers(self):		httph = []		for header in self._container:			for value in self.get_headers(header):				httph.append("%s: %s" % (header, value))		return httph	def http_response(self):		return '\n'.join(self.http_headers())class Response:	_mime = "text/html"	_headers = HeaderContainer()	_response = ""	def __init__(self, request, code, content, message=None):		if not message:			if code in responses: message = responses[code]			else: message = 'Unknown'		self._request = request		self._rescode = code		self._content = str(content)		self._message = message	def get_response(self):		self._create_response()		return self._response	def _create_response(self):		self._send_raw("%s %d %s" % (self._request.server.protocol, self._rescode, self._message))		self.set_header('Server', self._request.server.version)		self.set_header('Date', self._request.server.date)		self.set_header('Content-Type', self._mime)		self.set_header('Content-Length', len(self._content))		self._send_headers()		self._end_headers()		self._send_body()	def add_header(self, header, value): self._headers.add_header(header, value)	def set_header(self, header, value): self._headers.set_header(header, value)	def get_header(self, header): return self._headers.get_header(header)	def get_headers(self, header): return self._headers.get_headers(header)	def set_mimetype(self, mime): self._mime = mime	def get_mimetype(self): return self._mime	def _send_raw(self, data): self._response += data+"\n"	def _send_headers(self): self._send_raw(self._headers.http_response())	def _end_headers(self): self._send_raw("")	def _send_body(self): self._send_raw(self._content)def send(response): print response.get_response(),