{-# LANGUAGE DeriveLift #-}
module Aws.Lambda.Runtime.Common
( RunCallback
, LambdaResult(..)
, LambdaError(..)
, LambdaOptions(..)
, DispatcherOptions(..)
, ApiGatewayDispatcherOptions(..)
, DispatcherStrategy(..)
, defaultDispatcherOptions
) where
import Aws.Lambda.Runtime.ApiGatewayInfo
import Data.Aeson (Value)
import GHC.Generics (Generic)
import Language.Haskell.TH.Syntax (Lift)
newtype ApiGatewayDispatcherOptions = ApiGatewayDispatcherOptions
{ propagateImpureExceptions :: Bool
} deriving (Lift)
newtype DispatcherOptions = DispatcherOptions
{ apiGatewayDispatcherOptions :: ApiGatewayDispatcherOptions
} deriving (Lift)
defaultDispatcherOptions :: DispatcherOptions
defaultDispatcherOptions =
DispatcherOptions (ApiGatewayDispatcherOptions True)
data DispatcherStrategy =
UseWithAPIGateway |
StandaloneLambda
deriving (Lift)
type RunCallback =
LambdaOptions -> IO (Either LambdaError LambdaResult)
data LambdaError =
StandaloneLambdaError String |
ApiGatewayLambdaError (ApiGatewayResponse Value)
data LambdaResult =
StandaloneLambdaResult String |
ApiGatewayResult (ApiGatewayResponse Value)
data LambdaOptions = LambdaOptions
{ eventObject :: !String
, contextObject :: !String
, functionHandler :: !String
, executionUuid :: !String
} deriving (Generic)