# -*- coding: utf-8 -*-

from __future__ import absolute_import

from benedict.serializers.abstract import AbstractSerializer

import base64
import pickle


class PickleSerializer(AbstractSerializer):

    def __init__(self):
        super(PickleSerializer, self).__init__()

    def decode(self, s, **kwargs):
        encoding = kwargs.pop('encoding', 'utf-8')
        return pickle.loads(
            base64.b64decode(s.encode(encoding)), **kwargs)

    def encode(self, d, **kwargs):
        encoding = kwargs.pop('encoding', 'utf-8')
        kwargs.setdefault('protocol', 2)
        return base64.b64encode(
            pickle.dumps(d, **kwargs)).decode(encoding)
