{-# LANGUAGE OverloadedStrings #-} {-| Module : Web.Lightning.Types.Session Description : Session management types. Copyright : (c) Connor Moreside, 2016 License : BSD-3 Maintainer : connor@moresi.de Stability : experimental Portability : POSIX Defines the types needed for interaction with the session endpoint. -} module Web.Lightning.Types.Session ( -- * Session Types Session(..) ) where -------------------------------------------------------------------------------- import Data.Aeson import Data.Default.Class import qualified Data.Text as T import Network.API.Builder hiding (runRoute) -------------------------------------------------------------------------------- -- | Represents a lightning-viz session. A session ID is required to create -- a plot. data Session = Session { snId :: T.Text -- ^ The unique session ID , snName :: Maybe T.Text -- ^ The optional session name , snUpdated :: Maybe T.Text -- ^ The timestamp of when the session was last updated , snCreated :: Maybe T.Text -- ^ Creation timestamp } deriving (Show, Read, Eq) instance FromJSON Session where parseJSON (Object v) = Session <$> v .: "id" <*> v .: "name" <*> v .: "updatedAt" <*> v .: "createdAt" parseJSON _ = mempty instance Receivable Session where receive = useFromJSON instance Default Session where def = Session "" Nothing Nothing Nothing