libmpd-0.7.0: An MPD client library.

Stabilityalpha
MaintainerJoachim Fasting <joachim.fasting@gmail.com>

Network.MPD.Core

Contents

Description

The core datatypes and operations are defined here, including the primary instance of the MonadMPD class, MPD.

Synopsis

Classes

class (Monad m, MonadError MPDError m) => MonadMPD m where

A typeclass to allow for multiple implementations of a connection to an MPD server.

Methods

open :: m ()

Open (or re-open) a connection to the MPD server.

close :: m ()

Close the connection.

send :: String -> m String

Send a string to the server and return its response.

getHandle :: m (Maybe Handle)

Get underlying Handle (or Nothing, if no connection is estabilished)

getPassword :: m Password

Produce a password to send to the server should it ask for one.

setPassword :: String -> m ()

Alters password to be sent to the server.

getVersion :: m (Int, Int, Int)

Get MPD protocol version

Instances

Data types

data MPD a

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)

Instances

data MPDError

The MPDError type is used to signal errors, both from the MPD and otherwise.

Constructors

NoMPD

MPD not responding

TimedOut

The connection timed out

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

Instances

Eq MPDError 
Show MPDError 
Error MPDError 
MonadError MPDError MPD 

data ACKType

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)

Instances

type Response = Either MPDError

A response is either an MPDError or some result.

type Host = String

type Port = Integer

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 [String]

Send a command to the MPD server and return the result.

kill :: MonadMPD m => m ()

Kill the server. Obviously, the connection is then invalid.