packages feed

xdcc-1.0.3: src/IRC/Types.hs

module IRC.Types
  ( IrcIO
  , IrcParams(..)
  , Network
  , Channel
  , Nickname
  , Password
  , Pack
  , Connection
  , Hook(..)
) where

import           Control.Error        (ExceptT)
import           Data.CaseInsensitive (CI)
import           Network.SimpleIRC    (IrcEvent, MIrc)
import           Network.Socket       (PortNumber)

type Network = String
type Channel = CI String
type Nickname = String
type Password = String
type Pack = Int
type Connection = MIrc

type IrcIO = ExceptT String IO

data IrcParams = IrcParams { host     :: Network
                           , port     :: PortNumber
                           , secure   :: Bool
                           , username :: Nickname
                           , password :: Maybe Password
                           , nickname :: Nickname
                           , channels :: [Channel]
                           , hooks    :: [Hook] }

data Hook = Hook { onConnect    :: Connection -> IO ()
                 , events       :: [IrcEvent]
                 , onDisconnect :: Connection -> IO () }