Skip to content
Snippets Groups Projects
Forked from DM / dm-docs
261 commits behind, 679 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
encoder.py 1.05 KiB
#!/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
        encodedData = base64.b64encode(base64.encodestring('%s' % data))
        return encodedData

    @classmethod
    def decode(cls, 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