from apollo_utils.service.clients.aiohttp.clients.constants import Service from apollo_utils.service.exceptions import UnprocessableEntity from apollo_utils.service.schemas.base import RequestSchema from apollo_utils.service.schemas.fields.enum import EnumField from marshmallow import Schema, fields, validates from server.constants.core import DSP, ApolloEntityType class FavoritesGet: class Request(RequestSchema): type = EnumField(ApolloEntityType, required=True) application = EnumField(Service, required=True) dsp = EnumField(DSP, required=False) @validates("type") def validate_type(self, value): if value != ApolloEntityType.TRACK: UnprocessableEntity("The method or operation is not implemented") @validates("application") def validate_type(self, value): if value not in (Service.APOLLO_API, Service.RTI_API): UnprocessableEntity("The method or operation is not implemented") class Response(Schema): tracks = fields.List(fields.String(), default=None) playlists = fields.List(fields.String(), default=None) class MilestonesResponse(Schema): class Item(Schema): isrc: str artistId: str data = fields.List(fields.Nested(Item))