from functools import cached_property from typing import Any from fansifter_common.httpclient.exceptions import HTTPClientError from dmp.adapters.google.enums import GoogleErrorCode class GoogleClientError(HTTPClientError): name = "google_client_" @property def is_not_ads_user_error(self) -> bool: if ( self.status_code == 401 and self.response and GoogleErrorCode.NOT_ADS_USER in self.response.text ): return True return False @cached_property def error_data(self) -> Any: if self.response: return self.response.json() return None @property def log_extra(self) -> dict[str, Any]: extra = super().log_extra extra[f"{self.name}error_data"] = self.error_data return extra