| Copyright | (c) Ben Sinclair 2005-2009 Joachim Fasting 2010 |
|---|---|
| License | MIT (see LICENSE) |
| Maintainer | Joachim Fasting <joachifm@fastmail.fm> |
| Stability | alpha |
| Safe Haskell | None |
| Language | Haskell2010 |
Network.MPD.Core
Description
- class (Monad m, MonadError MPDError m) => MonadMPD m where
- data MPD a
- data MPDError
- = NoMPD
- | ConnectionError IOException
- | Unexpected String
- | Custom String
- | ACK ACKType String
- data ACKType
- type Response = Either MPDError
- type Host = String
- type Port = Integer
- type Password = String
- withMPDEx :: Host -> Port -> Password -> MPD a -> IO (Response a)
- getResponse :: MonadMPD m => String -> m [ByteString]
- kill :: MonadMPD m => m ()
Classes
class (Monad m, MonadError MPDError m) => MonadMPD m where #
A typeclass to allow for multiple implementations of a connection to an MPD server.
Minimal complete definition
Methods
Open (or re-open) a connection to the MPD server.
Close the connection.
send :: String -> m [ByteString] #
Send a string to the server and return its response.
getPassword :: m Password #
Produce a password to send to the server should it ask for one.
setPassword :: Password -> m () #
Alters password to be sent to the server.
getVersion :: m (Int, Int, Int) #
Get MPD protocol version
Data types
The main implementation of an MPD client. It actually connects to a server and interacts with it.
To use the error throwing/catching capabilities:
import Control.Monad.Error (throwError, catchError)
To run IO actions within the MPD monad:
import Control.Monad.Trans (liftIO)
The MPDError type is used to signal errors, both from the MPD and otherwise.
Constructors
| NoMPD | MPD not responding |
| ConnectionError IOException | An error occurred while talking to MPD. |
| Unexpected String | MPD returned an unexpected response. This is a bug, either in the library or in MPD itself. |
| Custom String | Used for misc. errors |
| ACK ACKType String | ACK type and a message from the server |
Represents various MPD errors (aka. ACKs).
Constructors
| InvalidArgument | Invalid argument passed (ACK 2) |
| InvalidPassword | Invalid password supplied (ACK 3) |
| Auth | Authentication required (ACK 4) |
| UnknownCommand | Unknown command (ACK 5) |
| FileNotFound | File or directory not found ACK 50) |
| PlaylistMax | Playlist at maximum size (ACK 51) |
| System | A system error (ACK 52) |
| PlaylistLoad | Playlist loading failed (ACK 53) |
| Busy | Update already running (ACK 54) |
| NotPlaying | An operation requiring playback got interrupted (ACK 55) |
| FileExists | File already exists (ACK 56) |
| UnknownACK | An unknown ACK (aka. bug) |
Running
withMPDEx :: Host -> Port -> Password -> MPD a -> IO (Response a) #
The most configurable API for running an MPD action.
Interacting
getResponse :: MonadMPD m => String -> m [ByteString] #
Send a command to the MPD server and return the result.