module Network.IRC.Client
(
connect
, connectWithTLS
, start
, start'
, 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
connect = connect' noopLogger
connectWithTLS :: MonadIO m
=> ByteString
-> Int
-> NominalDiffTime
-> m ConnectionConfig
connectWithTLS = connectWithTLS' noopLogger
connect' :: MonadIO m
=> (Origin -> ByteString -> IO ())
-> ByteString
-> Int
-> NominalDiffTime
-> m ConnectionConfig
connect' = connectInternal ircClient defaultDisconnectHandler
connectWithTLS' :: MonadIO m
=> (Origin -> ByteString -> IO ())
-> ByteString
-> Int
-> NominalDiffTime
-> m ConnectionConfig
connectWithTLS' = connectInternal ircTLSClient defaultDisconnectHandler
start :: MonadIO m => ConnectionConfig -> InstanceConfig -> m ()
start cconf iconf = newIRCState cconf iconf >>= start'
start' :: MonadIO m => IRCState -> m ()
start' = liftIO . runReaderT runner
defaultIRCConf :: Text -> InstanceConfig
defaultIRCConf n = InstanceConfig
{ _nick = n
, _username = n
, _realname = n
, _channels = []
, _ctcpVer = "irc-client-0.2.3.0"
, _eventHandlers = defaultEventHandlers
, _ignore = []
}