{-# 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.GetResolverQueryLogConfigPolicy
-- 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 query logging policy. A query logging policy
-- specifies the Resolver query logging operations and resources that you
-- want to allow another Amazon Web Services account to be able to use.
module Amazonka.Route53Resolver.GetResolverQueryLogConfigPolicy
  ( -- * Creating a Request
    GetResolverQueryLogConfigPolicy (..),
    newGetResolverQueryLogConfigPolicy,

    -- * Request Lenses
    getResolverQueryLogConfigPolicy_arn,

    -- * Destructuring the Response
    GetResolverQueryLogConfigPolicyResponse (..),
    newGetResolverQueryLogConfigPolicyResponse,

    -- * Response Lenses
    getResolverQueryLogConfigPolicyResponse_resolverQueryLogConfigPolicy,
    getResolverQueryLogConfigPolicyResponse_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:/ 'newGetResolverQueryLogConfigPolicy' smart constructor.
data GetResolverQueryLogConfigPolicy = GetResolverQueryLogConfigPolicy'
  { -- | The ARN of the query logging configuration that you want to get the
    -- query logging policy for.
    GetResolverQueryLogConfigPolicy -> Text
arn :: Prelude.Text
  }
  deriving (GetResolverQueryLogConfigPolicy
-> GetResolverQueryLogConfigPolicy -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetResolverQueryLogConfigPolicy
-> GetResolverQueryLogConfigPolicy -> Bool
$c/= :: GetResolverQueryLogConfigPolicy
-> GetResolverQueryLogConfigPolicy -> Bool
== :: GetResolverQueryLogConfigPolicy
-> GetResolverQueryLogConfigPolicy -> Bool
$c== :: GetResolverQueryLogConfigPolicy
-> GetResolverQueryLogConfigPolicy -> Bool
Prelude.Eq, ReadPrec [GetResolverQueryLogConfigPolicy]
ReadPrec GetResolverQueryLogConfigPolicy
Int -> ReadS GetResolverQueryLogConfigPolicy
ReadS [GetResolverQueryLogConfigPolicy]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetResolverQueryLogConfigPolicy]
$creadListPrec :: ReadPrec [GetResolverQueryLogConfigPolicy]
readPrec :: ReadPrec GetResolverQueryLogConfigPolicy
$creadPrec :: ReadPrec GetResolverQueryLogConfigPolicy
readList :: ReadS [GetResolverQueryLogConfigPolicy]
$creadList :: ReadS [GetResolverQueryLogConfigPolicy]
readsPrec :: Int -> ReadS GetResolverQueryLogConfigPolicy
$creadsPrec :: Int -> ReadS GetResolverQueryLogConfigPolicy
Prelude.Read, Int -> GetResolverQueryLogConfigPolicy -> ShowS
[GetResolverQueryLogConfigPolicy] -> ShowS
GetResolverQueryLogConfigPolicy -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetResolverQueryLogConfigPolicy] -> ShowS
$cshowList :: [GetResolverQueryLogConfigPolicy] -> ShowS
show :: GetResolverQueryLogConfigPolicy -> String
$cshow :: GetResolverQueryLogConfigPolicy -> String
showsPrec :: Int -> GetResolverQueryLogConfigPolicy -> ShowS
$cshowsPrec :: Int -> GetResolverQueryLogConfigPolicy -> ShowS
Prelude.Show, forall x.
Rep GetResolverQueryLogConfigPolicy x
-> GetResolverQueryLogConfigPolicy
forall x.
GetResolverQueryLogConfigPolicy
-> Rep GetResolverQueryLogConfigPolicy x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetResolverQueryLogConfigPolicy x
-> GetResolverQueryLogConfigPolicy
$cfrom :: forall x.
GetResolverQueryLogConfigPolicy
-> Rep GetResolverQueryLogConfigPolicy x
Prelude.Generic)

-- |
-- Create a value of 'GetResolverQueryLogConfigPolicy' 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:
--
-- 'arn', 'getResolverQueryLogConfigPolicy_arn' - The ARN of the query logging configuration that you want to get the
-- query logging policy for.
newGetResolverQueryLogConfigPolicy ::
  -- | 'arn'
  Prelude.Text ->
  GetResolverQueryLogConfigPolicy
newGetResolverQueryLogConfigPolicy :: Text -> GetResolverQueryLogConfigPolicy
newGetResolverQueryLogConfigPolicy Text
pArn_ =
  GetResolverQueryLogConfigPolicy' {$sel:arn:GetResolverQueryLogConfigPolicy' :: Text
arn = Text
pArn_}

