{-# 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.AppRunner.DescribeObservabilityConfiguration
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Return a full description of an App Runner observability configuration
-- resource.
module Amazonka.AppRunner.DescribeObservabilityConfiguration
  ( -- * Creating a Request
    DescribeObservabilityConfiguration (..),
    newDescribeObservabilityConfiguration,

    -- * Request Lenses
    describeObservabilityConfiguration_observabilityConfigurationArn,

    -- * Destructuring the Response
    DescribeObservabilityConfigurationResponse (..),
    newDescribeObservabilityConfigurationResponse,

    -- * Response Lenses
    describeObservabilityConfigurationResponse_httpStatus,
    describeObservabilityConfigurationResponse_observabilityConfiguration,
  )
where

import Amazonka.AppRunner.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDescribeObservabilityConfiguration' smart constructor.
data DescribeObservabilityConfiguration = DescribeObservabilityConfiguration'
  { -- | The Amazon Resource Name (ARN) of the App Runner observability
    -- configuration that you want a description for.
    --
    -- The ARN can be a full observability configuration ARN, or a partial ARN
    -- ending with either @...\/@/@name@/@ @ or
    -- @...\/@/@name@/@\/@/@revision@/@ @. If a revision isn\'t specified, the
    -- latest active revision is described.
    DescribeObservabilityConfiguration -> Text
observabilityConfigurationArn :: Prelude.Text
  }
  deriving (DescribeObservabilityConfiguration
-> DescribeObservabilityConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeObservabilityConfiguration
-> DescribeObservabilityConfiguration -> Bool
$c/= :: DescribeObservabilityConfiguration
-> DescribeObservabilityConfiguration -> Bool
== :: DescribeObservabilityConfiguration
-> DescribeObservabilityConfiguration -> Bool
$c== :: DescribeObservabilityConfiguration
-> DescribeObservabilityConfiguration -> Bool
Prelude.Eq, ReadPrec [DescribeObservabilityConfiguration]
ReadPrec DescribeObservabilityConfiguration
Int -> ReadS DescribeObservabilityConfiguration
ReadS [DescribeObservabilityConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeObservabilityConfiguration]
$creadListPrec :: ReadPrec [DescribeObservabilityConfiguration]
readPrec :: ReadPrec DescribeObservabilityConfiguration
$creadPrec :: ReadPrec DescribeObservabilityConfiguration
readList :: ReadS [DescribeObservabilityConfiguration]
$creadList :: ReadS [DescribeObservabilityConfiguration]
readsPrec :: Int -> ReadS DescribeObservabilityConfiguration
$creadsPrec :: Int -> ReadS DescribeObservabilityConfiguration
Prelude.Read, Int -> DescribeObservabilityConfiguration -> ShowS
[DescribeObservabilityConfiguration] -> ShowS
DescribeObservabilityConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeObservabilityConfiguration] -> ShowS
$cshowList :: [DescribeObservabilityConfiguration] -> ShowS
show :: DescribeObservabilityConfiguration -> String
$cshow :: DescribeObservabilityConfiguration -> String
showsPrec :: Int -> DescribeObservabilityConfiguration -> ShowS
$cshowsPrec :: Int -> DescribeObservabilityConfiguration -> ShowS
Prelude.Show, forall x.
Rep DescribeObservabilityConfiguration x
-> DescribeObservabilityConfiguration
forall x.
DescribeObservabilityConfiguration
-> Rep DescribeObservabilityConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeObservabilityConfiguration x
-> DescribeObservabilityConfiguration
$cfrom :: forall x.
DescribeObservabilityConfiguration
-> Rep DescribeObservabilityConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'DescribeObservabilityConfiguration' 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:
--
-- 'observabilityConfigurationArn', 'describeObservabilityConfiguration_observabilityConfigurationArn' - The Amazon Resource Name (ARN) of the App Runner observability
-- configuration that you want a description for.
--
-- The ARN can be a full observability configuration ARN, or a partial ARN
-- ending with either @...\/@/@name@/@ @ or
-- @...\/@/@name@/@\/@/@revision@/@ @. If a revision isn\'t specified, the
-- latest active revision is described.
newDescribeObservabilityConfiguration ::
  -- | 'observabilityConfigurationArn'
  Prelude.Text ->
  DescribeObservabilityConfiguration
newDescribeObservabilityConfiguration :: Text -> DescribeObservabilityConfiguration
newDescribeObservabilityConfiguration
  Text
pObservabilityConfigurationArn_ =
    DescribeObservabilityConfiguration'
      { $sel:observabilityConfigurationArn:DescribeObservabilityConfiguration' :: Text
observabilityConfigurationArn =
          Text
pObservabilityConfigurationArn_
      }

-- | The Amazon Resource Name (ARN) of the App Runner observability
-- configuration that you want a description for.
--
-- The ARN can be a full observability configuration ARN, or a partial ARN
-- ending with either @...\/@/@name@/@ @ or
-- @...\/@/@name@/@\/@/@revision@/@ @. If a revision isn\'t specified, the
-- latest active revision is described.
describeObservabilityConfiguration_observabilityConfigurationArn :: Lens.Lens' DescribeObservabilityConfiguration Prelude.Text
describeObservabilityConfiguration_observabilityConfigurationArn :: Lens' DescribeObservabilityConfiguration Text
describeObservabilityConfiguration_observabilityConfigurationArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeObservabilityConfiguration' {Text
observabilityConfigurationArn :: Text
$sel:observabilityConfigurationArn:DescribeObservabilityConfiguration' :: DescribeObservabilityConfiguration -> Text
observabilityConfigurationArn} -> Text
observabilityConfigurationArn) (\s :: DescribeObservabilityConfiguration
s@DescribeObservabilityConfiguration' {} Text
a -> DescribeObservabilityConfiguration
s {$sel:observabilityConfigurationArn:DescribeObservabilityConfiguration' :: Text
observabilityConfigurationArn = Text
a} :: DescribeObservabilityConfiguration)

