예제 #1
0
	def _backgroundGzip(self, compression):
		s = StringIO()
		gzipHandle = gzip.GzipFile(fileobj=s, mode='wb', compresslevel=compression)
		gzipHandle.write(self._compressible)
		gzipHandle.close()
		s = s.getvalue()
		with self._finalizedLock:
			self._gzipped = True
			self._compressible = s
			self._compressedSize = len(s)
예제 #2
0
	def getData(self):
		if self._isString:
			return self._data
		s = StringIO()
		i = self._data.read(_bufferSize)
		while len(i):
			s.write(i)
			i = self._data.read(_bufferSize)
		if self._closeAfter:
			self._data.close()
		return s.getvalue()
예제 #3
0
	def writeTo(self, target):
		data = self._data
		if type(data) is type(u''):
			data = data.encode('utf8')
		if type(data) is type(''):
			self._headers['Content-Length'] = len(data)
			data = StringIO(data)
		size = self._headers.writeTo(target)
		if data is not None:
			i = data.read(httpResponse._chunkSize)
			l = len(i)
			while l:
				chunk = hex(l)[2:]
				target(chunk + '\r\n' + i + '\r\n')
				size += l + len(chunk) + 4
				i = data.read(httpResponse._chunkSize)
				l = len(i)
		target('0\r\n') # Final chunk
		size += 3
		return size