Make chunks use the same b64 encoding we use elsewhere.

This commit is contained in:
Tom Hacohen 2020-04-15 14:33:38 +03:00
parent a97bb969e7
commit 5dfa2ac8cb

View File

@ -27,15 +27,23 @@ def generate_rev_uid(length=32):
return get_random_string(length) return get_random_string(length)
class BinaryBase64Field(serializers.Field): def b64encode(value):
def to_representation(self, value):
return base64.urlsafe_b64encode(value).decode('ascii') return base64.urlsafe_b64encode(value).decode('ascii')
def to_internal_value(self, data):
def b64decode(data):
data += "=" * ((4 - len(data) % 4) % 4) data += "=" * ((4 - len(data) % 4) % 4)
return base64.urlsafe_b64decode(data) return base64.urlsafe_b64decode(data)
class BinaryBase64Field(serializers.Field):
def to_representation(self, value):
return b64encode(value)
def to_internal_value(self, data):
return b64decode(data)
class CollectionEncryptionKeyField(BinaryBase64Field): class CollectionEncryptionKeyField(BinaryBase64Field):
def get_attribute(self, instance): def get_attribute(self, instance):
request = self.context.get('request', None) request = self.context.get('request', None)
@ -99,7 +107,7 @@ class CollectionItemRevisionInlineSerializer(CollectionItemRevisionBaseSerialize
ret = [] ret = []
for chunk in obj.chunks.all(): for chunk in obj.chunks.all():
with open(chunk.chunkFile.path, 'rb') as f: with open(chunk.chunkFile.path, 'rb') as f:
ret.append(base64.b64encode(f.read()).decode('ascii')) ret.append(b64encode(f.read()))
return ret return ret