[wip] v2 support code (#13)

This commit is contained in:
r4sas
2019-06-02 14:04:38 +00:00
parent 1ff6e721c7
commit f7fae450a0
5 changed files with 363 additions and 142 deletions

View File

@@ -22,12 +22,24 @@ def check_writable(f):
raise PBinCLIException("Path is not writable: {}".format(f))
def decompress(s):
return zlib.decompress(bytearray(map(ord, b64decode(s.encode('utf-8')).decode('utf-8'))), -zlib.MAX_WBITS)
def decompress(s, ver = 1):
if ver == 2:
return zlib.decompress(s, -zlib.MAX_WBITS)
else:
return zlib.decompress(bytearray(map(ord, b64decode(s.encode('utf-8')).decode('utf-8'))), -zlib.MAX_WBITS)
def compress(s):
co = zlib.compressobj(wbits=-zlib.MAX_WBITS)
b = co.compress(s) + co.flush()
def compress(s, ver = 1):
if ver == 2:
# using compressobj as compress doesn't let us specify wbits
# needed to get the raw stream without headers
co = zlib.compressobj(wbits=-zlib.MAX_WBITS)
return co.compress(s) + co.flush()
else:
co = zlib.compressobj(wbits=-zlib.MAX_WBITS)
b = co.compress(s) + co.flush()
return b64encode(''.join(map(chr, b)).encode('utf-8'))
return b64encode(''.join(map(chr, b)).encode('utf-8'))
def json_encode(s):
return json.dumps(s, separators=(',',':')).encode()