hnormalise-0.3.0.0: src/HNormalise/Internal.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE OverloadedStrings #-}
module HNormalise.Internal where
--------------------------------------------------------------------------------
import Data.Aeson (FromJSON, ToJSON, toEncoding,
toJSON)
import Data.Text
import Data.Time.LocalTime
import GHC.Generics (Generic)
--------------------------------------------------------------------------------
import HNormalise.Huppel.Internal (Huppel)
import HNormalise.Huppel.Json
import HNormalise.Lmod.Internal (LmodLoad)
import HNormalise.Lmod.Json
import HNormalise.Shorewall.Internal (Shorewall)
import HNormalise.Shorewall.Json
import HNormalise.Torque.Internal (TorqueJobExit)
import HNormalise.Torque.Json
--------------------------------------------------------------------------------
data ParseResult
-- | 'Huppel' Result for testing purposes, should you want to check the pipeline works without pushing in actual data
= PR_H Huppel
-- | Represents a parsed 'LmodLoad' message
| PR_L LmodLoad
-- | Represents a parsed 'Shorewall' message
| PR_S Shorewall
-- | Represents a parsed 'TorqueJobExit' message
| PR_T TorqueJobExit
deriving (Show, Eq, Generic)
--------------------------------------------------------------------------------
instance ToJSON ParseResult where
toEncoding (PR_H v) = toEncoding v
toEncoding (PR_L v) = toEncoding v
toEncoding (PR_S v) = toEncoding v
toEncoding (PR_T v) = toEncoding v
--------------------------------------------------------------------------------
data Rsyslog = Rsyslog
{ msg :: !Text
--, rawmsg :: !Text
, timereported :: !(Maybe ZonedTime)
, hostname :: !Text
, syslogtag :: !Text -- Could be a list?
, inputname :: !Text
, fromhost :: !Text
, fromhost_ip :: !Text
, pri :: !(Maybe Int)
, syslogfacility :: !Text
, syslogseverity :: !Text
, timegenerated :: !ZonedTime
, programname :: !Text
, protocol_version :: !Text
--, structured_data :: !Text
, app_name :: !Text
, procid :: !Text
--, msgid :: !Text
--, uuid :: !(Maybe Text)
--, all_json :: !(Maybe Text)
} deriving (Show, Generic)
--------------------------------------------------------------------------------
data NormalisedRsyslog = NRsyslog
{ rsyslog :: Rsyslog -- ^ The original rsyslog message in a parsed form
, normalised :: ParseResult -- ^ The normalised message
, jsonkey :: Text -- ^ The key under which the normalised info will appear in the JSON result
} deriving (Show, Generic)