# standard imports
import logging

# external imports
from cic_types.condiments import MetadataPointer
from cic_types.ext.metadata import MetadataRequestsHandler
from cic_types.processor import generate_metadata_pointer

# local imports
from cic_ussd.cache import cache_data, get_cached_data

logg = logging.getLogger(__file__)


class UssdMetadataHandler(MetadataRequestsHandler):
    def __init__(self, identifier: bytes, cic_type: MetadataPointer = None):
        super().__init__(cic_type, identifier)

    def cache_metadata(self, data: str):
        """
        :param data:
        :type data:
        :return:
        :rtype:
        """
        cache_data(self.metadata_pointer, data)
        logg.debug(f'caching: {data} with key: {self.metadata_pointer}')

    def get_cached_metadata(self):
        """"""
        key = generate_metadata_pointer(self.identifier, self.cic_type)
        return get_cached_data(key)