module Web.SocketIO.Types.Log (Log(..), Serializable(..)) where
import System.Console.ANSI
import Web.SocketIO.Types.String
data Log = Error ByteString
| Warn ByteString
| Info ByteString
| Debug ByteString
deriving (Eq, Show)
instance Serializable Log where
serialize (Error message) = fromString $ " " ++ (paint Red $ "[error] " ++ error (fromByteString message))
serialize (Warn message) = fromString $ " " ++ (paint Yellow $ "[warn] " ++ fromByteString message)
serialize (Info message) = fromString $ " " ++ (paint Cyan $ "[info] " ++ fromByteString message)
serialize (Debug message) = fromString $ " " ++ (paint Black $ "[debug] " ++ fromByteString message)
paint :: Color -> String -> String
paint color s = setSGRCode [SetColor Foreground Vivid color] ++ s ++ setSGRCode []