{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.ApplicationInsights.DescribeComponentConfigurationRecommendation
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the recommended monitoring configuration of the component.
module Amazonka.ApplicationInsights.DescribeComponentConfigurationRecommendation
  ( -- * Creating a Request
    DescribeComponentConfigurationRecommendation (..),
    newDescribeComponentConfigurationRecommendation,

    -- * Request Lenses
    describeComponentConfigurationRecommendation_resourceGroupName,
    describeComponentConfigurationRecommendation_componentName,
    describeComponentConfigurationRecommendation_tier,

    -- * Destructuring the Response
    DescribeComponentConfigurationRecommendationResponse (..),
    newDescribeComponentConfigurationRecommendationResponse,

    -- * Response Lenses
    describeComponentConfigurationRecommendationResponse_componentConfiguration,
    describeComponentConfigurationRecommendationResponse_httpStatus,
  )
where

import Amazonka.ApplicationInsights.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeComponentConfigurationRecommendation' smart constructor.
data DescribeComponentConfigurationRecommendation = DescribeComponentConfigurationRecommendation'
  { -- | The name of the resource group.
    DescribeComponentConfigurationRecommendation -> Text
resourceGroupName :: Prelude.Text,
    -- | The name of the component.
    DescribeComponentConfigurationRecommendation -> Text
componentName :: Prelude.Text,
    -- | The tier of the application component. Supported tiers include
    -- @DOT_NET_CORE@, @DOT_NET_WORKER@, @DOT_NET_WEB@, @SQL_SERVER@, and
    -- @DEFAULT@.
    DescribeComponentConfigurationRecommendation -> Tier
tier :: Tier
  }
  deriving (DescribeComponentConfigurationRecommendation
-> DescribeComponentConfigurationRecommendation -> Bool
(DescribeComponentConfigurationRecommendation
 -> DescribeComponentConfigurationRecommendation -> Bool)
-> (DescribeComponentConfigurationRecommendation
    -> DescribeComponentConfigurationRecommendation -> Bool)
-> Eq DescribeComponentConfigurationRecommendation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeComponentConfigurationRecommendation
-> DescribeComponentConfigurationRecommendation -> Bool
$c/= :: DescribeComponentConfigurationRecommendation
-> DescribeComponentConfigurationRecommendation -> Bool
== :: DescribeComponentConfigurationRecommendation
-> DescribeComponentConfigurationRecommendation -> Bool
$c== :: DescribeComponentConfigurationRecommendation
-> DescribeComponentConfigurationRecommendation -> Bool
Prelude.Eq, ReadPrec [DescribeComponentConfigurationRecommendation]
ReadPrec DescribeComponentConfigurationRecommendation
Int -> ReadS DescribeComponentConfigurationRecommendation
ReadS [DescribeComponentConfigurationRecommendation]
(Int -> ReadS DescribeComponentConfigurationRecommendation)
-> ReadS [DescribeComponentConfigurationRecommendation]
-> ReadPrec DescribeComponentConfigurationRecommendation
-> ReadPrec [DescribeComponentConfigurationRecommendation]
-> Read DescribeComponentConfigurationRecommendation
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeComponentConfigurationRecommendation]
$creadListPrec :: ReadPrec [DescribeComponentConfigurationRecommendation]
readPrec :: ReadPrec DescribeComponentConfigurationRecommendation
$creadPrec :: ReadPrec DescribeComponentConfigurationRecommendation
readList :: ReadS [DescribeComponentConfigurationRecommendation]
$creadList :: ReadS [DescribeComponentConfigurationRecommendation]
readsPrec :: Int -> ReadS DescribeComponentConfigurationRecommendation
$creadsPrec :: Int -> ReadS DescribeComponentConfigurationRecommendation
Prelude.Read, Int -> DescribeComponentConfigurationRecommendation -> ShowS
[DescribeComponentConfigurationRecommendation] -> ShowS
DescribeComponentConfigurationRecommendation -> String
(Int -> DescribeComponentConfigurationRecommendation -> ShowS)
-> (DescribeComponentConfigurationRecommendation -> String)
-> ([DescribeComponentConfigurationRecommendation] -> ShowS)
-> Show DescribeComponentConfigurationRecommendation
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeComponentConfigurationRecommendation] -> ShowS
$cshowList :: [DescribeComponentConfigurationRecommendation] -> ShowS
show :: DescribeComponentConfigurationRecommendation -> String
$cshow :: DescribeComponentConfigurationRecommendation -> String
showsPrec :: Int -> DescribeComponentConfigurationRecommendation -> ShowS
$cshowsPrec :: Int -> DescribeComponentConfigurationRecommendation -> ShowS
Prelude.Show, (forall x.
 DescribeComponentConfigurationRecommendation
 -> Rep DescribeComponentConfigurationRecommendation x)
