diff --git a/leaderboard/leaderboard.py b/leaderboard/leaderboard.py index 77cfffb..a216c12 100644 --- a/leaderboard/leaderboard.py +++ b/leaderboard/leaderboard.py @@ -107,14 +107,8 @@ class Leaderboard(commands.Cog): try: async with self.session.get( f"{self.api_base_url}/leaderboard", - headers={"Authorization": f"Token {self.admin_secret['admin_secret']}"} + headers={"Authorization": self.admin_secret["admin_secret"]} ) as resp: - try: - data = await resp.json() - except aiohttp.ContentTypeError: - log.error("API returned invalid JSON response during initialization") - return - if resp.status == 200: # Start auto-sync task if API connection successful self.auto_sync_task = self.bot.loop.create_task(self._auto_sync_task()) @@ -123,8 +117,12 @@ class Leaderboard(commands.Cog): log.error("Failed to initialize API: Invalid admin secret") else: log.error(f"Failed to initialize API: Status {resp.status}") - if data.get("error"): - log.error(f"Error message: {data['error']}") + try: + data = await resp.json() + if data.get("error"): + log.error(f"Error message: {data['error']}") + except aiohttp.ContentTypeError: + log.error("API returned invalid JSON response during initialization") except aiohttp.ClientError as e: log.error(f"Failed to connect to API: {str(e)}") except Exception as e: @@ -264,7 +262,7 @@ class Leaderboard(commands.Cog): async with self.session.post( f"{self.api_base_url}/leaderboard", headers={ - "Authorization": f"Token {self.admin_secret['admin_secret']}", + "Authorization": self.admin_secret["admin_secret"], "Content-Type": "application/json" }, json={ @@ -274,24 +272,26 @@ class Leaderboard(commands.Cog): "optedOut": opted_out } ) as resp: - try: - data = await resp.json() - except aiohttp.ContentTypeError: - log.error(f"API returned invalid JSON response with status {resp.status}") - return False - if resp.status == 200: - if data.get("success"): - log.info(f"Updated leaderboard for {username}: {credits} credits (opted_out: {opted_out})") - return True - else: - log.error(f"API update failed: {data.get('error', 'Unknown error')}") + try: + data = await resp.json() + if data.get("success"): + log.info(f"Updated leaderboard for {username}: {credits} credits (opted_out: {opted_out})") + return True + else: + log.error(f"API update failed: {data.get('error', 'Unknown error')}") + except aiohttp.ContentTypeError: + log.error("API returned invalid JSON response") elif resp.status == 401: log.error("Unauthorized: Invalid admin secret") else: log.error(f"API update failed: Status {resp.status}") - if data.get("error"): - log.error(f"Error message: {data['error']}") + try: + data = await resp.json() + if data.get("error"): + log.error(f"Error message: {data['error']}") + except aiohttp.ContentTypeError: + pass return False except aiohttp.ClientError as e: log.error(f"API request failed: {str(e)}") @@ -308,24 +308,26 @@ class Leaderboard(commands.Cog): try: async with self.session.get( f"{self.api_base_url}/leaderboard", - headers={"Authorization": f"Token {self.admin_secret['admin_secret']}"} + headers={"Authorization": self.admin_secret["admin_secret"]} ) as resp: - try: - data = await resp.json() - except aiohttp.ContentTypeError: - log.error(f"API returned invalid JSON response with status {resp.status}") - return None - if resp.status == 200: - if "leaderboard" in data: - return data["leaderboard"] - log.error("Invalid API response format") + try: + data = await resp.json() + if "leaderboard" in data: + return data["leaderboard"] + log.error("Invalid API response format") + except aiohttp.ContentTypeError: + log.error("API returned invalid JSON response") elif resp.status == 401: log.error("Unauthorized: Invalid admin secret") else: log.error(f"Failed to fetch leaderboard: Status {resp.status}") - if data.get("error"): - log.error(f"Error message: {data['error']}") + try: + data = await resp.json() + if data.get("error"): + log.error(f"Error message: {data['error']}") + except aiohttp.ContentTypeError: + pass return None except aiohttp.ClientError as e: log.error(f"Error fetching leaderboard: {str(e)}")