packages feed

stratosphere-0.43.0: library-gen/Stratosphere/ResourceProperties/AppMeshRouteHttpRetryPolicy.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httpretrypolicy.html

module Stratosphere.ResourceProperties.AppMeshRouteHttpRetryPolicy where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.AppMeshRouteDuration

-- | Full data type definition for AppMeshRouteHttpRetryPolicy. See
-- 'appMeshRouteHttpRetryPolicy' for a more convenient constructor.
data AppMeshRouteHttpRetryPolicy =
  AppMeshRouteHttpRetryPolicy
  { _appMeshRouteHttpRetryPolicyHttpRetryEvents :: Maybe (ValList Text)
  , _appMeshRouteHttpRetryPolicyMaxRetries :: Val Integer
  , _appMeshRouteHttpRetryPolicyPerRetryTimeout :: AppMeshRouteDuration
  , _appMeshRouteHttpRetryPolicyTcpRetryEvents :: Maybe (ValList Text)
  } deriving (Show, Eq)

instance ToJSON AppMeshRouteHttpRetryPolicy where
  toJSON AppMeshRouteHttpRetryPolicy{..} =
    object $
    catMaybes
    [ fmap (("HttpRetryEvents",) . toJSON) _appMeshRouteHttpRetryPolicyHttpRetryEvents
    , (Just . ("MaxRetries",) . toJSON) _appMeshRouteHttpRetryPolicyMaxRetries
    , (Just . ("PerRetryTimeout",) . toJSON) _appMeshRouteHttpRetryPolicyPerRetryTimeout
    , fmap (("TcpRetryEvents",) . toJSON) _appMeshRouteHttpRetryPolicyTcpRetryEvents
    ]

-- | Constructor for 'AppMeshRouteHttpRetryPolicy' containing required fields
-- as arguments.
appMeshRouteHttpRetryPolicy
  :: Val Integer -- ^ 'amrhrpMaxRetries'
  -> AppMeshRouteDuration -- ^ 'amrhrpPerRetryTimeout'
  -> AppMeshRouteHttpRetryPolicy
appMeshRouteHttpRetryPolicy maxRetriesarg perRetryTimeoutarg =
  AppMeshRouteHttpRetryPolicy
  { _appMeshRouteHttpRetryPolicyHttpRetryEvents = Nothing
  , _appMeshRouteHttpRetryPolicyMaxRetries = maxRetriesarg
  , _appMeshRouteHttpRetryPolicyPerRetryTimeout = perRetryTimeoutarg
  , _appMeshRouteHttpRetryPolicyTcpRetryEvents = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httpretrypolicy.html#cfn-appmesh-route-httpretrypolicy-httpretryevents
amrhrpHttpRetryEvents :: Lens' AppMeshRouteHttpRetryPolicy (Maybe (ValList Text))
amrhrpHttpRetryEvents = lens _appMeshRouteHttpRetryPolicyHttpRetryEvents (\s a -> s { _appMeshRouteHttpRetryPolicyHttpRetryEvents = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httpretrypolicy.html#cfn-appmesh-route-httpretrypolicy-maxretries
amrhrpMaxRetries :: Lens' AppMeshRouteHttpRetryPolicy (Val Integer)
amrhrpMaxRetries = lens _appMeshRouteHttpRetryPolicyMaxRetries (\s a -> s { _appMeshRouteHttpRetryPolicyMaxRetries = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httpretrypolicy.html#cfn-appmesh-route-httpretrypolicy-perretrytimeout
amrhrpPerRetryTimeout :: Lens' AppMeshRouteHttpRetryPolicy AppMeshRouteDuration
amrhrpPerRetryTimeout = lens _appMeshRouteHttpRetryPolicyPerRetryTimeout (\s a -> s { _appMeshRouteHttpRetryPolicyPerRetryTimeout = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-route-httpretrypolicy.html#cfn-appmesh-route-httpretrypolicy-tcpretryevents
amrhrpTcpRetryEvents :: Lens' AppMeshRouteHttpRetryPolicy (Maybe (ValList Text))
amrhrpTcpRetryEvents = lens _appMeshRouteHttpRetryPolicyTcpRetryEvents (\s a -> s { _appMeshRouteHttpRetryPolicyTcpRetryEvents = a })