-> (forall x.
    Rep DescribeComponentConfigurationRecommendation x
    -> DescribeComponentConfigurationRecommendation)
-> Generic DescribeComponentConfigurationRecommendation
forall x.
Rep DescribeComponentConfigurationRecommendation x
-> DescribeComponentConfigurationRecommendation
forall x.
DescribeComponentConfigurationRecommendation
-> Rep DescribeComponentConfigurationRecommendation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeComponentConfigurationRecommendation x
-> DescribeComponentConfigurationRecommendation
$cfrom :: forall x.
DescribeComponentConfigurationRecommendation
-> Rep DescribeComponentConfigurationRecommendation x
Prelude.Generic)

-- |
-- Create a value of 'DescribeComponentConfigurationRecommendation' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'resourceGroupName', 'describeComponentConfigurationRecommendation_resourceGroupName' - The name of the resource group.
--
-- 'componentName', 'describeComponentConfigurationRecommendation_componentName' - The name of the component.
--
-- 'tier', 'describeComponentConfigurationRecommendation_tier' - The tier of the application component. Supported tiers include
-- @DOT_NET_CORE@, @DOT_NET_WORKER@, @DOT_NET_WEB@, @SQL_SERVER@, and
-- @DEFAULT@.
newDescribeComponentConfigurationRecommendation ::
  -- | 'resourceGroupName'
  Prelude.Text ->
  -- | 'componentName'
  Prelude.Text ->
  -- | 'tier'
  Tier ->
  DescribeComponentConfigurationRecommendation
newDescribeComponentConfigurationRecommendation :: Text
-> Text -> Tier -> DescribeComponentConfigurationRecommendation
newDescribeComponentConfigurationRecommendation
  Text
pResourceGroupName_
  Text
pComponentName_
  Tier
pTier_ =
    DescribeComponentConfigurationRecommendation' :: Text
-> Text -> Tier -> DescribeComponentConfigurationRecommendation
DescribeComponentConfigurationRecommendation'
      { $sel:resourceGroupName:DescribeComponentConfigurationRecommendation' :: Text
resourceGroupName =
          Text
pResourceGroupName_,
        $sel:componentName:DescribeComponentConfigurationRecommendation' :: Text
componentName =
          Text
pComponentName_,
        $sel:tier:DescribeComponentConfigurationRecommendation' :: Tier
tier = Tier
pTier_
      }

-- | The name of the resource group.
describeComponentConfigurationRecommendation_resourceGroupName :: Lens.Lens' DescribeComponentConfigurationRecommendation Prelude.Text
describeComponentConfigurationRecommendation_resourceGroupName :: (Text -> f Text)
-> DescribeComponentConfigurationRecommendation
-> f DescribeComponentConfigurationRecommendation
describeComponentConfigurationRecommendation_resourceGroupName = (DescribeComponentConfigurationRecommendation -> Text)
-> (DescribeComponentConfigurationRecommendation
    -> Text -> DescribeComponentConfigurationRecommendation)
-> Lens
     DescribeComponentConfigurationRecommendation
     DescribeComponentConfigurationRecommendation
     Text
     Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeComponentConfigurationRecommendation' {Text
