-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | interface to MusicBrainz XML2 web service
--   
--   interface to MusicBrainz XML2 web service
@package MusicBrainz
@version 0.2.4

module Network.Protocol.MusicBrainz.Types
newtype MBID
MBID :: Text -> MBID
unMBID :: MBID -> Text
data Release
Release :: MBID -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe TextRepresentation -> [ArtistCredit] -> Maybe Day -> Maybe Text -> [ReleaseEvent] -> Maybe Text -> Maybe Text -> Maybe CoverArtArchive -> Vector Medium -> Release
_releaseId :: Release -> MBID
_releaseTitle :: Release -> Text
_releaseStatus :: Release -> Maybe Text
_releaseQuality :: Release -> Maybe Text
_releasePackaging :: Release -> Maybe Text
_releaseTextRepresentation :: Release -> Maybe TextRepresentation
_releaseArtistCredit :: Release -> [ArtistCredit]
_releaseDate :: Release -> Maybe Day
_releaseCountry :: Release -> Maybe Text
_releaseEvents :: Release -> [ReleaseEvent]
_releaseBarcode :: Release -> Maybe Text
_releaseASIN :: Release -> Maybe Text
_releaseCoverArtArchive :: Release -> Maybe CoverArtArchive
_releaseMedia :: Release -> Vector Medium
data TextRepresentation
TextRepresentation :: Maybe Text -> Maybe Text -> TextRepresentation
_textRepLanguage :: TextRepresentation -> Maybe Text
_textRepScript :: TextRepresentation -> Maybe Text
data Medium
Medium :: Maybe Text -> Maybe Integer -> Maybe Text -> Integer -> Maybe Integer -> Maybe [Track] -> Medium
_mediumTitle :: Medium -> Maybe Text
_mediumPosition :: Medium -> Maybe Integer
_mediumFormat :: Medium -> Maybe Text
_mediumTrackCount :: Medium -> Integer
_mediumTrackOffset :: Medium -> Maybe Integer
_mediumTrackList :: Medium -> Maybe [Track]
data Track
Track :: MBID -> [ArtistCredit] -> Maybe Integer -> Maybe Text -> Maybe Integer -> Recording -> Track
_trackId :: Track -> MBID
_trackArtistCredit :: Track -> [ArtistCredit]
_trackPosition :: Track -> Maybe Integer
_trackNumber :: Track -> Maybe Text
_trackLength :: Track -> Maybe Integer
_trackRecording :: Track -> Recording
data Recording
Recording :: MBID -> Maybe Text -> Maybe Integer -> [ArtistCredit] -> Recording
_recordingId :: Recording -> MBID
_recordingTitle :: Recording -> Maybe Text
_recordingLength :: Recording -> Maybe Integer
_recordingArtistCredit :: Recording -> [ArtistCredit]
data ArtistCredit
ArtistCredit :: Artist -> Maybe Text -> Maybe Text -> ArtistCredit
_artistCreditArtist :: ArtistCredit -> Artist
_artistCreditJoinPhrase :: ArtistCredit -> Maybe Text
_artistCreditName :: ArtistCredit -> Maybe Text
data Artist
Artist :: MBID -> Maybe Text -> Maybe Text -> Maybe Text -> Artist
_artistId :: Artist -> MBID
_artistName :: Artist -> Maybe Text
_artistSortName :: Artist -> Maybe Text
_artistDisambiguation :: Artist -> Maybe Text
data ReleaseGroup
ReleaseGroup :: MBID -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> [ArtistCredit] -> ReleaseGroup
_releaseGroupId :: ReleaseGroup -> MBID
_releaseGroupType :: ReleaseGroup -> Text
_releaseGroupTitle :: ReleaseGroup -> Maybe Text
_releaseGroupFirstReleaseDate :: ReleaseGroup -> Maybe Text
_releaseGroupPrimaryType :: ReleaseGroup -> Maybe Text
_releaseGroupArtistCredit :: ReleaseGroup -> [ArtistCredit]
data LabelInfo
LabelInfo :: Maybe Text -> Label -> LabelInfo
_labelInfoCatalogNumber :: LabelInfo -> Maybe Text
_labelInfoLabel :: LabelInfo -> Label
data Label
Label :: MBID -> Maybe Text -> Maybe Text -> Maybe Text -> Label
_labelId :: Label -> MBID
_labelName :: Label -> Maybe Text
_labelSortName :: Label -> Maybe Text
_labelLabelCode :: Label -> Maybe Text
data ReleaseEvent
ReleaseEvent :: Maybe Day -> Maybe Area -> ReleaseEvent
_releaseEventDate :: ReleaseEvent -> Maybe Day
_releaseEventArea :: ReleaseEvent -> Maybe Area
data Area
Area :: MBID -> Maybe Text -> Maybe Text -> [ISO3166Code] -> [ISO3166Code] -> [ISO3166Code] -> Area
_areaId :: Area -> MBID
_areaName :: Area -> Maybe Text
_areaSortName :: Area -> Maybe Text
_areaISO3166_1Codes :: Area -> [ISO3166Code]
_areaISO3166_2Codes :: Area -> [ISO3166Code]
_areaISO3166_3Codes :: Area -> [ISO3166Code]
newtype ISO3166Code
ISO3166Code :: Text -> ISO3166Code
unISO3166Code :: ISO3166Code -> Text
data CoverArtArchive
CoverArtArchive :: Maybe Bool -> Maybe Integer -> Maybe Bool -> Maybe Bool -> CoverArtArchive
_coverArtArchiveArtwork :: CoverArtArchive -> Maybe Bool
_coverArtArchiveCount :: CoverArtArchive -> Maybe Integer
_coverArtArchiveFront :: CoverArtArchive -> Maybe Bool
_coverArtArchiveBack :: CoverArtArchive -> Maybe Bool
instance Eq MBID
instance Show MBID
instance Eq TextRepresentation
instance Show TextRepresentation
instance Eq Artist
instance Show Artist
instance Eq ArtistCredit
instance Show ArtistCredit
instance Eq Recording
instance Show Recording
instance Eq Track
instance Show Track
instance Eq Medium
instance Show Medium
instance Eq ReleaseGroup
instance Show ReleaseGroup
instance Eq Label
instance Show Label
instance Eq LabelInfo
instance Show LabelInfo
instance Eq CoverArtArchive
instance Show CoverArtArchive
instance Eq ISO3166Code
instance Show ISO3166Code
instance Eq Area
instance Show Area
instance Eq ReleaseEvent
instance Show ReleaseEvent
instance Eq Release
instance Show Release
instance FromJSON ISO3166Code
instance FromJSON CoverArtArchive
instance FromJSON Area
instance FromJSON ReleaseEvent
instance FromJSON Artist
instance FromJSON ArtistCredit
instance FromJSON Recording
instance FromJSON Track
instance FromJSON Medium
instance FromJSON TextRepresentation
instance FromJSON Release

module Network.Protocol.MusicBrainz.Utils
nameCreditsToArtistName :: [ArtistCredit] -> Text
nameCreditsToArtistSortName :: [ArtistCredit] -> Text

module Network.Protocol.MusicBrainz.JSON.WebService
getRecordingById :: (MonadBaseControl IO m, MonadIO m) => MBID -> m (Either String Recording)
getReleaseById :: (MonadBaseControl IO m, MonadIO m) => MBID -> m (Either String Release)
searchReleasesByArtistAndRelease :: (MonadIO m, MonadBaseControl IO m) => Text -> Text -> Maybe Int -> Maybe Int -> m (Either String [(Int, Release)])

module Network.Protocol.MusicBrainz.XML2.WebService
getRecordingById :: (MonadBaseControl IO m, MonadIO m, MonadThrow m) => MBID -> m Recording
getReleaseById :: (MonadBaseControl IO m, MonadIO m, MonadThrow m) => MBID -> m Release
searchReleasesByArtistAndRelease :: (MonadIO m, MonadBaseControl IO m, MonadThrow m) => Text -> Text -> Maybe Int -> Maybe Int -> m [(Int, Release)]
