""" Apollo API exceptions. """ from apollo_utils.service.exceptions import BadRequest, Conflict, NotFound class IsrcRelationError(BadRequest): """Base class for isrc merging exceptions.""" class AlreadyAddedError(IsrcRelationError): code = "isrc_relation.already_added" detail = "Relation already exists." class AlreadyRemovedError(IsrcRelationError): code = "isrc_relation.already_removed" detail = "Relation does not exist." class StarredTrackError(BadRequest): """Base class for starred tracks exceptions.""" class BrokenIsrcError(StarredTrackError): code = "starring.broken_isrc" detail = "Sorry, this track cannot be starred due to broken ISRC." extra = {"isrc": [detail]} class BrokenUriError(StarredTrackError): code = "starring.broken_uri" detail = "Sorry, this track cannot be starred due to broken URI." extra = {"URI": [detail]} class UriAbsenceError(StarredTrackError): code = "starring.uri_absence" detail = "Sorry, this track cannot be starred due to absence of URI." extra = {"URI": [detail]} class DataAbsenceError(StarredTrackError): code = "starring.data_absence" detail = "Sorry, this track cannot be starred due to absence of data." extra = {"isrc": [detail]} class AlreadyStarredError(StarredTrackError): code = "starring.already_starred" detail = "This track was starred already. No changes have been made." class AlreadyUnstarredError(StarredTrackError): code = "starring.already_unstarred" detail = "This track was unstarred already. No changes have been made." class TrackNotFound(NotFound): """Raised if track is not found by ID.""" code = "track_not_found" class GTPNotFound(NotFound): """Raised if GTP history could not be found for selected type / date.""" code = "gtp_not_found" class OnboardingIntegrityError(Conflict): """Raised if user already boarded.""" code = "onboarding.integrity_error" detail = "User is already boarded. No changes have been made." class VersionCarouselIntegrityError(Conflict): """Raised if user have alredy seen current carousel version.""" code = "version_carousel.integrity_error" detail = "User have alredy seen current carousel. No changes have been made."