def wrapper_call_exception(
        self, response, tapi_exception, api_params, *args, **kwargs
    ):
        """
        Для вызова кастомных исключений.
        Когда например сервер отвечает 200,
        а ошибки передаются внутри json.
        """
        try:
            jdata = response.json()
        except (json.JSONDecodeError, simplejson.JSONDecodeError):
            raise exceptions.YandexMetrikaApiError(response)
        else:
            error_code = int(jdata.get("code", 0))
            message = jdata.get("message")

            if error_code == 429:
                raise exceptions.YandexMetrikaLimitError(response)
            elif error_code == 403:
                raise exceptions.YandexMetrikaTokenError(response)
            elif message == "Incorrect part number" and api_params.get(
                "receive_all_data", False
            ):
                # Срабатывает при попытке скачать несуществующую часть отчета.
                # А при получении всех частей отчета автоматически,
                # всегда идет попытка получить следующий часть.
                pass
            else:
                raise exceptions.YandexMetrikaClientError(response)
示例#2
0
    def error_handling(self, tapi_exception, error_message, repeat_number,
                       response, request_kwargs, api_params, **kwargs):
        if error_message.get("error_text"):
            raise exceptions.YandexMetrikaApiError(response)
        else:
            error_code = int(error_message.get("code", 0))

            if error_code == 429:
                raise exceptions.YandexMetrikaLimitError(
                    response, **error_message)
            elif error_code == 403:
                raise exceptions.YandexMetrikaTokenError(
                    response, **error_message)
            else:
                raise exceptions.YandexMetrikaClientError(
                    response, **error_message)
    def wrapper_call_exception(self, response, tapi_exception, api_params,
                               *args, **kwargs):
        try:
            jdata = response.json()
        except json.JSONDecodeError:
            raise exceptions.YandexMetrikaApiError(response)
        else:
            error_code = int(jdata.get("code", 0))
            message = jdata.get("message")

            if error_code == 429:
                raise exceptions.YandexMetrikaLimitError(response)
            elif error_code == 403:
                raise exceptions.YandexMetrikaTokenError(response)
            elif message == "Incorrect part number" and api_params.get(
                    "receive_all_data", False):
                # Срабатывает при попытке скачать несуществующую часть отчета.
                # А при получении всех частей отчета автоматически,
                # всегда идет попытка получить следующий часть.
                pass
            else:
                raise exceptions.YandexMetrikaClientError(response)