{-# LANGUAGE CPP, OverloadedStrings #-}
module Sound.Freesound.Bookmark.Internal (
  Categories(..)
) where

import           Control.Monad (mzero)
import           Data.Aeson
import           Sound.Freesound.Bookmark

#if __GLASGOW_HASKELL__ < 710
import           Control.Applicative
#endif

data Categories = Categories {
  numCategories :: Int
, categories :: [Category]
} deriving (Eq, Show)

instance FromJSON Categories where
  parseJSON (Object v) =
    Categories
    <$> v .: "num_results"
    <*> v .: "categories"
  parseJSON _ = mzero