assumpta-core-0.1.0.0: Core functionality for an SMTP client

Safe HaskellNone
LanguageHaskell2010
Extensions
  • Cpp
  • UndecidableInstances
  • MonoLocalBinds
  • TypeFamilies
  • ConstraintKinds
  • FlexibleContexts
  • ConstrainedClassMethods
  • MultiParamTypeClasses
  • KindSignatures
  • GeneralizedNewtypeDeriving
  • RankNTypes
  • ExplicitNamespaces
  • ExplicitForAll

Network.Mail.Assumpta.Trans.Smtp

Contents

Description

This module provides a template for creating implementations of MonadSmtp over some abstract connection type.

Operations on a connection can throw IO- and network-based errors, and we don't handle those in any particular way ourselves. However, we throw SmtpErrors if server responses are unparseable or unexpected.

Synopsis

Abstract connections

SMTP operations

newtype SmtpT conn m a Source #

Monad transformer that adds the ability to send SMTP commands and receive server replies over some abstract communications channel, 'conn'.

Constructors

SmtpT 

Fields

Instances
MonadWriter w m => MonadWriter w (SmtpT conn m) # 
Instance details

Defined in Network.Mail.Assumpta.Instances

Methods

writer :: (a, w) -> SmtpT conn m a #

tell :: w -> SmtpT conn m () #

listen :: SmtpT conn m a -> SmtpT conn m (a, w) #

pass :: SmtpT conn m (a, w -> w) -> SmtpT conn m a #

MonadState s m => MonadState s (SmtpT conn m) # 
Instance details

Defined in Network.Mail.Assumpta.Instances

Methods

get :: SmtpT conn m s #

put :: s -> SmtpT conn m () #

state :: (s -> (a, s)) -> SmtpT conn m a #

Monad m => MonadReader conn (SmtpT conn m) Source # 
Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

ask :: SmtpT conn m conn #

local :: (conn -> conn) -> SmtpT conn m a -> SmtpT conn m a #

reader :: (conn -> a) -> SmtpT conn m a #

MonadReader r m => MonadReader r (SmtpT conn m) # 
Instance details

Defined in Network.Mail.Assumpta.Instances

Methods

ask :: SmtpT conn m r #

local :: (r -> r) -> SmtpT conn m a -> SmtpT conn m a #

reader :: (r -> a) -> SmtpT conn m a #

Monad m => MonadError SmtpError (SmtpT conn m) Source # 
Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

throwError :: SmtpError -> SmtpT conn m a #

catchError :: SmtpT conn m a -> (SmtpError -> SmtpT conn m a) -> SmtpT conn m a #

MonadTrans (SmtpT conn) Source # 
Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

lift :: Monad m => m a -> SmtpT conn m a #

Monad m => Monad (SmtpT conn m) Source # 
Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

(>>=) :: SmtpT conn m a -> (a -> SmtpT conn m b) -> SmtpT conn m b #

(>>) :: SmtpT conn m a -> SmtpT conn m b -> SmtpT conn m b #

return :: a -> SmtpT conn m a #

fail :: String -> SmtpT conn m a #

Functor m => Functor (SmtpT conn m) Source # 
Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

fmap :: (a -> b) -> SmtpT conn m a -> SmtpT conn m b #

(<$) :: a -> SmtpT conn m b -> SmtpT conn m a #

MonadFix m => MonadFix (SmtpT conn m) Source # 
Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

mfix :: (a -> SmtpT conn m a) -> SmtpT conn m a #

Monad m => Applicative (SmtpT conn m) Source # 
Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

pure :: a -> SmtpT conn m a #

(<*>) :: SmtpT conn m (a -> b) -> SmtpT conn m a -> SmtpT conn m b #

liftA2 :: (a -> b -> c) -> SmtpT conn m a -> SmtpT conn m b -> SmtpT conn m c #

(*>) :: SmtpT conn m a -> SmtpT conn m b -> SmtpT conn m b #

(<*) :: SmtpT conn m a -> SmtpT conn m b -> SmtpT conn m a #

