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)
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)