resourceGroupName :: Text
$sel:resourceGroupName:DescribeComponentConfigurationRecommendation' :: DescribeComponentConfigurationRecommendation -> Text
resourceGroupName} -> Text
resourceGroupName) (\s :: DescribeComponentConfigurationRecommendation
s@DescribeComponentConfigurationRecommendation' {} Text
a -> DescribeComponentConfigurationRecommendation
s {$sel:resourceGroupName:DescribeComponentConfigurationRecommendation' :: Text
resourceGroupName = Text
a} :: DescribeComponentConfigurationRecommendation)

-- | The name of the component.
describeComponentConfigurationRecommendation_componentName :: Lens.Lens' DescribeComponentConfigurationRecommendation Prelude.Text
describeComponentConfigurationRecommendation_componentName :: (Text -> f Text)
-> DescribeComponentConfigurationRecommendation
-> f DescribeComponentConfigurationRecommendation
describeComponentConfigurationRecommendation_componentName = (DescribeComponentConfigurationRecommendation -> Text)
-> (DescribeComponentConfigurationRecommendation
    -> Text -> DescribeComponentConfigurationRecommendation)
-> Lens
     DescribeComponentConfigurationRecommendation
     DescribeComponentConfigurationRecommendation
     Text
     Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeComponentConfigurationRecommendation' {Text
componentName :: Text
$sel:componentName:DescribeComponentConfigurationRecommendation' :: DescribeComponentConfigurationRecommendation -> Text
componentName} -> Text
componentName) (\s :: DescribeComponentConfigurationRecommendation
s@DescribeComponentConfigurationRecommendation' {} Text
a -> DescribeComponentConfigurationRecommendation
s {$sel:componentName:DescribeComponentConfigurationRecommendation' :: Text
componentName = Text
a} :: DescribeComponentConfigurationRecommendation)

-- | The tier of the application component. Supported tiers include
-- @DOT_NET_CORE@, @DOT_NET_WORKER@, @DOT_NET_WEB@, @SQL_SERVER@, and
-- @DEFAULT@.
describeComponentConfigurationRecommendation_tier :: Lens.Lens' DescribeComponentConfigurationRecommendation Tier
describeComponentConfigurationRecommendation_tier :: (Tier -> f Tier)
-> DescribeComponentConfigurationRecommendation
-> f DescribeComponentConfigurationRecommendation
describeComponentConfigurationRecommendation_tier = (DescribeComponentConfigurationRecommendation -> Tier)
-> (DescribeComponentConfigurationRecommendation
    -> Tier -> DescribeComponentConfigurationRecommendation)
-> Lens
     DescribeComponentConfigurationRecommendation
     DescribeComponentConfigurationRecommendation
     Tier
     Tier
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeComponentConfigurationRecommendation' {Tier
tier :: Tier
$sel:tier:DescribeComponentConfigurationRecommendation' :: DescribeComponentConfigurationRecommendation -> Tier
tier} -> Tier
tier) (\s :: DescribeComponentConfigurationRecommendation
s@DescribeComponentConfigurationRecommendation' {} Tier
a -> DescribeComponentConfigurationRecommendation
s {$sel:tier:DescribeComponentConfigurationRecommendation' :: Tier
tier = Tier
a} :: DescribeComponentConfigurationRecommendation)

instance
  Core.AWSRequest
    DescribeComponentConfigurationRecommendation
  where
  type
    AWSResponse
      DescribeComponentConfigurationRecommendation =
      DescribeComponentConfigurationRecommendationResponse
  request :: DescribeComponentConfigurationRecommendation
-> Request DescribeComponentConfigurationRecommendation
request = Service
-> DescribeComponentConfigurationRecommendation
-> Request DescribeComponentConfigurationRecommendation
forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON Service
defaultService
  response :: Logger
-> Service
-> Proxy DescribeComponentConfigurationRecommendation
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse DescribeComponentConfigurationRecommendation)))
response =
    (Int
 -> ResponseHeaders
 -> Object
 -> Either
      String (AWSResponse DescribeComponentConfigurationRecommendation))
