{-# 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.CloudFront.GetFieldLevelEncryptionProfile
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Get the field-level encryption profile information.
module Amazonka.CloudFront.GetFieldLevelEncryptionProfile
  ( -- * Creating a Request
    GetFieldLevelEncryptionProfile (..),
    newGetFieldLevelEncryptionProfile,

    -- * Request Lenses
    getFieldLevelEncryptionProfile_id,

    -- * Destructuring the Response
    GetFieldLevelEncryptionProfileResponse (..),
    newGetFieldLevelEncryptionProfileResponse,

    -- * Response Lenses
    getFieldLevelEncryptionProfileResponse_eTag,
    getFieldLevelEncryptionProfileResponse_fieldLevelEncryptionProfile,
    getFieldLevelEncryptionProfileResponse_httpStatus,
  )
where

import Amazonka.CloudFront.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:/ 'newGetFieldLevelEncryptionProfile' smart constructor.
data GetFieldLevelEncryptionProfile = GetFieldLevelEncryptionProfile'
  { -- | Get the ID for the field-level encryption profile information.
    GetFieldLevelEncryptionProfile -> Text
id :: Prelude.Text
  }
  deriving (GetFieldLevelEncryptionProfile
-> GetFieldLevelEncryptionProfile -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetFieldLevelEncryptionProfile
-> GetFieldLevelEncryptionProfile -> Bool
$c/= :: GetFieldLevelEncryptionProfile
-> GetFieldLevelEncryptionProfile -> Bool
== :: GetFieldLevelEncryptionProfile
-> GetFieldLevelEncryptionProfile -> Bool
$c== :: GetFieldLevelEncryptionProfile
-> GetFieldLevelEncryptionProfile -> Bool
Prelude.Eq, ReadPrec [GetFieldLevelEncryptionProfile]
ReadPrec GetFieldLevelEncryptionProfile
Int -> ReadS GetFieldLevelEncryptionProfile
ReadS [GetFieldLevelEncryptionProfile]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetFieldLevelEncryptionProfile]
$creadListPrec :: ReadPrec [GetFieldLevelEncryptionProfile]
readPrec :: ReadPrec GetFieldLevelEncryptionProfile
$creadPrec :: ReadPrec GetFieldLevelEncryptionProfile
readList :: ReadS [GetFieldLevelEncryptionProfile]
$creadList :: ReadS [GetFieldLevelEncryptionProfile]
readsPrec :: Int -> ReadS GetFieldLevelEncryptionProfile
$creadsPrec :: Int -> ReadS GetFieldLevelEncryptionProfile
Prelude.Read, Int -> GetFieldLevelEncryptionProfile -> ShowS
[GetFieldLevelEncryptionProfile] -> ShowS
GetFieldLevelEncryptionProfile -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetFieldLevelEncryptionProfile] -> ShowS
$cshowList :: [GetFieldLevelEncryptionProfile] -> ShowS
show :: GetFieldLevelEncryptionProfile -> String
$cshow :: GetFieldLevelEncryptionProfile -> String
showsPrec :: Int -> GetFieldLevelEncryptionProfile -> ShowS
$cshowsPrec :: Int -> GetFieldLevelEncryptionProfile -> ShowS
Prelude.Show, forall x.
Rep GetFieldLevelEncryptionProfile x
-> GetFieldLevelEncryptionProfile
forall x.
GetFieldLevelEncryptionProfile
-> Rep GetFieldLevelEncryptionProfile x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetFieldLevelEncryptionProfile x
-> GetFieldLevelEncryptionProfile
$cfrom :: forall x.
GetFieldLevelEncryptionProfile
-> Rep GetFieldLevelEncryptionProfile x
Prelude.Generic)

-- |
-- Create a value of 'GetFieldLevelEncryptionProfile' 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:
--
-- 'id', 'getFieldLevelEncryptionProfile_id' - Get the ID for the field-level encryption profile information.
newGetFieldLevelEncryptionProfile ::
  -- | 'id'
  Prelude.Text ->
  GetFieldLevelEncryptionProfile
newGetFieldLevelEncryptionProfile :: Text -> GetFieldLevelEncryptionProfile
newGetFieldLevelEncryptionProfile Text
pId_ =
  GetFieldLevelEncryptionProfile' {$sel:id:GetFieldLevelEncryptionProfile' :: Text
id = Text
pId_}

-- | Get the ID for the field-level encryption profile information.
getFieldLevelEncryptionProfile_id :: Lens.Lens' GetFieldLevelEncryptionProfile Prelude.Text
getFieldLevelEncryptionProfile_id :: Lens' GetFieldLevelEncryptionProfile Text
getFieldLevelEncryptionProfile_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetFieldLevelEncryptionProfile' {Text
id :: Text
$sel:id:GetFieldLevelEncryptionProfile' :: GetFieldLevelEncryptionProfile -> Text
id} -> Text
id) (\s :: GetFieldLevelEncryptionProfile
s@GetFieldLevelEncryptionProfile' {} Text
a -> GetFieldLevelEncryptionProfile
s {$sel:id:GetFieldLevelEncryptionProfile' :: Text
id = Text
a} :: GetFieldLevelEncryptionProfile)

