module Sound.Freesound.Bookmark (
BookmarkCategory(..)
) where
import Data.Aeson
import Data.Text (Text)
import Sound.Freesound.API (Resource, URI)
import Sound.Freesound.List (List)
import qualified Sound.Freesound.Sound.Type as Sound
#if __GLASGOW_HASKELL__ < 710
import Control.Applicative
#endif
data BookmarkCategory = BookmarkCategory {
url :: URI
, name :: Text
, numSounds :: Int
, sounds :: Resource (List Sound.Summary)
} deriving (Eq, Show)
instance FromJSON BookmarkCategory where
parseJSON (Object v) =
BookmarkCategory
<$> v .: "url"
<*> v .: "name"
<*> v .: "num_sounds"
<*> v .: "sounds"
parseJSON _ = fail "Couldn't parse BookmarkCategory"