import datetime

import redis
from django.conf import settings


class RedisInterface:
    """ Helper class, to set and get keepalive for Endpoint model """

    endpoint_field_name = "ENDPOINT_STATUS_{}"
    endpoint_timeout = 120

    def __init__(self):
        self.redis_instance = redis.StrictRedis(host=getattr(settings, 'REDIS_HOST', 'redis'),
                                                port=getattr(settings, 'REDIS_PORT', 6379))

    def get_keepalive(self, pk):
        timestamp = self.redis_instance.get(self.endpoint_field_name.format(pk))

        if timestamp is None:
            return False

        delta = datetime.datetime.now() - datetime.datetime.fromtimestamp(float(timestamp.decode("utf-8")))
        return delta.seconds < self.endpoint_timeout

    def set_keepalive(self, pk):
        self.redis_instance.set(self.endpoint_field_name.format(pk), str(datetime.datetime.now().timestamp()))
