from fansifter_common.exceptions import FansifterError, ObjectNotFoundError from dmp.adapters.aws.location import Location class AudienceNotFoundError(ObjectNotFoundError): code = "audience_not_found" message = "Audience not found" class AudienceTargetNotSupportedError(FansifterError): code = "audience_target_not_supported" message = "Audience target not supported" status_code = 400 class AudienceUniqueNameError(FansifterError): code = "audience_unique_name" message = "Audience name must be unique" status_code = 400 class EmptyAudienceError(FansifterError): code = "empty_audience" message = "Audience is empty" status_code = 400 class AudienceExportNotFoundError(ObjectNotFoundError): code = "audience_export_not_found" message = "Audience export not found" class AudienceExportInvalidStatusError(FansifterError): code = "audience_export_invalid_status" message = "Invalid audience export status" status_code = 400 class AudienceExportError(FansifterError): code = "audience_export_error" message = "Audience export error" class AudienceShareNotFoundError(ObjectNotFoundError): code = "audience_share_not_found" message = "Audience share not found" class AudienceShareError(FansifterError): code = "audience_share_error" message = "Audience share error" class AudienceTooSmallError(FansifterError): code = "audience_too_small" message = "Audience size should be at least 1000 or more." status_code = 400 class AudienceShareActiveConnectionNotFoundError(FansifterError): code = "audience_share_active_connection_not_found" message = "Active connection for Audience share not found" status_code = 404 class AudienceTargetInvalidArtistIdError(FansifterError): code = "audience_target_invalid_artist_id" message = "Audience target requires only one fandata_list_id of type ARTIST" status_code = 400 class AudienceInvalidCustomListIdError(FansifterError): code = "audience_invalid_custom_list_id" message = "Invalid custom list id" status_code = 400 class AudienceCityFilterError(FansifterError): code = "audience_city_filter_error" message = "City filter error" status_code = 400 def __init__( self, message: str | None = None, *, code: str | None = None, location: Location | None = None, ) -> None: super().__init__(message, code=code) self.location = location class ArtistPhoneNumberNotFoundError(FansifterError): code = "artist_phone_number_not_found" message = "Artist phone number not found" status_code = 400