-> Logger
-> Service
-> Proxy DescribeComponentConfigurationRecommendation
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse
           (AWSResponse DescribeComponentConfigurationRecommendation)))
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Int -> DescribeComponentConfigurationRecommendationResponse
DescribeComponentConfigurationRecommendationResponse'
            (Maybe Text
 -> Int -> DescribeComponentConfigurationRecommendationResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Int -> DescribeComponentConfigurationRecommendationResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"ComponentConfiguration")
              Either
  String
  (Int -> DescribeComponentConfigurationRecommendationResponse)
-> Either String Int
-> Either
     String DescribeComponentConfigurationRecommendationResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    DescribeComponentConfigurationRecommendation

instance
  Prelude.NFData
    DescribeComponentConfigurationRecommendation

instance
  Core.ToHeaders
    DescribeComponentConfigurationRecommendation
  where
  toHeaders :: DescribeComponentConfigurationRecommendation -> ResponseHeaders
toHeaders =
    ResponseHeaders
-> DescribeComponentConfigurationRecommendation -> ResponseHeaders
forall a b. a -> b -> a
Prelude.const
      ( [ResponseHeaders] -> ResponseHeaders
forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              HeaderName -> ByteString -> ResponseHeaders
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Core.=# ( ByteString
"EC2WindowsBarleyService.DescribeComponentConfigurationRecommendation" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              HeaderName -> ByteString -> ResponseHeaders
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Core.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Core.ToJSON
    DescribeComponentConfigurationRecommendation
  where
  toJSON :: DescribeComponentConfigurationRecommendation -> Value
toJSON
    DescribeComponentConfigurationRecommendation' {Text
Tier
tier :: Tier
componentName :: Text
resourceGroupName :: Text
$sel:tier:DescribeComponentConfigurationRecommendation' :: DescribeComponentConfigurationRecommendation -> Tier
$sel:componentName:DescribeComponentConfigurationRecommendation' :: DescribeComponentConfigurationRecommendation -> Text
$sel:resourceGroupName:DescribeComponentConfigurationRecommendation' :: DescribeComponentConfigurationRecommendation -> Text
..} =
      [Pair] -> Value
Core.object
        ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
            [ Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just
                (Text
"ResourceGroupName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= Text
resourceGroupName),
              Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just (Text
"ComponentName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= Text
componentName),
              Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just (Text
"Tier" Text -> Tier -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= Tier
tier)
            ]
        )

instance
  Core.ToPath
    DescribeComponentConfigurationRecommendation
  where
  toPath :: DescribeComponentConfigurationRecommendation -> ByteString
toPath = ByteString
-> DescribeComponentConfigurationRecommendation -> ByteString
forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance
  Core.ToQuery
    DescribeComponentConfigurationRecommendation
  where
  toQuery :: DescribeComponentConfigurationRecommendation -> QueryString
