module Network.AWS.Flow.Env
  ( flowEnv
  ) where

import Control.Lens
import Control.Monad.Trans.AWS
import Network.AWS.Flow.Types
import System.Log.FastLogger
import System.IO

flowEnv :: FlowConfig -> IO FlowEnv
flowEnv FlowConfig{..} = do
  loggerSet <- newStderrLoggerSet defaultBufSize
  logger <- newLogger Info stderr
  env <- newEnv fcRegion fcCredentials <&> envLogger .~ logger
  return $ FlowEnv (logStrLn loggerSet) env (fromIntegral fcTimeout) (fromIntegral fcPollTimeout) fcDomain fcBucket fcPrefix where
    logStrLn ls s =
      pushLogStr ls s >> flushLogStr ls