{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RankNTypes #-} module ConfigLightning where import qualified Data.Text as T import Network.HTTP.Client import Network.HTTP.Client.TLS import Network.API.Builder import System.Environment import System.Exit import Web.Lightning.Session import Web.Lightning isRight :: Either a b -> Bool isRight = const False `either` const True isLeft :: Either a b -> Bool isLeft = const True `either` const False newtype RunLightning = RunLightning { run :: forall a. Lightning a -> IO (Either (APIError LightningError) a) } configLightning :: IO RunLightning configLightning = do url <- getEnv "LIGHTNING_VIZ_URL" manager <- newManager tlsManagerSettings session <- interpretIO (LightningState (T.pack url) manager Nothing id) $ createSession (Just "Integration Tests") case session of Left _ -> exitFailure Right s -> return $ RunLightning $ runLightningWith (LightningOptions (Just manager) (T.pack url) Anonymous (Just s))