toQuery = QueryString
-> DescribeComponentConfigurationRecommendation -> QueryString
forall a b. a -> b -> a
Prelude.const QueryString
forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDescribeComponentConfigurationRecommendationResponse' smart constructor.
data DescribeComponentConfigurationRecommendationResponse = DescribeComponentConfigurationRecommendationResponse'
  { -- | The recommended configuration settings of the component. The value is
    -- the escaped JSON of the configuration.
    DescribeComponentConfigurationRecommendationResponse -> Maybe Text
componentConfiguration :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeComponentConfigurationRecommendationResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeComponentConfigurationRecommendationResponse
-> DescribeComponentConfigurationRecommendationResponse -> Bool
(DescribeComponentConfigurationRecommendationResponse
 -> DescribeComponentConfigurationRecommendationResponse -> Bool)
-> (DescribeComponentConfigurationRecommendationResponse
    -> DescribeComponentConfigurationRecommendationResponse -> Bool)
-> Eq DescribeComponentConfigurationRecommendationResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeComponentConfigurationRecommendationResponse
-> DescribeComponentConfigurationRecommendationResponse -> Bool
$c/= :: DescribeComponentConfigurationRecommendationResponse
-> DescribeComponentConfigurationRecommendationResponse -> Bool
== :: DescribeComponentConfigurationRecommendationResponse
-> DescribeComponentConfigurationRecommendationResponse -> Bool
$c== :: DescribeComponentConfigurationRecommendationResponse
-> DescribeComponentConfigurationRecommendationResponse -> Bool
Prelude.Eq, ReadPrec [DescribeComponentConfigurationRecommendationResponse]
ReadPrec DescribeComponentConfigurationRecommendationResponse
Int -> ReadS DescribeComponentConfigurationRecommendationResponse
ReadS [DescribeComponentConfigurationRecommendationResponse]
(Int -> ReadS DescribeComponentConfigurationRecommendationResponse)
-> ReadS [DescribeComponentConfigurationRecommendationResponse]
-> ReadPrec DescribeComponentConfigurationRecommendationResponse
-> ReadPrec [DescribeComponentConfigurationRecommendationResponse]
-> Read DescribeComponentConfigurationRecommendationResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeComponentConfigurationRecommendationResponse]
$creadListPrec :: ReadPrec [DescribeComponentConfigurationRecommendationResponse]
readPrec :: ReadPrec DescribeComponentConfigurationRecommendationResponse
$creadPrec :: ReadPrec DescribeComponentConfigurationRecommendationResponse
readList :: ReadS [DescribeComponentConfigurationRecommendationResponse]
$creadList :: ReadS [DescribeComponentConfigurationRecommendationResponse]
readsPrec :: Int -> ReadS DescribeComponentConfigurationRecommendationResponse
$creadsPrec :: Int -> ReadS DescribeComponentConfigurationRecommendationResponse
Prelude.Read, Int
-> DescribeComponentConfigurationRecommendationResponse -> ShowS
[DescribeComponentConfigurationRecommendationResponse] -> ShowS
DescribeComponentConfigurationRecommendationResponse -> String
(Int
 -> DescribeComponentConfigurationRecommendationResponse -> ShowS)
-> (DescribeComponentConfigurationRecommendationResponse -> String)
-> ([DescribeComponentConfigurationRecommendationResponse]
    -> ShowS)
-> Show DescribeComponentConfigurationRecommendationResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeComponentConfigurationRecommendationResponse] -> ShowS
$cshowList :: [DescribeComponentConfigurationRecommendationResponse] -> ShowS
show :: DescribeComponentConfigurationRecommendationResponse -> String
$cshow :: DescribeComponentConfigurationRecommendationResponse -> String
showsPrec :: Int
-> DescribeComponentConfigurationRecommendationResponse -> ShowS
$cshowsPrec :: Int
-> DescribeComponentConfigurationRecommendationResponse -> ShowS
Prelude.Show, (forall x.
 DescribeComponentConfigurationRecommendationResponse
 -> Rep DescribeComponentConfigurationRecommendationResponse x)
-> (forall x.
    Rep DescribeComponentConfigurationRecommendationResponse x
    -> DescribeComponentConfigurationRecommendationResponse)
-> Generic DescribeComponentConfigurationRecommendationResponse
forall x.
Rep DescribeComponentConfigurationRecommendationResponse x
-> DescribeComponentConfigurationRecommendationResponse
forall x.
DescribeComponentConfigurationRecommendationResponse
-> Rep DescribeComponentConfigurationRecommendationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeComponentConfigurationRecommendationResponse x
-> DescribeComponentConfigurationRecommendationResponse
$cfrom :: forall x.
DescribeComponentConfigurationRecommendationResponse
-> Rep DescribeComponentConfigurationRecommendationResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeComponentConfigurationRecommendationResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'componentConfiguration', 'describeComponentConfigurationRecommendationResponse_componentConfiguration' - The recommended configuration settings of the component. The value is
-- the escaped JSON of the configuration.
--
-- 'httpStatus', 'describeComponentConfigurationRecommendationResponse_httpStatus' - The response's http status code.
newDescribeComponentConfigurationRecommendationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeComponentConfigurationRecommendationResponse
newDescribeComponentConfigurationRecommendationResponse :: Int -> DescribeComponentConfigurationRecommendationResponse
newDescribeComponentConfigurationRecommendationResponse
  Int
