module Network.IRC.Client
(
connect
, connectWithTLS
, start
, start'
, startStateful
, Origin (..)
, connect'
, connectWithTLS'
, stdoutLogger
, fileLogger
, noopLogger
, send
, sendBS
, disconnect
, defaultIRCConf
, defaultOnConnect
, defaultOnDisconnect
, 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 defaultOnConnect defaultOnDisconnect
connectWithTLS' :: MonadIO m
=> (Origin -> ByteString -> IO ())
-> ByteString
-> Int
-> NominalDiffTime
-> m (ConnectionConfig s)
connectWithTLS' = connectInternal ircTLSClient defaultOnConnect defaultOnDisconnect
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
, _password = Nothing
, _channels = []
, _ctcpVer = "irc-client-0.4.2"
, _eventHandlers = defaultEventHandlers
, _ignore = []
}