From 5dfa2ac8cbab2f0aa62158ff0f80e55726f7c898 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Wed, 15 Apr 2020 14:33:38 +0300 Subject: [PATCH] Make chunks use the same b64 encoding we use elsewhere. --- django_etesync/serializers.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/django_etesync/serializers.py b/django_etesync/serializers.py index f0bb1c3..2310c8d 100644 --- a/django_etesync/serializers.py +++ b/django_etesync/serializers.py @@ -27,13 +27,21 @@ def generate_rev_uid(length=32): return get_random_string(length) +def b64encode(value): + return base64.urlsafe_b64encode(value).decode('ascii') + + +def b64decode(data): + data += "=" * ((4 - len(data) % 4) % 4) + return base64.urlsafe_b64decode(data) + + class BinaryBase64Field(serializers.Field): def to_representation(self, value): - return base64.urlsafe_b64encode(value).decode('ascii') + return b64encode(value) def to_internal_value(self, data): - data += "=" * ((4 - len(data) % 4) % 4) - return base64.urlsafe_b64decode(data) + return b64decode(data) class CollectionEncryptionKeyField(BinaryBase64Field): @@ -99,7 +107,7 @@ class CollectionItemRevisionInlineSerializer(CollectionItemRevisionBaseSerialize ret = [] for chunk in obj.chunks.all(): with open(chunk.chunkFile.path, 'rb') as f: - ret.append(base64.b64encode(f.read()).decode('ascii')) + ret.append(b64encode(f.read())) return ret