module Aws.Lambda.Commands.UpdateFunctionConfiguration
(
UpdateFunctionConfiguration
, updateFunctionConfiguration
, ufcConfiguration
, UpdateFunctionConfigurationResponse(..)
, ufcrFunctionConfiguration
, UpdateFunctionConfigurationException(..)
, _MissingFunctionName
) where
import Aws.Lambda.Core
import Aws.Lambda.Types
import Control.Exception
import Control.Lens
import Control.Monad.Catch
import Data.Aeson
import qualified Data.Text as T
import Data.Typeable
import Network.HTTP.Types
import Prelude.Unicode
data UpdateFunctionConfiguration
= UpdateFunctionConfiguration
{ _ufcConfiguration ∷ !FunctionConfiguration
, _ufcFunctionName ∷ !T.Text
} deriving (Eq, Show)
ufcConfiguration ∷ Getter UpdateFunctionConfiguration FunctionConfiguration
ufcConfiguration = to _ufcConfiguration
ufcFunctionName ∷ Getter UpdateFunctionConfiguration T.Text
ufcFunctionName = to _ufcFunctionName
data UpdateFunctionConfigurationException
= MissingFunctionName !FunctionConfiguration
deriving (Eq, Show, Typeable)
makePrisms ''UpdateFunctionConfigurationException
instance Exception UpdateFunctionConfigurationException
updateFunctionConfiguration
∷ MonadThrow m
⇒ FunctionConfiguration
→ m UpdateFunctionConfiguration
updateFunctionConfiguration fc =
case fc ^. fcFunctionName of
Just fn → return UpdateFunctionConfiguration
{ _ufcConfiguration = fc
, _ufcFunctionName = fn
}
Nothing → throwM $ MissingFunctionName fc
newtype UpdateFunctionConfigurationResponse
= UpdateFunctionConfigurationResponse
{ _ufcrFunctionConfiguration ∷ FunctionConfiguration
} deriving (Eq, Show, FromJSON)
makeLenses ''UpdateFunctionConfigurationResponse
instance LambdaTransaction UpdateFunctionConfiguration () UpdateFunctionConfigurationResponse where
buildQuery ufc =
let fc = ufc ^. ufcConfiguration
in lambdaQuery PUT ["functions", ufc ^. ufcFunctionName, "configuration"]
& lqParams
%~ (at "Description" .~ fc ^. fcDescription)
∘ (at "Handler" .~ fc ^. fcHandler)
∘ (at "MemorySize" .~ fc ^? fcMemorySize ∘ _Just ∘ to (T.pack ∘ show))
∘ (at "Role" .~ fc ^? fcRole ∘ _Just ∘ to arnToText)
∘ (at "Timeout" .~ fc ^? fcTimeout ∘ _Just ∘ to (T.pack ∘ show))