#!/usr/bin/env python import base64 class Encoder: @classmethod def encode(cls, data): # Encode twice, in order to avoid issues like '+' being # interpreted as space after decoding if not data: return data encodedData = base64.b64encode(base64.encodestring('%s' % data)) return encodedData @classmethod def decode(cls, encodedData): if not encodedData: return encodedData data = base64.decodestring(base64.b64decode('%s' % encodedData)) return data @classmethod def encodeDict(cls, dict, excludedKeyList=[]): encodedDict = {} for (key,value) in dict.items(): if key not in excludedKeyList: encodedDict[key] = cls.encode(value) else: encodedDict[key] = value return encodedDict @classmethod def decodeDict(cls, encodedDict, excludedKeyList=[]): dict = {} for (key,value) in encodedDict.items(): if key not in excludedKeyList: dict[key] = cls.decode(value) else: dict[key] = value return dict