-- | The ARN of the query logging configuration that you want to get the
-- query logging policy for.
getResolverQueryLogConfigPolicy_arn :: Lens.Lens' GetResolverQueryLogConfigPolicy Prelude.Text
getResolverQueryLogConfigPolicy_arn :: Lens' GetResolverQueryLogConfigPolicy Text
getResolverQueryLogConfigPolicy_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetResolverQueryLogConfigPolicy' {Text
arn :: Text
$sel:arn:GetResolverQueryLogConfigPolicy' :: GetResolverQueryLogConfigPolicy -> Text
arn} -> Text
arn) (\s :: GetResolverQueryLogConfigPolicy
s@GetResolverQueryLogConfigPolicy' {} Text
a -> GetResolverQueryLogConfigPolicy
s {$sel:arn:GetResolverQueryLogConfigPolicy' :: Text
arn = Text
a} :: GetResolverQueryLogConfigPolicy)

instance
  Core.AWSRequest
    GetResolverQueryLogConfigPolicy
  where
  type
    AWSResponse GetResolverQueryLogConfigPolicy =
      GetResolverQueryLogConfigPolicyResponse
  request :: (Service -> Service)
-> GetResolverQueryLogConfigPolicy
-> Request GetResolverQueryLogConfigPolicy
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 GetResolverQueryLogConfigPolicy
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GetResolverQueryLogConfigPolicy)))
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 Text -> Int -> GetResolverQueryLogConfigPolicyResponse
GetResolverQueryLogConfigPolicyResponse'
            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
"ResolverQueryLogConfigPolicy")
            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
    GetResolverQueryLogConfigPolicy
  where
  hashWithSalt :: Int -> GetResolverQueryLogConfigPolicy -> Int
hashWithSalt
    Int
_salt
    GetResolverQueryLogConfigPolicy' {Text
arn :: Text
$sel:arn:GetResolverQueryLogConfigPolicy' :: GetResolverQueryLogConfigPolicy -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
arn

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

instance
  Data.ToHeaders
    GetResolverQueryLogConfigPolicy
  where
  toHeaders :: GetResolverQueryLogConfigPolicy -> 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.GetResolverQueryLogConfigPolicy" ::
                          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 GetResolverQueryLogConfigPolicy where
  toJSON :: GetResolverQueryLogConfigPolicy -> Value
toJSON GetResolverQueryLogConfigPolicy' {Text
arn :: Text
$sel:arn:GetResolverQueryLogConfigPolicy' :: GetResolverQueryLogConfigPolicy -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [forall a. a -> Maybe a
Prelude.Just (Key
"Arn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
arn)]
      )

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

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

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

-- |
-- Create a value of 'GetResolverQueryLogConfigPolicyResponse' 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:
--
-- 'resolverQueryLogConfigPolicy', 'getResolverQueryLogConfigPolicyResponse_resolverQueryLogConfigPolicy' - Information about the query logging policy for the query logging
-- configuration that you specified in a @GetResolverQueryLogConfigPolicy@
-- request.
--
-- 'httpStatus', 'getResolverQueryLogConfigPolicyResponse_httpStatus' - The response's http status code.
newGetResolverQueryLogConfigPolicyResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetResolverQueryLogConfigPolicyResponse
newGetResolverQueryLogConfigPolicyResponse :: Int -> GetResolverQueryLogConfigPolicyResponse
newGetResolverQueryLogConfigPolicyResponse
  Int
pHttpStatus_ =
    GetResolverQueryLogConfigPolicyResponse'
      { $sel:resolverQueryLogConfigPolicy:GetResolverQueryLogConfigPolicyResponse' :: Maybe Text
resolverQueryLogConfigPolicy =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetResolverQueryLogConfigPolicyResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Information about the query logging policy for the query logging
-- configuration that you specified in a @GetResolverQueryLogConfigPolicy@
-- request.
getResolverQueryLogConfigPolicyResponse_resolverQueryLogConfigPolicy :: Lens.Lens' GetResolverQueryLogConfigPolicyResponse (Prelude.Maybe Prelude.Text)
getResolverQueryLogConfigPolicyResponse_resolverQueryLogConfigPolicy :: Lens' GetResolverQueryLogConfigPolicyResponse (Maybe Text)
getResolverQueryLogConfigPolicyResponse_resolverQueryLogConfigPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetResolverQueryLogConfigPolicyResponse' {Maybe Text
resolverQueryLogConfigPolicy :: Maybe Text
$sel:resolverQueryLogConfigPolicy:GetResolverQueryLogConfigPolicyResponse' :: GetResolverQueryLogConfigPolicyResponse -> Maybe Text
resolverQueryLogConfigPolicy} -> Maybe Text
resolverQueryLogConfigPolicy) (\s :: GetResolverQueryLogConfigPolicyResponse
s@GetResolverQueryLogConfigPolicyResponse' {} Maybe Text
a -> GetResolverQueryLogConfigPolicyResponse
s {$sel:resolverQueryLogConfigPolicy:GetResolverQueryLogConfigPolicyResponse' :: Maybe Text
resolverQueryLogConfigPolicy = Maybe Text
a} :: GetResolverQueryLogConfigPolicyResponse)

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

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