import base64
import logging

from django.conf import settings

from app.api.response_builder import ResponseBuilder

log = logging.getLogger(__name__)


def is_valid_api_key_auth(request):
    client_id = request.META.get('X-Client-Id', None)
    client_secret = request.META.get('X-Client-Secret', None)
    log.debug('Validating caller')
    if not (client_id and client_secret):
        return False

    if settings.API_KEY[client_id] == client_secret:
        return True

    return False


def validate_caller_api_key(func):
    def _wrapped_view_func(request, *args, **kwargs):
        if is_valid_api_key_auth(request):
            return func(request, *args, **kwargs)
        else:
            result_builder = ResponseBuilder()
            result_builder.user_unauthorized_401().fail()

            return result_builder.get_response()

    return _wrapped_view_func
