import logging

from app.api import api
from app.util import util

log = logging.getLogger(__name__)


class APIAccessor:
    @classmethod
    def request(cls, request_api, **args):
        log.debug("API request data: {}".format(args))

        response = request_api(**args)
        log.debug("API response: {} {}".format(response.status_code, response.content))

        if 200 <= response.status_code < 300:
            return api.SUCCESS, response.json()

        return api.API_FAILURE, response

    @classmethod
    def request_skip_logging(cls, request_api, **args):
        response = request_api(**args)
        log.debug("API response: {} {}".format(response.status_code, response.content))

        if 200 <= response.status_code < 300:
            return api.SUCCESS, response.json()

        return api.API_FAILURE, response

    @classmethod
    def get_reference_id(cls):
        uid = util.get_char_uuid(16)
        return f'{uid[:4]}-{uid[4:8]}-{uid[8:12]}-{uid[12:16]}'