MonadIO m => MonadIO (SmtpT conn m) Source # 
Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

liftIO :: IO a -> SmtpT conn m a #

(Connection conn, cstr ~ Cstrt conn, Monad m, cstr (SmtpT conn m)) => MonadSmtp (SmtpT conn m) Source #

An instance of MonadSmtp communicating over some Connection type, conn.

Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

send :: ByteString -> SmtpT conn m () Source #

getReply :: SmtpT conn m Reply Source #

expectCode :: ReplyCode -> SmtpT conn m () Source #

tlsUpgrade :: SmtpT conn m () Source #

liftSmtpT :: Monad m => m a -> SmtpT conn m a Source #

lift, specialised to the SmtpT transformer.

mapSmtpT :: (m1 (Either SmtpError a1) -> m2 (Either SmtpError a2)) -> SmtpT conn m1 a1 -> SmtpT conn m2 a2 Source #

Lifted mapExceptT.

class Monad m => MonadSmtp m Source #

Monad for sending SMTP commands and checking for expected responses.

Minimal complete definition

send, getReply, tlsUpgrade

Instances
MonadSmtp m => MonadSmtp (MaybeT m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

Monad m => MonadSmtp (MockSmtpT m) Source #

In this mock monad, send writes to the underlying Writer; expectCode and tlsUpgrade are no-ops; and getReply returns an empty list. (In breach of the req. that a reply always contains at least one line.)

Instance details

Defined in Network.Mail.Assumpta.Mock

MonadSmtp m => MonadSmtp (ExceptT e m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

MonadSmtp m => MonadSmtp (IdentityT m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

MonadSmtp m => MonadSmtp (StateT s m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

MonadSmtp m => MonadSmtp (StateT s m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

(Monoid w, MonadSmtp m) => MonadSmtp (WriterT w m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

(Monoid w, MonadSmtp m) => MonadSmtp (WriterT w m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

(Connection conn, cstr ~ Cstrt conn, Monad m, cstr (SmtpT conn m)) => MonadSmtp (SmtpT conn m) Source #

An instance of MonadSmtp communicating over some Connection type, conn.

Instance details

Defined in Network.Mail.Assumpta.Trans.Smtp

Methods

send :: ByteString -> SmtpT conn m () Source #

getReply :: SmtpT conn m Reply Source #

expectCode :: ReplyCode -> SmtpT conn m () Source #

tlsUpgrade :: SmtpT conn m () Source #

MonadSmtp m => MonadSmtp (ReaderT r m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

(Monoid w, MonadSmtp m) => MonadSmtp (RWST r w s m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

Methods

send :: ByteString -> RWST r w s m () Source #

getReply :: RWST r w s m Reply Source #

expectCode :: ReplyCode -> RWST r w s m () Source #

tlsUpgrade :: RWST r w s m () Source #

(Monoid w, MonadSmtp m) => MonadSmtp (RWST r w s m) Source # 
Instance details

Defined in Network.Mail.Assumpta.MonadSmtp

Methods

send :: ByteString -> RWST r w s m () Source #

getReply :: RWST r w s m Reply Source #

expectCode :: ReplyCode -> RWST r w s m () Source #

tlsUpgrade :: RWST r w s m () Source #

run SmptT actions

runSmtpEither :: conn -> SmtpT conn m a -> m (Either SmtpError a) Source #

runSmtpEither c a

Run an SmtpT computation a using some connection c, and return the result as an Either.

runSmtp :: MonadError SmtpError m => conn -> SmtpT conn m b -> m b Source #

runSmtp c a

runSmtpEither generalized to MonadError, so a caller can use Maybe or or MonadError instances as they choose.

withSmtpConnection :: (Cstrt c m, MonadMask m, Connection c, MonadSmtp m) => Params c -> (c -> m b) -> m b Source #

withConnection, specialized to only run MonadSmtp actions.

Utility functions

rethrow :: MonadError e m => ExceptT e m b -> m b Source #

convert an ExceptT into a MonadError