{-# 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.Route53Resolver.GetResolverQueryLogConfig
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Gets information about a specified Resolver query logging configuration,
-- such as the number of VPCs that the configuration is logging queries for
-- and the location that logs are sent to.
module Amazonka.Route53Resolver.GetResolverQueryLogConfig
  ( -- * Creating a Request
    GetResolverQueryLogConfig (..),
    newGetResolverQueryLogConfig,

    -- * Request Lenses
    getResolverQueryLogConfig_resolverQueryLogConfigId,

    -- * Destructuring the Response
    GetResolverQueryLogConfigResponse (..),
    newGetResolverQueryLogConfigResponse,

    -- * Response Lenses
    getResolverQueryLogConfigResponse_resolverQueryLogConfig,
    getResolverQueryLogConfigResponse_httpStatus,
  )
where

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
import Amazonka.Route53Resolver.Types

-- | /See:/ 'newGetResolverQueryLogConfig' smart constructor.
data GetResolverQueryLogConfig = GetResolverQueryLogConfig'
  { -- | The ID of the Resolver query logging configuration that you want to get
    -- information about.
    GetResolverQueryLogConfig -> Text
resolverQueryLogConfigId :: Prelude.Text
  }
  deriving (GetResolverQueryLogConfig -> GetResolverQueryLogConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetResolverQueryLogConfig -> GetResolverQueryLogConfig -> Bool
$c/= :: GetResolverQueryLogConfig -> GetResolverQueryLogConfig -> Bool
== :: GetResolverQueryLogConfig -> GetResolverQueryLogConfig -> Bool
$c== :: GetResolverQueryLogConfig -> GetResolverQueryLogConfig -> Bool
Prelude.Eq, ReadPrec [GetResolverQueryLogConfig]
ReadPrec GetResolverQueryLogConfig
Int -> ReadS GetResolverQueryLogConfig
ReadS [GetResolverQueryLogConfig]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetResolverQueryLogConfig]
$creadListPrec :: ReadPrec [GetResolverQueryLogConfig]
readPrec :: ReadPrec GetResolverQueryLogConfig
$creadPrec :: ReadPrec GetResolverQueryLogConfig
readList :: ReadS [GetResolverQueryLogConfig]
$creadList :: ReadS [GetResolverQueryLogConfig]
readsPrec :: Int -> ReadS GetResolverQueryLogConfig
$creadsPrec :: Int -> ReadS GetResolverQueryLogConfig
Prelude.Read, Int -> GetResolverQueryLogConfig -> ShowS
[GetResolverQueryLogConfig] -> ShowS
GetResolverQueryLogConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetResolverQueryLogConfig] -> ShowS
$cshowList :: [GetResolverQueryLogConfig] -> ShowS
show :: GetResolverQueryLogConfig -> String
$cshow :: GetResolverQueryLogConfig -> String
showsPrec :: Int -> GetResolverQueryLogConfig -> ShowS
$cshowsPrec :: Int -> GetResolverQueryLogConfig -> ShowS
Prelude.Show, forall x.
Rep GetResolverQueryLogConfig x -> GetResolverQueryLogConfig
forall x.
GetResolverQueryLogConfig -> Rep GetResolverQueryLogConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetResolverQueryLogConfig x -> GetResolverQueryLogConfig
$cfrom :: forall x.
GetResolverQueryLogConfig -> Rep GetResolverQueryLogConfig x
Prelude.Generic)

-- |
-- Create a value of 'GetResolverQueryLogConfig' 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:
--
-- 'resolverQueryLogConfigId', 'getResolverQueryLogConfig_resolverQueryLogConfigId' - The ID of the Resolver query logging configuration that you want to get
-- information about.
newGetResolverQueryLogConfig ::
  -- | 'resolverQueryLogConfigId'
  Prelude.Text ->
  GetResolverQueryLogConfig
newGetResolverQueryLogConfig :: Text -> GetResolverQueryLogConfig
newGetResolverQueryLogConfig
  Text