instance
  Core.AWSRequest
    DescribeObservabilityConfiguration
  where
  type
    AWSResponse DescribeObservabilityConfiguration =
      DescribeObservabilityConfigurationResponse
  request :: (Service -> Service)
-> DescribeObservabilityConfiguration
-> Request DescribeObservabilityConfiguration
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeObservabilityConfiguration
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeObservabilityConfiguration)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Int
-> ObservabilityConfiguration
-> DescribeObservabilityConfigurationResponse
DescribeObservabilityConfigurationResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"ObservabilityConfiguration")
      )

instance
  Prelude.Hashable
    DescribeObservabilityConfiguration
  where
  hashWithSalt :: Int -> DescribeObservabilityConfiguration -> Int
hashWithSalt
    Int
_salt
    DescribeObservabilityConfiguration' {Text
observabilityConfigurationArn :: Text
$sel:observabilityConfigurationArn:DescribeObservabilityConfiguration' :: DescribeObservabilityConfiguration -> Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
observabilityConfigurationArn

instance
  Prelude.NFData
    DescribeObservabilityConfiguration
  where
  rnf :: DescribeObservabilityConfiguration -> ()
rnf DescribeObservabilityConfiguration' {Text
observabilityConfigurationArn :: Text
$sel:observabilityConfigurationArn:DescribeObservabilityConfiguration' :: DescribeObservabilityConfiguration -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
observabilityConfigurationArn

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

instance
  Data.ToJSON
    DescribeObservabilityConfiguration
  where
  toJSON :: DescribeObservabilityConfiguration -> Value
toJSON DescribeObservabilityConfiguration' {Text
observabilityConfigurationArn :: Text
$sel:observabilityConfigurationArn:DescribeObservabilityConfiguration' :: DescribeObservabilityConfiguration -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just
              ( Key
"ObservabilityConfigurationArn"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
observabilityConfigurationArn
              )
          ]
      )

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

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

