lightning-haskell-0.1.0.2: src/Web/Lightning/Session.hs
{-# LANGUAGE OverloadedStrings #-}
{-|
Module : Web.Lightning.Session
Description : Session management.
Copyright : (c) Connor Moreside, 2016
License : BSD-3
Maintainer : connor@moresi.de
Stability : experimental
Portability : POSIX
Defines interactions with the session endpoint.
-}
module Web.Lightning.Session
(
-- * Session Functions
createSession
, module Web.Lightning.Types.Session
) where
--------------------------------------------------------------------------------
import Data.Maybe
import qualified Data.Text as T
import Network.API.Builder hiding (runRoute)
import Web.Lightning.Types.Lightning
import Web.Lightning.Types.Session
--------------------------------------------------------------------------------
-- | Session endpoint.
createSessionRoute :: Maybe T.Text
-- ^ An optional name for the session
-> Route
-- ^ The lightning-viz session endpoint
createSessionRoute n = Route ["sessions"]
["name" =. fromMaybe "" n]
"POST"
-- | Creates a new session with an optional name.
createSession :: Monad m => Maybe T.Text
-- ^ An optional session name
-> LightningT m Session
-- ^ Returns the LightningT transformer stack
createSession n = receiveRoute $ createSessionRoute n