pResolverQueryLogConfigId_ =
    GetResolverQueryLogConfig'
      { $sel:resolverQueryLogConfigId:GetResolverQueryLogConfig' :: Text
resolverQueryLogConfigId =
          Text
pResolverQueryLogConfigId_
      }

-- | The ID of the Resolver query logging configuration that you want to get
-- information about.
getResolverQueryLogConfig_resolverQueryLogConfigId :: Lens.Lens' GetResolverQueryLogConfig Prelude.Text
getResolverQueryLogConfig_resolverQueryLogConfigId :: Lens' GetResolverQueryLogConfig Text
getResolverQueryLogConfig_resolverQueryLogConfigId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetResolverQueryLogConfig' {Text
resolverQueryLogConfigId :: Text
$sel:resolverQueryLogConfigId:GetResolverQueryLogConfig' :: GetResolverQueryLogConfig -> Text
resolverQueryLogConfigId} -> Text
resolverQueryLogConfigId) (\s :: GetResolverQueryLogConfig
s@GetResolverQueryLogConfig' {} Text
a -> GetResolverQueryLogConfig
s {$sel:resolverQueryLogConfigId:GetResolverQueryLogConfig' :: Text
resolverQueryLogConfigId = Text
a} :: GetResolverQueryLogConfig)

instance Core.AWSRequest GetResolverQueryLogConfig where
  type
    AWSResponse GetResolverQueryLogConfig =
      GetResolverQueryLogConfigResponse
  request :: (Service -> Service)
-> GetResolverQueryLogConfig -> Request GetResolverQueryLogConfig
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 GetResolverQueryLogConfig
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetResolverQueryLogConfig)))
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 ->
          Maybe ResolverQueryLogConfig
-> Int -> GetResolverQueryLogConfigResponse
GetResolverQueryLogConfigResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"ResolverQueryLogConfig")
            forall (f :: * -> *) a b. Applicative f => 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))
      )

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

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

instance Data.ToHeaders GetResolverQueryLogConfig where
  toHeaders :: GetResolverQueryLogConfig -> 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
"Route53Resolver.GetResolverQueryLogConfig" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

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

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

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

