From eeaba1d1a776489bf969f484b4a9d58ec7ce9d8b Mon Sep 17 00:00:00 2001 From: Daniel <3638478+Danieldiazi@users.noreply.github.com> Date: Mon, 9 Dec 2024 21:59:03 +0100 Subject: [PATCH] Update honda_api.py Replace this generic exception class with a more specific one. "Exception" and "BaseException" should not be raised python:S112 --- .../honda_recall_check/honda_api.py | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/custom_components/honda_recall_check/honda_api.py b/custom_components/honda_recall_check/honda_api.py index 9515aaf..7604ab3 100644 --- a/custom_components/honda_recall_check/honda_api.py +++ b/custom_components/honda_recall_check/honda_api.py @@ -1,4 +1,9 @@ import requests +import json + +class HondaRecallAPIError(Exception): + """Excepción personalizada para errores en la consulta a la API de Honda.""" + pass class HondaRecallAPI: """Clase que interactúa con la API de Honda para verificar llamadas a revisión.""" @@ -10,32 +15,33 @@ def __init__(self, vin): def check_recall(self): """Envía el VIN al endpoint y procesa la respuesta JSON.""" try: - # Configurar los headers headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", "Content-Type": "application/x-www-form-urlencoded" } payload = {"vin": self.vin} - # Realizar la solicitud POST response = requests.post(self.BASE_URL, headers=headers, data=payload) - response.raise_for_status() # Lanza un error si la respuesta no es 200 OK + response.raise_for_status() # Lanza requests.exceptions.HTTPError si no es 200 OK - # Parsear la respuesta JSON json_response = response.json() - # Extraer detalles de llamadas a revisión si existen if "recall" in json_response and "updateDetails" in json_response["recall"]: updates = json_response["recall"]["updateDetails"] return [ {"campaign": update["campaign"], "description": update["description"]} for update in updates ] - - # No hay llamadas a revisión return [] - except Exception as e: - raise Exception(f"Error al consultar Honda API: {e}") + except requests.exceptions.RequestException as e: + # Error relacionado con la solicitud HTTP + raise HondaRecallAPIError(f"Error de red o HTTP al consultar Honda API: {e}") + except json.JSONDecodeError as e: + # Error al parsear el JSON + raise HondaRecallAPIError(f"Error al parsear la respuesta JSON: {e}") + except KeyError as e: + # Error al acceder a llaves inexistentes en el JSON + raise HondaRecallAPIError(f"La estructura del JSON no es la esperada: faltante {e}")