module Network.MPD.Commands.Util where
import Network.MPD.Commands.Parse
import Network.MPD.Commands.Types
import Network.MPD.Core
import Network.MPD.Utils
import Control.Monad.Error (throwError)
import Data.List (intersperse)
getResponse_ :: MonadMPD m => String -> m ()
getResponse_ x = getResponse x >> return ()
getResponses :: MonadMPD m => [String] -> m [String]
getResponses cmds = getResponse . concat $ intersperse "\n" cmds'
where cmds' = "command_list_begin" : cmds ++ ["command_list_end"]
failOnEmpty :: MonadMPD m => [String] -> m [String]
failOnEmpty [] = throwError $ Unexpected "Non-empty response expected."
failOnEmpty xs = return xs
getResponse1 :: MonadMPD m => String -> m [String]
getResponse1 x = getResponse x >>= failOnEmpty
takeValues :: [String] -> [String]
takeValues = map snd . toAssocList
takeSongs :: MonadMPD m => [String] -> m [Song]
takeSongs = return . parseSongs . toAssocList
takeEntries :: MonadMPD m => [String] -> m [Entry]
takeEntries = return . parseEntries . toAssocList