mirror of https://github.com/nicolargo/glances
Correct Gzip compression issue on Python 3.5
parent
15bbf22339
commit
f5fbd65996
|
@ -48,6 +48,7 @@ if PY3:
|
||||||
text_type = str
|
text_type = str
|
||||||
binary_type = bytes
|
binary_type = bytes
|
||||||
bool_type = bool
|
bool_type = bool
|
||||||
|
long = int
|
||||||
|
|
||||||
viewkeys = operator.methodcaller('keys')
|
viewkeys = operator.methodcaller('keys')
|
||||||
viewvalues = operator.methodcaller('values')
|
viewvalues = operator.methodcaller('values')
|
||||||
|
@ -119,6 +120,7 @@ else:
|
||||||
text_type = unicode
|
text_type = unicode
|
||||||
binary_type = str
|
binary_type = str
|
||||||
bool_type = types.BooleanType
|
bool_type = types.BooleanType
|
||||||
|
long = long
|
||||||
|
|
||||||
viewkeys = operator.methodcaller('viewkeys')
|
viewkeys = operator.methodcaller('viewkeys')
|
||||||
viewvalues = operator.methodcaller('viewvalues')
|
viewvalues = operator.methodcaller('viewvalues')
|
||||||
|
|
|
@ -29,6 +29,7 @@ import zlib
|
||||||
import struct
|
import struct
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
from glances.compat import nativestr, u, b, long
|
||||||
from glances.timer import Timer
|
from glances.timer import Timer
|
||||||
from glances.logger import logger
|
from glances.logger import logger
|
||||||
|
|
||||||
|
@ -56,32 +57,17 @@ def gzip_compress(func):
|
||||||
response.headers['Content-Encoding'] = 'identity'
|
response.headers['Content-Encoding'] = 'identity'
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def gzip_header():
|
|
||||||
header = '\037\213'
|
|
||||||
header += '\010'
|
|
||||||
header += '\0'
|
|
||||||
header += struct.pack("<L", long(time.time()))
|
|
||||||
header += '\002'
|
|
||||||
header += '\377'
|
|
||||||
return header
|
|
||||||
|
|
||||||
def gzip_trailer(crc, size):
|
|
||||||
footer = struct.pack("<l", crc)
|
|
||||||
footer += struct.pack("<L", size & 0xFFFFFFFF)
|
|
||||||
return footer
|
|
||||||
|
|
||||||
def compress(data, compress_level=6):
|
def compress(data, compress_level=6):
|
||||||
# Compress page
|
"""Compress given data using the DEFLATE algorithm"""
|
||||||
yield gzip_header()
|
# Init compression
|
||||||
crc = zlib.crc32('')
|
|
||||||
zobj = zlib.compressobj(compress_level,
|
zobj = zlib.compressobj(compress_level,
|
||||||
zlib.DEFLATED, -zlib.MAX_WBITS,
|
zlib.DEFLATED,
|
||||||
zlib.DEF_MEM_LEVEL, 0)
|
zlib.MAX_WBITS,
|
||||||
size = len(data)
|
zlib.DEF_MEM_LEVEL,
|
||||||
crc = zlib.crc32(data, crc)
|
zlib.Z_DEFAULT_STRATEGY)
|
||||||
yield zobj.compress(data)
|
|
||||||
yield zobj.flush()
|
# Return compressed object
|
||||||
yield gzip_trailer(crc, size)
|
return zobj.compress(b(data)) + zobj.flush()
|
||||||
|
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue