natskell-0.0.0.1: internal/Types/Unsub.hs
{-# LANGUAGE OverloadedStrings #-}
module Types.Unsub where
import Data.ByteString (ByteString)
import qualified Data.ByteString.Char8 as BC
import qualified Data.ByteString.Lazy as LBS
import Transformers.Transformers (Transformer (..))
import Types.Msg (SID)
import Validators.Validators
data Unsub = Unsub
{ sid :: SID
, maxMsg :: Maybe Int
}
deriving (Eq, Show)
instance Transformer Unsub where
transform unsubMsg =
case maxMsg unsubMsg of
Just count -> LBS.fromChunks ["UNSUB ", sid unsubMsg, " ", BC.pack (show count), "\r\n"]
Nothing -> LBS.fromChunks ["UNSUB ", sid unsubMsg, "\r\n"]
instance Validator Unsub where
validate u = do
validateSid u
validateSid :: Unsub -> Either ByteString ()
validateSid u
| sid u == "" = Left "explicit empty sid"
| otherwise = Right ()