from aiohttp.client import ClientSession


class KDCA:
    def __init__(self) -> None:
        self.ncv_root_url = "https://ncv.kdca.go.kr/"  # 질병관리청/중앙방역대본부 코로나 19 예방접종 현황 사이트 URL
        self.ncv_main_status_uri = "mainStatus.es?mid=a11702000000"  # 예방접종 상세 현황 (접종실적 총괄/시도별 접종 현황) 페이지 URI

    @staticmethod
    async def fetch_html(url: str, headers: dict) -> str:
        """Fetch HTML

        :param url: 가져올 웹 페이지 URL
        :param headers: User-Agent 포함한 HTTP header
        :return: UTF-8 encoded HTML
        """
        async with ClientSession(headers=headers) as session:
            async with session.get(url=url) as resp:
                HTTP_STATUS_CODE: int = resp.status

                # HTTP STATUS CODE 가 200이 아닐경우 ClientResponseError 반환
                if HTTP_STATUS_CODE != 200:
                    raise resp.raise_for_status()
                html_enc = await resp.text(encoding="utf-8")
        return html_enc

    async def ncv_status_classification(self):
        USER_AGENT = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.48 "
        }
        html = await self.fetch_html(url=self.ncv_root_url + self.ncv_main_status_uri, headers=USER_AGENT)







from aiohttp.client import ClientSession


class KDCA:
    def __init__(self) -> None:
        self.ncv_root_url = "https://ncv.kdca.go.kr/"  # 질병관리청/중앙방역대본부 코로나 19 예방접종 현황 사이트 URL
        self.ncv_main_status_uri = "mainStatus.es?mid=a11702000000"  # 예방접종 상세 현황 (접종실적 총괄/시도별 접종 현황) 페이지 URI

    @staticmethod
    async def fetch_html(url: str, headers: dict) -> str:
        """Fetch HTML

        :param url: 가져올 웹 페이지 URL
        :param headers: User-Agent 포함한 HTTP header
        :return: UTF-8 encoded HTML
        """
        async with ClientSession(headers=headers) as session:
            async with session.get(url=url) as resp:
                HTTP_STATUS_CODE: int = resp.status

                # HTTP STATUS CODE 가 200이 아닐경우 ClientResponseError 반환
                if HTTP_STATUS_CODE != 200:
                    raise resp.raise_for_status()
                html_enc = await resp.text(encoding="utf-8")
        return html_enc

    async def ncv_status_classification(self):
        USER_AGENT = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.48 "
        }
        html = await self.fetch_html(url=self.ncv_root_url + self.ncv_main_status_uri, headers=USER_AGENT)







# 질병관리청/중앙방역대본부 코로나 19 예방접종 현황 사이트 URL # 예방접종 상세 현황 (접종실적 총괄/시도별 접종 현황) 페이지 URI Fetch HTML          :param url: 가져올 웹 페이지 URL         :param headers: User-Agent 포함한 HTTP header         :return: UTF-8 encoded HTML # HTTP STATUS CODE 가 200이 아닐경우 ClientResponseError 반환