instance
  Core.AWSRequest
    GetFieldLevelEncryptionProfile
  where
  type
    AWSResponse GetFieldLevelEncryptionProfile =
      GetFieldLevelEncryptionProfileResponse
  request :: (Service -> Service)
-> GetFieldLevelEncryptionProfile
-> Request GetFieldLevelEncryptionProfile
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetFieldLevelEncryptionProfile
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse GetFieldLevelEncryptionProfile)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe Text
-> Maybe FieldLevelEncryptionProfile
-> Int
-> GetFieldLevelEncryptionProfileResponse
GetFieldLevelEncryptionProfileResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (ResponseHeaders
h forall a.
FromText a =>
ResponseHeaders -> HeaderName -> Either String (Maybe a)
Data..#? HeaderName
"ETag")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall a. FromXML a => [Node] -> Either String a
Data.parseXML [Node]
x)
            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
    GetFieldLevelEncryptionProfile
  where
  hashWithSalt :: Int -> GetFieldLevelEncryptionProfile -> Int
hashWithSalt
    Int
_salt
    GetFieldLevelEncryptionProfile' {Text
id :: Text
$sel:id:GetFieldLevelEncryptionProfile' :: GetFieldLevelEncryptionProfile -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
id

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

instance
  Data.ToHeaders
    GetFieldLevelEncryptionProfile
  where
  toHeaders :: GetFieldLevelEncryptionProfile -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath GetFieldLevelEncryptionProfile where
  toPath :: GetFieldLevelEncryptionProfile -> ByteString
toPath GetFieldLevelEncryptionProfile' {Text
id :: Text
$sel:id:GetFieldLevelEncryptionProfile' :: GetFieldLevelEncryptionProfile -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/2020-05-31/field-level-encryption-profile/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
id
      ]

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

-- | /See:/ 'newGetFieldLevelEncryptionProfileResponse' smart constructor.
data GetFieldLevelEncryptionProfileResponse = GetFieldLevelEncryptionProfileResponse'
  { -- | The current version of the field level encryption profile. For example:
    -- @E2QWRUHAPOMQZL@.
    GetFieldLevelEncryptionProfileResponse -> Maybe Text
eTag :: Prelude.Maybe Prelude.Text,
    -- | Return the field-level encryption profile information.
    GetFieldLevelEncryptionProfileResponse
-> Maybe FieldLevelEncryptionProfile
fieldLevelEncryptionProfile :: Prelude.Maybe FieldLevelEncryptionProfile,
    -- | The response's http status code.
    GetFieldLevelEncryptionProfileResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetFieldLevelEncryptionProfileResponse
-> GetFieldLevelEncryptionProfileResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetFieldLevelEncryptionProfileResponse
-> GetFieldLevelEncryptionProfileResponse -> Bool
$c/= :: GetFieldLevelEncryptionProfileResponse
-> GetFieldLevelEncryptionProfileResponse -> Bool
== :: GetFieldLevelEncryptionProfileResponse
-> GetFieldLevelEncryptionProfileResponse -> Bool
$c== :: GetFieldLevelEncryptionProfileResponse
-> GetFieldLevelEncryptionProfileResponse -> Bool
Prelude.Eq, ReadPrec [GetFieldLevelEncryptionProfileResponse]
ReadPrec GetFieldLevelEncryptionProfileResponse
Int -> ReadS GetFieldLevelEncryptionProfileResponse
ReadS [GetFieldLevelEncryptionProfileResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetFieldLevelEncryptionProfileResponse]
$creadListPrec :: ReadPrec [GetFieldLevelEncryptionProfileResponse]
readPrec :: ReadPrec GetFieldLevelEncryptionProfileResponse
$creadPrec :: ReadPrec GetFieldLevelEncryptionProfileResponse
readList :: ReadS [GetFieldLevelEncryptionProfileResponse]
$creadList :: ReadS [GetFieldLevelEncryptionProfileResponse]
readsPrec :: Int -> ReadS GetFieldLevelEncryptionProfileResponse
$creadsPrec :: Int -> ReadS GetFieldLevelEncryptionProfileResponse
Prelude.Read, Int -> GetFieldLevelEncryptionProfileResponse -> ShowS
[GetFieldLevelEncryptionProfileResponse] -> ShowS
GetFieldLevelEncryptionProfileResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetFieldLevelEncryptionProfileResponse] -> ShowS
$cshowList :: [GetFieldLevelEncryptionProfileResponse] -> ShowS
show :: GetFieldLevelEncryptionProfileResponse -> String
$cshow :: GetFieldLevelEncryptionProfileResponse -> String
showsPrec :: Int -> GetFieldLevelEncryptionProfileResponse -> ShowS
$cshowsPrec :: Int -> GetFieldLevelEncryptionProfileResponse -> ShowS
Prelude.Show, forall x.
Rep GetFieldLevelEncryptionProfileResponse x
-> GetFieldLevelEncryptionProfileResponse
forall x.
GetFieldLevelEncryptionProfileResponse
-> Rep GetFieldLevelEncryptionProfileResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetFieldLevelEncryptionProfileResponse x
-> GetFieldLevelEncryptionProfileResponse
$cfrom :: forall x.
GetFieldLevelEncryptionProfileResponse
-> Rep GetFieldLevelEncryptionProfileResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetFieldLevelEncryptionProfileResponse' 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:
--
-- 'eTag', 'getFieldLevelEncryptionProfileResponse_eTag' - The current version of the field level encryption profile. For example:
-- @E2QWRUHAPOMQZL@.
--
-- 'fieldLevelEncryptionProfile', 'getFieldLevelEncryptionProfileResponse_fieldLevelEncryptionProfile' - Return the field-level encryption profile information.
--
-- 'httpStatus', 'getFieldLevelEncryptionProfileResponse_httpStatus' - The response's http status code.
newGetFieldLevelEncryptionProfileResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetFieldLevelEncryptionProfileResponse
newGetFieldLevelEncryptionProfileResponse :: Int -> GetFieldLevelEncryptionProfileResponse
newGetFieldLevelEncryptionProfileResponse
  Int
