From 7063c39f201aa78ecded651d8e49bd58b1d7bbdf Mon Sep 17 00:00:00 2001 From: anmol singh Date: Wed, 22 Nov 2023 11:36:38 +0530 Subject: [PATCH] fix: status code 202 error --- sources/graphics_chart_drawer.py | 3 ++- sources/main.py | 11 ++++++++++- sources/manager_download.py | 16 +++++++++++----- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/sources/graphics_chart_drawer.py b/sources/graphics_chart_drawer.py index 4130646..8f97860 100644 --- a/sources/graphics_chart_drawer.py +++ b/sources/graphics_chart_drawer.py @@ -21,7 +21,8 @@ async def create_loc_graph(yearly_data: Dict, save_path: str): :param save_path: Path to save the graph file. """ colors = await DM.get_remote_yaml("linguist") - + if colors is None: + colors = dict() years = len(yearly_data.keys()) year_indexes = arange(years) diff --git a/sources/main.py b/sources/main.py index 4c3ec22..c8d49b5 100644 --- a/sources/main.py +++ b/sources/main.py @@ -31,6 +31,9 @@ async def get_waka_time_stats(repositories: Dict, commit_dates: Dict) -> str: stats = str() data = await DM.get_remote_json("waka_latest") + if data is None: + DBM.p("WakaTime data unavailable!") + return stats if EM.SHOW_COMMIT or EM.SHOW_DAYS_OF_WEEK: # if any on flag is turned on then we need to calculate the data and print accordingly DBM.i("Adding user commit day time info...") stats += f"{await make_commit_day_time_list(data['data']['timezone'], repositories, commit_dates)}\n\n" @@ -89,6 +92,9 @@ async def get_short_github_info() -> str: stats += f"> 📦 {disk_usage} \n > \n" data = await DM.get_remote_json("github_stats") + if data is None: + DBM.p("GitHub contributions data unavailable!") + return stats DBM.i("Adding contributions info...") if len(data["years"]) > 0: contributions = FM.t("Contributions in the year") % (intcomma(data["years"][0]["total"]), data["years"][0]["year"]) @@ -161,7 +167,10 @@ async def get_stats() -> str: if EM.SHOW_TOTAL_CODE_TIME: DBM.i("Adding total code time info...") data = await DM.get_remote_json("waka_all") - stats += f"![Code Time](http://img.shields.io/badge/{quote('Code Time')}-{quote(str(data['data']['text']))}-blue)\n\n" + if data is None: + DBM.p("WakaTime data unavailable!") + else: + stats += f"![Code Time](http://img.shields.io/badge/{quote('Code Time')}-{quote(str(data['data']['text']))}-blue)\n\n" if EM.SHOW_PROFILE_VIEWS: DBM.i("Adding profile views info...") diff --git a/sources/manager_download.py b/sources/manager_download.py index 00707ab..dddd567 100644 --- a/sources/manager_download.py +++ b/sources/manager_download.py @@ -166,7 +166,7 @@ class DownloadManager: await resource @staticmethod - async def _get_remote_resource(resource: str, convertor: Optional[Callable[[bytes], Dict]]) -> Dict: + async def _get_remote_resource(resource: str, convertor: Optional[Callable[[bytes], Dict]]) -> Dict or None: """ Receive execution result of static query, wait for it if necessary. If the query wasn't cached previously, cache it. @@ -174,7 +174,7 @@ class DownloadManager: :param resource: Static query identifier. :param convertor: Optional function to convert `response.contents` to dict. By default `response.json()` is used. - :return: Response dictionary. + :return: Response dictionary or None. """ DBM.i(f"\tMaking a remote API query named '{resource}'...") if isinstance(DownloadManager._REMOTE_RESOURCES_CACHE[resource], Awaitable): @@ -184,16 +184,22 @@ class DownloadManager: else: res = DownloadManager._REMOTE_RESOURCES_CACHE[resource] DBM.g(f"\tQuery '{resource}' loaded from cache!") - if res.status_code == 200 or res.status_code == 202: + if res.status_code == 200: if convertor is None: return res.json() else: return convertor(res.content) + elif res.status_code == 201: + DBM.w(f"\tQuery '{resource}' returned 201 status code") + return None + elif res.status_code == 202: + DBM.w(f"\tQuery '{resource}' returned 202 status code") + return None else: raise Exception(f"Query '{res.url}' failed to run by returning code of {res.status_code}: {res.json()}") @staticmethod - async def get_remote_json(resource: str) -> Dict: + async def get_remote_json(resource: str) -> Dict or None: """ Shortcut for `_get_remote_resource` to return JSON response data. :param resource: Static query identifier. @@ -202,7 +208,7 @@ class DownloadManager: return await DownloadManager._get_remote_resource(resource, None) @staticmethod - async def get_remote_yaml(resource: str) -> Dict: + async def get_remote_yaml(resource: str) -> Dict or None: """ Shortcut for `_get_remote_resource` to return YAML response data. :param resource: Static query identifier.