-- | /See:/ 'newGetResolverQueryLogConfigResponse' smart constructor.
data GetResolverQueryLogConfigResponse = GetResolverQueryLogConfigResponse'
  { -- | Information about the Resolver query logging configuration that you
    -- specified in a @GetQueryLogConfig@ request.
    GetResolverQueryLogConfigResponse -> Maybe ResolverQueryLogConfig
resolverQueryLogConfig :: Prelude.Maybe ResolverQueryLogConfig,
    -- | The response's http status code.
    GetResolverQueryLogConfigResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetResolverQueryLogConfigResponse
-> GetResolverQueryLogConfigResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetResolverQueryLogConfigResponse
-> GetResolverQueryLogConfigResponse -> Bool
$c/= :: GetResolverQueryLogConfigResponse
-> GetResolverQueryLogConfigResponse -> Bool
== :: GetResolverQueryLogConfigResponse
-> GetResolverQueryLogConfigResponse -> Bool
$c== :: GetResolverQueryLogConfigResponse
-> GetResolverQueryLogConfigResponse -> Bool
Prelude.Eq, ReadPrec [GetResolverQueryLogConfigResponse]
ReadPrec GetResolverQueryLogConfigResponse
Int -> ReadS GetResolverQueryLogConfigResponse
ReadS [GetResolverQueryLogConfigResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetResolverQueryLogConfigResponse]
$creadListPrec :: ReadPrec [GetResolverQueryLogConfigResponse]
readPrec :: ReadPrec GetResolverQueryLogConfigResponse
$creadPrec :: ReadPrec GetResolverQueryLogConfigResponse
readList :: ReadS [GetResolverQueryLogConfigResponse]
$creadList :: ReadS [GetResolverQueryLogConfigResponse]
readsPrec :: Int -> ReadS GetResolverQueryLogConfigResponse
$creadsPrec :: Int -> ReadS GetResolverQueryLogConfigResponse
Prelude.Read, Int -> GetResolverQueryLogConfigResponse -> ShowS
[GetResolverQueryLogConfigResponse] -> ShowS
GetResolverQueryLogConfigResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetResolverQueryLogConfigResponse] -> ShowS
$cshowList :: [GetResolverQueryLogConfigResponse] -> ShowS
show :: GetResolverQueryLogConfigResponse -> String
$cshow :: GetResolverQueryLogConfigResponse -> String
showsPrec :: Int -> GetResolverQueryLogConfigResponse -> ShowS
$cshowsPrec :: Int -> GetResolverQueryLogConfigResponse -> ShowS
Prelude.Show, forall x.
Rep GetResolverQueryLogConfigResponse x
-> GetResolverQueryLogConfigResponse
forall x.
GetResolverQueryLogConfigResponse
-> Rep GetResolverQueryLogConfigResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetResolverQueryLogConfigResponse x
-> GetResolverQueryLogConfigResponse
$cfrom :: forall x.
GetResolverQueryLogConfigResponse
-> Rep GetResolverQueryLogConfigResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetResolverQueryLogConfigResponse' 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:
--
-- 'resolverQueryLogConfig', 'getResolverQueryLogConfigResponse_resolverQueryLogConfig' - Information about the Resolver query logging configuration that you
-- specified in a @GetQueryLogConfig@ request.
--
-- 'httpStatus', 'getResolverQueryLogConfigResponse_httpStatus' - The response's http status code.
newGetResolverQueryLogConfigResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetResolverQueryLogConfigResponse
newGetResolverQueryLogConfigResponse :: Int -> GetResolverQueryLogConfigResponse
newGetResolverQueryLogConfigResponse Int
pHttpStatus_ =
  GetResolverQueryLogConfigResponse'
    { $sel:resolverQueryLogConfig:GetResolverQueryLogConfigResponse' :: Maybe ResolverQueryLogConfig
resolverQueryLogConfig =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetResolverQueryLogConfigResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the Resolver query logging configuration that you
-- specified in a @GetQueryLogConfig@ request.
getResolverQueryLogConfigResponse_resolverQueryLogConfig :: Lens.Lens' GetResolverQueryLogConfigResponse (Prelude.Maybe ResolverQueryLogConfig)
getResolverQueryLogConfigResponse_resolverQueryLogConfig :: Lens'
  GetResolverQueryLogConfigResponse (Maybe ResolverQueryLogConfig)
getResolverQueryLogConfigResponse_resolverQueryLogConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetResolverQueryLogConfigResponse' {Maybe ResolverQueryLogConfig
resolverQueryLogConfig :: Maybe ResolverQueryLogConfig
$sel:resolverQueryLogConfig:GetResolverQueryLogConfigResponse' :: GetResolverQueryLogConfigResponse -> Maybe ResolverQueryLogConfig
resolverQueryLogConfig} -> Maybe ResolverQueryLogConfig
resolverQueryLogConfig) (\s :: GetResolverQueryLogConfigResponse
s@GetResolverQueryLogConfigResponse' {} Maybe ResolverQueryLogConfig
a -> GetResolverQueryLogConfigResponse
s {$sel:resolverQueryLogConfig:GetResolverQueryLogConfigResponse' :: Maybe ResolverQueryLogConfig
resolverQueryLogConfig = Maybe ResolverQueryLogConfig
a} :: GetResolverQueryLogConfigResponse)

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

instance
  Prelude.NFData
    GetResolverQueryLogConfigResponse
  where
  rnf :: GetResolverQueryLogConfigResponse -> ()
rnf GetResolverQueryLogConfigResponse' {Int
Maybe ResolverQueryLogConfig
httpStatus :: Int
resolverQueryLogConfig :: Maybe ResolverQueryLogConfig
$sel:httpStatus:GetResolverQueryLogConfigResponse' :: GetResolverQueryLogConfigResponse -> Int
$sel:resolverQueryLogConfig:GetResolverQueryLogConfigResponse' :: GetResolverQueryLogConfigResponse -> Maybe ResolverQueryLogConfig
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ResolverQueryLogConfig
resolverQueryLogConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus