module Network.IRC.Client
(
connect
, connectWithTLS
, start
, start'
, 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' ircClient defaultDisconnectHandler
connectWithTLS :: MonadIO m => ByteString -> Int -> NominalDiffTime -> m ConnectionConfig
connectWithTLS = connect' 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 = []
}