pHttpStatus_ =
    GetFieldLevelEncryptionProfileResponse'
      { $sel:eTag:GetFieldLevelEncryptionProfileResponse' :: Maybe Text
eTag =
          forall a. Maybe a
Prelude.Nothing,
        $sel:fieldLevelEncryptionProfile:GetFieldLevelEncryptionProfileResponse' :: Maybe FieldLevelEncryptionProfile
fieldLevelEncryptionProfile =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetFieldLevelEncryptionProfileResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | The current version of the field level encryption profile. For example:
-- @E2QWRUHAPOMQZL@.
getFieldLevelEncryptionProfileResponse_eTag :: Lens.Lens' GetFieldLevelEncryptionProfileResponse (Prelude.Maybe Prelude.Text)
getFieldLevelEncryptionProfileResponse_eTag :: Lens' GetFieldLevelEncryptionProfileResponse (Maybe Text)
getFieldLevelEncryptionProfileResponse_eTag = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetFieldLevelEncryptionProfileResponse' {Maybe Text
eTag :: Maybe Text
$sel:eTag:GetFieldLevelEncryptionProfileResponse' :: GetFieldLevelEncryptionProfileResponse -> Maybe Text
eTag} -> Maybe Text
eTag) (\s :: GetFieldLevelEncryptionProfileResponse
s@GetFieldLevelEncryptionProfileResponse' {} Maybe Text
a -> GetFieldLevelEncryptionProfileResponse
s {$sel:eTag:GetFieldLevelEncryptionProfileResponse' :: Maybe Text
eTag = Maybe Text
a} :: GetFieldLevelEncryptionProfileResponse)

-- | Return the field-level encryption profile information.
getFieldLevelEncryptionProfileResponse_fieldLevelEncryptionProfile :: Lens.Lens' GetFieldLevelEncryptionProfileResponse (Prelude.Maybe FieldLevelEncryptionProfile)
getFieldLevelEncryptionProfileResponse_fieldLevelEncryptionProfile :: Lens'
  GetFieldLevelEncryptionProfileResponse
  (Maybe FieldLevelEncryptionProfile)
getFieldLevelEncryptionProfileResponse_fieldLevelEncryptionProfile = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetFieldLevelEncryptionProfileResponse' {Maybe FieldLevelEncryptionProfile
fieldLevelEncryptionProfile :: Maybe FieldLevelEncryptionProfile
$sel:fieldLevelEncryptionProfile:GetFieldLevelEncryptionProfileResponse' :: GetFieldLevelEncryptionProfileResponse
-> Maybe FieldLevelEncryptionProfile
fieldLevelEncryptionProfile} -> Maybe FieldLevelEncryptionProfile
fieldLevelEncryptionProfile) (\s :: GetFieldLevelEncryptionProfileResponse
s@GetFieldLevelEncryptionProfileResponse' {} Maybe FieldLevelEncryptionProfile
a -> GetFieldLevelEncryptionProfileResponse
s {$sel:fieldLevelEncryptionProfile:GetFieldLevelEncryptionProfileResponse' :: Maybe FieldLevelEncryptionProfile
fieldLevelEncryptionProfile = Maybe FieldLevelEncryptionProfile
a} :: GetFieldLevelEncryptionProfileResponse)

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

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