-- | /See:/ 'newDescribeObservabilityConfigurationResponse' smart constructor.
data DescribeObservabilityConfigurationResponse = DescribeObservabilityConfigurationResponse'
  { -- | The response's http status code.
    DescribeObservabilityConfigurationResponse -> Int
httpStatus :: Prelude.Int,
    -- | A full description of the App Runner observability configuration that
    -- you specified in this request.
    DescribeObservabilityConfigurationResponse
-> ObservabilityConfiguration
observabilityConfiguration :: ObservabilityConfiguration
  }
  deriving (DescribeObservabilityConfigurationResponse
-> DescribeObservabilityConfigurationResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeObservabilityConfigurationResponse
-> DescribeObservabilityConfigurationResponse -> Bool
$c/= :: DescribeObservabilityConfigurationResponse
-> DescribeObservabilityConfigurationResponse -> Bool
== :: DescribeObservabilityConfigurationResponse
-> DescribeObservabilityConfigurationResponse -> Bool
$c== :: DescribeObservabilityConfigurationResponse
-> DescribeObservabilityConfigurationResponse -> Bool
Prelude.Eq, ReadPrec [DescribeObservabilityConfigurationResponse]
ReadPrec DescribeObservabilityConfigurationResponse
Int -> ReadS DescribeObservabilityConfigurationResponse
ReadS [DescribeObservabilityConfigurationResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeObservabilityConfigurationResponse]
$creadListPrec :: ReadPrec [DescribeObservabilityConfigurationResponse]
readPrec :: ReadPrec DescribeObservabilityConfigurationResponse
$creadPrec :: ReadPrec DescribeObservabilityConfigurationResponse
readList :: ReadS [DescribeObservabilityConfigurationResponse]
$creadList :: ReadS [DescribeObservabilityConfigurationResponse]
readsPrec :: Int -> ReadS DescribeObservabilityConfigurationResponse
$creadsPrec :: Int -> ReadS DescribeObservabilityConfigurationResponse
Prelude.Read, Int -> DescribeObservabilityConfigurationResponse -> ShowS
[DescribeObservabilityConfigurationResponse] -> ShowS
DescribeObservabilityConfigurationResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeObservabilityConfigurationResponse] -> ShowS
$cshowList :: [DescribeObservabilityConfigurationResponse] -> ShowS
show :: DescribeObservabilityConfigurationResponse -> String
$cshow :: DescribeObservabilityConfigurationResponse -> String
showsPrec :: Int -> DescribeObservabilityConfigurationResponse -> ShowS
$cshowsPrec :: Int -> DescribeObservabilityConfigurationResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeObservabilityConfigurationResponse x
-> DescribeObservabilityConfigurationResponse
forall x.
DescribeObservabilityConfigurationResponse
-> Rep DescribeObservabilityConfigurationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeObservabilityConfigurationResponse x
-> DescribeObservabilityConfigurationResponse
$cfrom :: forall x.
DescribeObservabilityConfigurationResponse
-> Rep DescribeObservabilityConfigurationResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeObservabilityConfigurationResponse' 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:
--
-- 'httpStatus', 'describeObservabilityConfigurationResponse_httpStatus' - The response's http status code.
--
-- 'observabilityConfiguration', 'describeObservabilityConfigurationResponse_observabilityConfiguration' - A full description of the App Runner observability configuration that
-- you specified in this request.
newDescribeObservabilityConfigurationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'observabilityConfiguration'
  ObservabilityConfiguration ->
  DescribeObservabilityConfigurationResponse
newDescribeObservabilityConfigurationResponse :: Int
-> ObservabilityConfiguration
-> DescribeObservabilityConfigurationResponse
newDescribeObservabilityConfigurationResponse
  Int
pHttpStatus_
  ObservabilityConfiguration
pObservabilityConfiguration_ =
    DescribeObservabilityConfigurationResponse'
      { $sel:httpStatus:DescribeObservabilityConfigurationResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:observabilityConfiguration:DescribeObservabilityConfigurationResponse' :: ObservabilityConfiguration
observabilityConfiguration =
          ObservabilityConfiguration
pObservabilityConfiguration_
      }

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

-- | A full description of the App Runner observability configuration that
-- you specified in this request.
describeObservabilityConfigurationResponse_observabilityConfiguration :: Lens.Lens' DescribeObservabilityConfigurationResponse ObservabilityConfiguration
describeObservabilityConfigurationResponse_observabilityConfiguration :: Lens'
  DescribeObservabilityConfigurationResponse
  ObservabilityConfiguration
describeObservabilityConfigurationResponse_observabilityConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeObservabilityConfigurationResponse' {ObservabilityConfiguration
observabilityConfiguration :: ObservabilityConfiguration
$sel:observabilityConfiguration:DescribeObservabilityConfigurationResponse' :: DescribeObservabilityConfigurationResponse
-> ObservabilityConfiguration
observabilityConfiguration} -> ObservabilityConfiguration
observabilityConfiguration) (\s :: DescribeObservabilityConfigurationResponse
s@DescribeObservabilityConfigurationResponse' {} ObservabilityConfiguration
a -> DescribeObservabilityConfigurationResponse
s {$sel:observabilityConfiguration:DescribeObservabilityConfigurationResponse' :: ObservabilityConfiguration
observabilityConfiguration = ObservabilityConfiguration
a} :: DescribeObservabilityConfigurationResponse)

instance
  Prelude.NFData
    DescribeObservabilityConfigurationResponse
  where
  rnf :: DescribeObservabilityConfigurationResponse -> ()
rnf DescribeObservabilityConfigurationResponse' {Int
ObservabilityConfiguration
observabilityConfiguration :: ObservabilityConfiguration
httpStatus :: Int
$sel:observabilityConfiguration:DescribeObservabilityConfigurationResponse' :: DescribeObservabilityConfigurationResponse
-> ObservabilityConfiguration
$sel:httpStatus:DescribeObservabilityConfigurationResponse' :: DescribeObservabilityConfigurationResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ObservabilityConfiguration
observabilityConfiguration