{-| All the errors that the runtime can throw -} module Aws.Lambda.Runtime.Error ( EnvironmentVariableNotSet(..) , Parsing(..) , Invocation(..) ) where import Control.Exception.Safe.Checked import Data.Aeson (ToJSON (..), object, (.=)) newtype EnvironmentVariableNotSet = EnvironmentVariableNotSet String deriving (Show, Exception) instance ToJSON EnvironmentVariableNotSet where toJSON (EnvironmentVariableNotSet msg) = object [ "errorType" .= ("EnvironmentVariableNotSet" :: String) , "errorMessage" .= msg ] data Parsing = Parsing { errorMessage :: String , actualValue :: String } deriving (Show, Exception) instance ToJSON Parsing where toJSON (Parsing objectBeingParsed value) = object [ "errorType" .= ("Parsing" :: String) , "errorMessage" .= ("Parse error for " <> objectBeingParsed <> ", could not parse value '" <> value <> "'") ] newtype Invocation = Invocation String deriving (Show, Exception) instance ToJSON Invocation where -- We return the user error as it is toJSON (Invocation err) = toJSON err