From 3e4c8a7c7396937ea432510d8b02f5e68b70d12e Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Mon, 3 Nov 2025 13:50:19 -0600 Subject: Base64 encode/decode from and to dicts. * Convert a dict to a JSON string then encode it to base64. * Decode a base64 encoded JSON string to a dict. --- uploader/datautils.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'uploader') diff --git a/uploader/datautils.py b/uploader/datautils.py index 46a55c4..d132c42 100644 --- a/uploader/datautils.py +++ b/uploader/datautils.py @@ -1,5 +1,7 @@ """Generic data utilities: Rename module.""" import math +import json +import base64 from functools import reduce from typing import Union, Sequence @@ -36,3 +38,13 @@ def safe_int(val: Union[str, int, float]) -> int: return int(val) except ValueError: return 0 + + +def base64_encode_dict(dct: dict, **kwargs) -> bytes: + """Base64 encode a dictionary. Takes the same keywords as `json.dumps` function.""" + return base64.urlsafe_b64encode(json.dumps(dct, **kwargs).encode("utf-8")) + + +def base64_decode_to_dict(value: str, **kwargs) -> dict: + """Base64 encode a dictionary. Takes the same keywords as `json.loads` function.""" + return json.loads(base64.urlsafe_b64decode(value), **kwargs) -- cgit 1.4.1