pHttpStatus_ =
    DescribeComponentConfigurationRecommendationResponse' :: Maybe Text
-> Int -> DescribeComponentConfigurationRecommendationResponse
DescribeComponentConfigurationRecommendationResponse'
      { $sel:componentConfiguration:DescribeComponentConfigurationRecommendationResponse' :: Maybe Text
componentConfiguration =
          Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeComponentConfigurationRecommendationResponse' :: Int
httpStatus =
          Int
pHttpStatus_
      }

-- | The recommended configuration settings of the component. The value is
-- the escaped JSON of the configuration.
describeComponentConfigurationRecommendationResponse_componentConfiguration :: Lens.Lens' DescribeComponentConfigurationRecommendationResponse (Prelude.Maybe Prelude.Text)
describeComponentConfigurationRecommendationResponse_componentConfiguration :: (Maybe Text -> f (Maybe Text))
-> DescribeComponentConfigurationRecommendationResponse
-> f DescribeComponentConfigurationRecommendationResponse
describeComponentConfigurationRecommendationResponse_componentConfiguration = (DescribeComponentConfigurationRecommendationResponse
 -> Maybe Text)
-> (DescribeComponentConfigurationRecommendationResponse
    -> Maybe Text
    -> DescribeComponentConfigurationRecommendationResponse)
-> Lens
     DescribeComponentConfigurationRecommendationResponse
     DescribeComponentConfigurationRecommendationResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeComponentConfigurationRecommendationResponse' {Maybe Text
componentConfiguration :: Maybe Text
$sel:componentConfiguration:DescribeComponentConfigurationRecommendationResponse' :: DescribeComponentConfigurationRecommendationResponse -> Maybe Text
componentConfiguration} -> Maybe Text
componentConfiguration) (\s :: DescribeComponentConfigurationRecommendationResponse
s@DescribeComponentConfigurationRecommendationResponse' {} Maybe Text
a -> DescribeComponentConfigurationRecommendationResponse
s {$sel:componentConfiguration:DescribeComponentConfigurationRecommendationResponse' :: Maybe Text
componentConfiguration = Maybe Text
a} :: DescribeComponentConfigurationRecommendationResponse)

-- | The response's http status code.
describeComponentConfigurationRecommendationResponse_httpStatus :: Lens.Lens' DescribeComponentConfigurationRecommendationResponse Prelude.Int
describeComponentConfigurationRecommendationResponse_httpStatus :: (Int -> f Int)
-> DescribeComponentConfigurationRecommendationResponse
-> f DescribeComponentConfigurationRecommendationResponse
describeComponentConfigurationRecommendationResponse_httpStatus = (DescribeComponentConfigurationRecommendationResponse -> Int)
-> (DescribeComponentConfigurationRecommendationResponse
    -> Int -> DescribeComponentConfigurationRecommendationResponse)
-> Lens
     DescribeComponentConfigurationRecommendationResponse
     DescribeComponentConfigurationRecommendationResponse
     Int
     Int
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeComponentConfigurationRecommendationResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeComponentConfigurationRecommendationResponse' :: DescribeComponentConfigurationRecommendationResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeComponentConfigurationRecommendationResponse
s@DescribeComponentConfigurationRecommendationResponse' {} Int
a -> DescribeComponentConfigurationRecommendationResponse
s {$sel:httpStatus:DescribeComponentConfigurationRecommendationResponse' :: Int
httpStatus = Int
a} :: DescribeComponentConfigurationRecommendationResponse)

instance
  Prelude.NFData
    DescribeComponentConfigurationRecommendationResponse