module Network.IRC.Client
(
connect
, connectWithTLS
, start
, start'
, startStateful
, Origin (..)
, connect'
, connectWithTLS'
, stdoutLogger
, fileLogger
, noopLogger
, send
, sendBS
, disconnect
, defaultIRCConf
, defaultDisconnectHandler
, defaultEventHandlers
, module Network.IRC.Client.Types
, module Network.IRC.Client.Utils
, rawMessage
, toByteString
) where
import Control.Monad.IO.Class (MonadIO, liftIO)
import Control.Monad.Trans.Reader (runReaderT)
import Data.ByteString (ByteString)
import Data.Text (Text)
import Data.Time.Clock (NominalDiffTime)
import Network.IRC.Client.Handlers
import Network.IRC.Client.Internal
import Network.IRC.Client.Types
import Network.IRC.Client.Utils
import Network.IRC.Conduit (ircClient, ircTLSClient, rawMessage, toByteString)
connect :: MonadIO m
=> ByteString
-> Int
-> NominalDiffTime
-> m (ConnectionConfig s)
connect = connect' noopLogger
connectWithTLS :: MonadIO m
=> ByteString
-> Int
-> NominalDiffTime
-> m (ConnectionConfig s)
connectWithTLS = connectWithTLS' noopLogger
connect' :: MonadIO m
=> (Origin -> ByteString -> IO ())
-> ByteString
-> Int
-> NominalDiffTime
-> m (ConnectionConfig s)
connect' = connectInternal ircClient defaultDisconnectHandler
connectWithTLS' :: MonadIO m
=> (Origin -> ByteString -> IO ())
-> ByteString
-> Int
-> NominalDiffTime
-> m (ConnectionConfig s)
connectWithTLS' = connectInternal ircTLSClient defaultDisconnectHandler
start :: MonadIO m => ConnectionConfig () -> InstanceConfig () -> m ()
start cconf iconf = startStateful cconf iconf ()
startStateful :: MonadIO m => ConnectionConfig s -> InstanceConfig s -> s -> m ()
startStateful cconf iconf ustate = newIRCState cconf iconf ustate >>= start'
start' :: MonadIO m => IRCState s -> m ()
start' = liftIO . runReaderT runner
defaultIRCConf :: Text -> InstanceConfig s
defaultIRCConf n = InstanceConfig
{ _nick = n
, _username = n
, _realname = n
, _channels = []
, _ctcpVer = "irc-client-0.2.5.0"
, _eventHandlers = defaultEventHandlers
, _ignore = []
}