

import sys,time,re,string
import base64, random

class MixedReplaceResponse:
	def __init__(self, stream = sys.stdout, boundary=None):
		self.stream = stream
		if not boundary:
			boundary = string.join(random.sample(string.letters, 42),'')
		self.boundary = boundary
		self.stream.write("Content-Type: multipart/x-mixed-replace;boundary=%s\n\n" % boundary)
		self.state = "blank"
		self.lastchar = '\0'
	
	def start(self, type="text/html"):
		if(self.state == "blank" or self.state == "flushed"):
			self.stream.write("--%s\n" % self.boundary)
			self.stream.write("Content-Type: %s\n\n" % type)
			self.state = "started"
	
	def flush(self):
		if(self.state == "started"):
			if(self.lastchar != "\n"):
				self.write("\n")
			self.stream.flush()
			self.state = "flushed"
	
	def write(self, content):
		if(self.state != "started"):
			self.start()
		self.stream.write(content)
		self.lastchar = content[-1]
	
	def close(self):
		if(self.state != "flushed"):
			self.flush()
		self.stream.close()

