module Data.Aviation.Stratux.Types.NetworkConnection(
NetworkConnection(..)
, HasNetworkConnection(..)
) where
import Control.Applicative((<*>))
import Control.Lens(makeClassy)
import Data.Aeson(FromJSON(parseJSON), ToJSON(toJSON), (.:), (.=), object, withObject)
import Data.Bool(Bool)
import Data.Eq(Eq)
import Data.Functor((<$>))
import Data.Int(Int)
import Data.Maybe(Maybe)
import Data.Ord(Ord)
import Data.String(String)
import Data.Time(UTCTime)
import Data.Word(Word8)
import Prelude(Show)
data NetworkConnection =
NetworkConnection {
_conn :: Maybe String
, _ip :: String
, _port :: Int
, _capability :: Word8
, _lastUnreachable :: UTCTime
, _sleepFlag :: Bool
} deriving (Eq, Ord, Show)
makeClassy ''NetworkConnection
instance FromJSON NetworkConnection where
parseJSON =
withObject "NetworkConnection" (\x ->
NetworkConnection <$>
x .: "Conn" <*>
x .: "Ip" <*>
x .: "Port" <*>
x .: "Capability" <*>
x .: "LastUnreachable" <*>
x .: "SleepFlag")
instance ToJSON NetworkConnection where
toJSON (NetworkConnection conn_ ip_ port_ capability_ lastUnreachable_ sleepFlag_) =
object [
"Conn" .= conn_
, "Ip" .= ip_
, "Port" .= port_
, "Capability" .= capability_
, "LastUnreachable" .= lastUnreachable_
, "SleepFlag" .= sleepFlag_
]