pushover-0.1.0.0: src/Network/Pushover/Exceptions.hs
module Network.Pushover.Exceptions where
import Control.Monad.Catch
import Control.Monad.Error.Class
import Control.Monad.Except
import Data.Typeable
-- | Defines possible exceptions which can be thrown from execution commands.
data PushoverException
= ResponseDecodeException
-- ^ This exception is thrown when a response is malformed and cannot be
-- decoded.
| InvalidTokenCharactersException
-- ^ This exception is thrown when a token cannot be constructed because it
-- contains invalid characters.
| InvalidTokenLengthException
-- ^ This exception is thrown when a token cannot be constructed because it
-- is an incorrect length.
| PushoverException String
-- ^ This is a generic exception for other errors in Pushover.
deriving (Show, Typeable)
instance Exception PushoverException
instance Error PushoverException where
noMsg =
PushoverException "Unknown exception"
strMsg =
PushoverException
-- | Display a description error message for each 'PushoverException'
-- constructor.
errorMessage :: PushoverException -> String
errorMessage InvalidTokenLengthException =
"token must be exactly 30 characters long"
errorMessage InvalidTokenCharactersException =
"token must contain only alphanumeric characters"
errorMessage ResponseDecodeException =
"unexpected format of Pushover response"