home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import urllib2
- from cStringIO import StringIO
- import _response
-
- class GzipConsumer:
-
- def __init__(self, consumer):
- self._GzipConsumer__consumer = consumer
- self._GzipConsumer__decoder = None
- self._GzipConsumer__data = ''
-
-
- def __getattr__(self, key):
- return getattr(self._GzipConsumer__consumer, key)
-
-
- def feed(self, data):
- if self._GzipConsumer__decoder is None:
- data = self._GzipConsumer__data + data
-
- try:
- i = 10
- flag = ord(data[3])
- if flag & 4:
- x = ord(data[i]) + 256 * ord(data[i + 1])
- i = i + 2 + x
-
- if flag & 8:
- while ord(data[i]):
- i = i + 1
- i = i + 1
-
- if flag & 16:
- while ord(data[i]):
- i = i + 1
- i = i + 1
-
- if flag & 2:
- i = i + 2
-
- if len(data) < i:
- raise IndexError('not enough data')
- len(data) < i
- if data[:3] != '\x1f\x8b\x08':
- raise IOError('invalid gzip data')
- data[:3] != '\x1f\x8b\x08'
- data = data[i:]
- except IndexError:
- self._GzipConsumer__data = data
- return None
-
- import zlib
- self._GzipConsumer__data = ''
- self._GzipConsumer__decoder = zlib.decompressobj(-(zlib.MAX_WBITS))
-
- data = self._GzipConsumer__decoder.decompress(data)
- if data:
- self._GzipConsumer__consumer.feed(data)
-
-
-
- def close(self):
- if self._GzipConsumer__decoder:
- data = self._GzipConsumer__decoder.flush()
- if data:
- self._GzipConsumer__consumer.feed(data)
-
-
- self._GzipConsumer__consumer.close()
-
-
-
- class stupid_gzip_consumer:
-
- def __init__(self):
- self.data = []
-
-
- def feed(self, data):
- self.data.append(data)
-
-
-
- class stupid_gzip_wrapper(_response.closeable_response):
-
- def __init__(self, response):
- self._response = response
- c = stupid_gzip_consumer()
- gzc = GzipConsumer(c)
- gzc.feed(response.read())
- self._stupid_gzip_wrapper__data = StringIO(''.join(c.data))
-
-
- def read(self, size = -1):
- return self._stupid_gzip_wrapper__data.read(size)
-
-
- def readline(self, size = -1):
- return self._stupid_gzip_wrapper__data.readline(size)
-
-
- def readlines(self, sizehint = -1):
- return self._stupid_gzip_wrapper__data.readlines(sizehint)
-
-
- def __getattr__(self, name):
- return getattr(self._response, name)
-
-
-
- class HTTPGzipProcessor(urllib2.BaseHandler):
- handler_order = 200
-
- def http_request(self, request):
- request.add_header('Accept-Encoding', 'gzip')
- return request
-
-
- def http_response(self, request, response):
- enc_hdrs = response.info().getheaders('Content-encoding')
- for enc_hdr in enc_hdrs:
- if 'gzip' in enc_hdr or 'compress' in enc_hdr:
- return stupid_gzip_wrapper(response)
-
- return response
-
- https_response = http_response
-
-