import logging

import requests
from django.conf import settings

from app.api import api
from app.api.api_accessor import APIAccessor
from app.models import Pincodes
from app.util import util

log = logging.getLogger(__name__)


class PincodeAccessor(APIAccessor):
    PINCODE_FETCH = f"https://api.data.gov.in/resource/6176ee09-3d56-4a3b-8115-21841576b2f6?" \
                    f"api-key={settings.PINCODE_API_KEY}&format=json&filters%5Bpincode%5D="

    @classmethod
    def get_pincode_details(cls, pincode):
        url = PincodeAccessor.PINCODE_FETCH + pincode
        status, response = cls.request(requests.request, method="get", url=url)

        if util.is_status_failed(status):
            log.error('Unable to fetch pin code')
            return status, None

        if response.get("records", None):
            return api.SUCCESS, response.get("records")[0]

        return api.PINCODE_NOT_FOUND, None
