module Sound.Freesound.User (
User(..)
, Summary
, Detail
, sounds
, packs
, firstName
, lastName
, about
, homePage
, signature
, dateJoined
, bookmarkCategories
, getUser
, getUserByName
, getBookmarkCategories
, getSounds
, getSounds_
, getPacks
) where
import Control.Monad (liftM)
import Data.Default (def)
import Data.Text (Text)
import qualified Data.Text as T
import Sound.Freesound.API (Freesound, appendQuery, getResource, resourceURI)
import qualified Sound.Freesound.Bookmark as Bookmark
import qualified Sound.Freesound.Bookmark.Internal as Bookmark
import Sound.Freesound.Pack (Packs)
import Sound.Freesound.Search (Pagination)
import Sound.Freesound.Sound (Sounds)
import Sound.Freesound.User.Type
getUser :: (User a) => a -> Freesound Detail
getUser = getResource . ref
getUserByName :: Text -> Freesound Detail
getUserByName t = getResource $ resourceURI [ T.pack "people", t ] []
getBookmarkCategories :: Detail -> Freesound [Bookmark.Category]
getBookmarkCategories = liftM Bookmark.categories . getResource . bookmarkCategories
getSounds :: Pagination -> Detail -> Freesound Sounds
getSounds p = getResource . appendQuery p . sounds
getSounds_ :: Detail -> Freesound Sounds
getSounds_ = getSounds def
getPacks :: Detail -> Freesound Packs
getPacks = getResource . packs