{-# 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.ListFieldLevelEncryptionProfiles
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Request a list of field-level encryption profiles that have been created
-- in CloudFront for this account.
module Amazonka.CloudFront.ListFieldLevelEncryptionProfiles
  ( -- * Creating a Request
    ListFieldLevelEncryptionProfiles (..),
    newListFieldLevelEncryptionProfiles,

    -- * Request Lenses
    listFieldLevelEncryptionProfiles_marker,
    listFieldLevelEncryptionProfiles_maxItems,

    -- * Destructuring the Response
    ListFieldLevelEncryptionProfilesResponse (..),
    newListFieldLevelEncryptionProfilesResponse,

    -- * Response Lenses
    listFieldLevelEncryptionProfilesResponse_fieldLevelEncryptionProfileList,
    listFieldLevelEncryptionProfilesResponse_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:/ 'newListFieldLevelEncryptionProfiles' smart constructor.
data ListFieldLevelEncryptionProfiles = ListFieldLevelEncryptionProfiles'
  { -- | Use this when paginating results to indicate where to begin in your list
    -- of profiles. The results include profiles in the list that occur after
    -- the marker. To get the next page of results, set the @Marker@ to the
    -- value of the @NextMarker@ from the current page\'s response (which is
    -- also the ID of the last profile on that page).
    ListFieldLevelEncryptionProfiles -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of field-level encryption profiles you want in the
    -- response body.
    ListFieldLevelEncryptionProfiles -> Maybe Text
maxItems :: Prelude.Maybe Prelude.Text
  }
  deriving (ListFieldLevelEncryptionProfiles
-> ListFieldLevelEncryptionProfiles -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListFieldLevelEncryptionProfiles
-> ListFieldLevelEncryptionProfiles -> Bool
$c/= :: ListFieldLevelEncryptionProfiles
-> ListFieldLevelEncryptionProfiles -> Bool
== :: ListFieldLevelEncryptionProfiles
-> ListFieldLevelEncryptionProfiles -> Bool
$c== :: ListFieldLevelEncryptionProfiles
-> ListFieldLevelEncryptionProfiles -> Bool
Prelude.Eq, ReadPrec [ListFieldLevelEncryptionProfiles]
ReadPrec ListFieldLevelEncryptionProfiles
Int -> ReadS ListFieldLevelEncryptionProfiles
ReadS [ListFieldLevelEncryptionProfiles]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListFieldLevelEncryptionProfiles]
$creadListPrec :: ReadPrec [ListFieldLevelEncryptionProfiles]
readPrec :: ReadPrec ListFieldLevelEncryptionProfiles
$creadPrec :: ReadPrec ListFieldLevelEncryptionProfiles
readList :: ReadS [ListFieldLevelEncryptionProfiles]
$creadList :: ReadS [ListFieldLevelEncryptionProfiles]
readsPrec :: Int -> ReadS ListFieldLevelEncryptionProfiles
$creadsPrec :: Int -> ReadS ListFieldLevelEncryptionProfiles
Prelude.Read, Int -> ListFieldLevelEncryptionProfiles -> ShowS
[ListFieldLevelEncryptionProfiles] -> ShowS
ListFieldLevelEncryptionProfiles -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListFieldLevelEncryptionProfiles] -> ShowS
$cshowList :: [ListFieldLevelEncryptionProfiles] -> ShowS
show :: ListFieldLevelEncryptionProfiles -> String
$cshow :: ListFieldLevelEncryptionProfiles -> String
showsPrec :: Int -> ListFieldLevelEncryptionProfiles -> ShowS
$cshowsPrec :: Int -> ListFieldLevelEncryptionProfiles -> ShowS
Prelude.Show, forall x.
Rep ListFieldLevelEncryptionProfiles x
-> ListFieldLevelEncryptionProfiles
forall x.
ListFieldLevelEncryptionProfiles
-> Rep ListFieldLevelEncryptionProfiles x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListFieldLevelEncryptionProfiles x
-> ListFieldLevelEncryptionProfiles
$cfrom :: forall x.
ListFieldLevelEncryptionProfiles
-> Rep ListFieldLevelEncryptionProfiles x
Prelude.Generic)

-- |
-- Create a value of 'ListFieldLevelEncryptionProfiles' 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:
--
-- 'marker', 'listFieldLevelEncryptionProfiles_marker' - Use this when paginating results to indicate where to begin in your list
-- of profiles. The results include profiles in the list that occur after
-- the marker. To get the next page of results, set the @Marker@ to the
-- value of the @NextMarker@ from the current page\'s response (which is
-- also the ID of the last profile on that page).
--
-- 'maxItems', 'listFieldLevelEncryptionProfiles_maxItems' - The maximum number of field-level encryption profiles you want in the
-- response body.
newListFieldLevelEncryptionProfiles ::
  ListFieldLevelEncryptionProfiles
newListFieldLevelEncryptionProfiles :: ListFieldLevelEncryptionProfiles
newListFieldLevelEncryptionProfiles =
  ListFieldLevelEncryptionProfiles'
    { $sel:marker:ListFieldLevelEncryptionProfiles' :: Maybe Text
marker =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxItems:ListFieldLevelEncryptionProfiles' :: Maybe Text
maxItems = forall a. Maybe a
Prelude.Nothing
    }

-- | Use this when paginating results to indicate where to begin in your list
-- of profiles. The results include profiles in the list that occur after
-- the marker. To get the next page of results, set the @Marker@ to the
-- value of the @NextMarker@ from the current page\'s response (which is
-- also the ID of the last profile on that page).
listFieldLevelEncryptionProfiles_marker :: Lens.Lens' ListFieldLevelEncryptionProfiles (Prelude.Maybe Prelude.Text)
listFieldLevelEncryptionProfiles_marker :: Lens' ListFieldLevelEncryptionProfiles (Maybe Text)
listFieldLevelEncryptionProfiles_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFieldLevelEncryptionProfiles' {Maybe Text
marker :: Maybe Text
$sel:marker:ListFieldLevelEncryptionProfiles' :: ListFieldLevelEncryptionProfiles -> Maybe Text
marker} -> Maybe Text
marker) (\s :: ListFieldLevelEncryptionProfiles
s@ListFieldLevelEncryptionProfiles' {} Maybe Text
a -> ListFieldLevelEncryptionProfiles
s {$sel:marker:ListFieldLevelEncryptionProfiles' :: Maybe Text
marker = Maybe Text
a} :: ListFieldLevelEncryptionProfiles)

-- | The maximum number of field-level encryption profiles you want in the
-- response body.
listFieldLevelEncryptionProfiles_maxItems :: Lens.Lens' ListFieldLevelEncryptionProfiles (Prelude.Maybe Prelude.Text)
listFieldLevelEncryptionProfiles_maxItems :: Lens' ListFieldLevelEncryptionProfiles (Maybe Text)
listFieldLevelEncryptionProfiles_maxItems = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFieldLevelEncryptionProfiles' {Maybe Text
maxItems :: Maybe Text
$sel:maxItems:ListFieldLevelEncryptionProfiles' :: ListFieldLevelEncryptionProfiles -> Maybe Text
maxItems} -> Maybe Text
maxItems) (\s :: ListFieldLevelEncryptionProfiles
s@ListFieldLevelEncryptionProfiles' {} Maybe Text
a -> ListFieldLevelEncryptionProfiles
s {$sel:maxItems:ListFieldLevelEncryptionProfiles' :: Maybe Text
maxItems = Maybe Text
a} :: ListFieldLevelEncryptionProfiles)

instance
  Core.AWSRequest
    ListFieldLevelEncryptionProfiles
  where
  type
    AWSResponse ListFieldLevelEncryptionProfiles =
      ListFieldLevelEncryptionProfilesResponse
  request :: (Service -> Service)
-> ListFieldLevelEncryptionProfiles
-> Request ListFieldLevelEncryptionProfiles
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 ListFieldLevelEncryptionProfiles
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse ListFieldLevelEncryptionProfiles)))
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 FieldLevelEncryptionProfileList
-> Int -> ListFieldLevelEncryptionProfilesResponse
ListFieldLevelEncryptionProfilesResponse'
            forall (f :: * -> *) a b. Functor 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
    ListFieldLevelEncryptionProfiles
  where
  hashWithSalt :: Int -> ListFieldLevelEncryptionProfiles -> Int
hashWithSalt
    Int
_salt
    ListFieldLevelEncryptionProfiles' {Maybe Text
maxItems :: Maybe Text
marker :: Maybe Text
$sel:maxItems:ListFieldLevelEncryptionProfiles' :: ListFieldLevelEncryptionProfiles -> Maybe Text
$sel:marker:ListFieldLevelEncryptionProfiles' :: ListFieldLevelEncryptionProfiles -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
maxItems

instance
  Prelude.NFData
    ListFieldLevelEncryptionProfiles
  where
  rnf :: ListFieldLevelEncryptionProfiles -> ()
rnf ListFieldLevelEncryptionProfiles' {Maybe Text
maxItems :: Maybe Text
marker :: Maybe Text
$sel:maxItems:ListFieldLevelEncryptionProfiles' :: ListFieldLevelEncryptionProfiles -> Maybe Text
$sel:marker:ListFieldLevelEncryptionProfiles' :: ListFieldLevelEncryptionProfiles -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
maxItems

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

instance Data.ToPath ListFieldLevelEncryptionProfiles where
  toPath :: ListFieldLevelEncryptionProfiles -> ByteString
toPath =
    forall a b. a -> b -> a
Prelude.const
      ByteString
"/2020-05-31/field-level-encryption-profile"

instance
  Data.ToQuery
    ListFieldLevelEncryptionProfiles
  where
  toQuery :: ListFieldLevelEncryptionProfiles -> QueryString
toQuery ListFieldLevelEncryptionProfiles' {Maybe Text
maxItems :: Maybe Text
marker :: Maybe Text
$sel:maxItems:ListFieldLevelEncryptionProfiles' :: ListFieldLevelEncryptionProfiles -> Maybe Text
$sel:marker:ListFieldLevelEncryptionProfiles' :: ListFieldLevelEncryptionProfiles -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"MaxItems" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
maxItems
      ]

-- | /See:/ 'newListFieldLevelEncryptionProfilesResponse' smart constructor.
data ListFieldLevelEncryptionProfilesResponse = ListFieldLevelEncryptionProfilesResponse'
  { -- | Returns a list of the field-level encryption profiles that have been
    -- created in CloudFront for this account.
    ListFieldLevelEncryptionProfilesResponse
-> Maybe FieldLevelEncryptionProfileList
fieldLevelEncryptionProfileList :: Prelude.Maybe FieldLevelEncryptionProfileList,
    -- | The response's http status code.
    ListFieldLevelEncryptionProfilesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListFieldLevelEncryptionProfilesResponse
-> ListFieldLevelEncryptionProfilesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListFieldLevelEncryptionProfilesResponse
-> ListFieldLevelEncryptionProfilesResponse -> Bool
$c/= :: ListFieldLevelEncryptionProfilesResponse
-> ListFieldLevelEncryptionProfilesResponse -> Bool
== :: ListFieldLevelEncryptionProfilesResponse
-> ListFieldLevelEncryptionProfilesResponse -> Bool
$c== :: ListFieldLevelEncryptionProfilesResponse
-> ListFieldLevelEncryptionProfilesResponse -> Bool
Prelude.Eq, ReadPrec [ListFieldLevelEncryptionProfilesResponse]
ReadPrec ListFieldLevelEncryptionProfilesResponse
Int -> ReadS ListFieldLevelEncryptionProfilesResponse
ReadS [ListFieldLevelEncryptionProfilesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListFieldLevelEncryptionProfilesResponse]
$creadListPrec :: ReadPrec [ListFieldLevelEncryptionProfilesResponse]
readPrec :: ReadPrec ListFieldLevelEncryptionProfilesResponse
$creadPrec :: ReadPrec ListFieldLevelEncryptionProfilesResponse
readList :: ReadS [ListFieldLevelEncryptionProfilesResponse]
$creadList :: ReadS [ListFieldLevelEncryptionProfilesResponse]
readsPrec :: Int -> ReadS ListFieldLevelEncryptionProfilesResponse
$creadsPrec :: Int -> ReadS ListFieldLevelEncryptionProfilesResponse
Prelude.Read, Int -> ListFieldLevelEncryptionProfilesResponse -> ShowS
[ListFieldLevelEncryptionProfilesResponse] -> ShowS
ListFieldLevelEncryptionProfilesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListFieldLevelEncryptionProfilesResponse] -> ShowS
$cshowList :: [ListFieldLevelEncryptionProfilesResponse] -> ShowS
show :: ListFieldLevelEncryptionProfilesResponse -> String
$cshow :: ListFieldLevelEncryptionProfilesResponse -> String
showsPrec :: Int -> ListFieldLevelEncryptionProfilesResponse -> ShowS
$cshowsPrec :: Int -> ListFieldLevelEncryptionProfilesResponse -> ShowS
Prelude.Show, forall x.
Rep ListFieldLevelEncryptionProfilesResponse x
-> ListFieldLevelEncryptionProfilesResponse
forall x.
ListFieldLevelEncryptionProfilesResponse
-> Rep ListFieldLevelEncryptionProfilesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListFieldLevelEncryptionProfilesResponse x
-> ListFieldLevelEncryptionProfilesResponse
$cfrom :: forall x.
ListFieldLevelEncryptionProfilesResponse
-> Rep ListFieldLevelEncryptionProfilesResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListFieldLevelEncryptionProfilesResponse' 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:
--
-- 'fieldLevelEncryptionProfileList', 'listFieldLevelEncryptionProfilesResponse_fieldLevelEncryptionProfileList' - Returns a list of the field-level encryption profiles that have been
-- created in CloudFront for this account.
--
-- 'httpStatus', 'listFieldLevelEncryptionProfilesResponse_httpStatus' - The response's http status code.
newListFieldLevelEncryptionProfilesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListFieldLevelEncryptionProfilesResponse
newListFieldLevelEncryptionProfilesResponse :: Int -> ListFieldLevelEncryptionProfilesResponse
newListFieldLevelEncryptionProfilesResponse
  Int
pHttpStatus_ =
    ListFieldLevelEncryptionProfilesResponse'
      { $sel:fieldLevelEncryptionProfileList:ListFieldLevelEncryptionProfilesResponse' :: Maybe FieldLevelEncryptionProfileList
fieldLevelEncryptionProfileList =
          forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:ListFieldLevelEncryptionProfilesResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Returns a list of the field-level encryption profiles that have been
-- created in CloudFront for this account.
listFieldLevelEncryptionProfilesResponse_fieldLevelEncryptionProfileList :: Lens.Lens' ListFieldLevelEncryptionProfilesResponse (Prelude.Maybe FieldLevelEncryptionProfileList)
listFieldLevelEncryptionProfilesResponse_fieldLevelEncryptionProfileList :: Lens'
  ListFieldLevelEncryptionProfilesResponse
  (Maybe FieldLevelEncryptionProfileList)
listFieldLevelEncryptionProfilesResponse_fieldLevelEncryptionProfileList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListFieldLevelEncryptionProfilesResponse' {Maybe FieldLevelEncryptionProfileList
fieldLevelEncryptionProfileList :: Maybe FieldLevelEncryptionProfileList
$sel:fieldLevelEncryptionProfileList:ListFieldLevelEncryptionProfilesResponse' :: ListFieldLevelEncryptionProfilesResponse
-> Maybe FieldLevelEncryptionProfileList
fieldLevelEncryptionProfileList} -> Maybe FieldLevelEncryptionProfileList
fieldLevelEncryptionProfileList) (\s :: ListFieldLevelEncryptionProfilesResponse
s@ListFieldLevelEncryptionProfilesResponse' {} Maybe FieldLevelEncryptionProfileList
a -> ListFieldLevelEncryptionProfilesResponse
s {$sel:fieldLevelEncryptionProfileList:ListFieldLevelEncryptionProfilesResponse' :: Maybe FieldLevelEncryptionProfileList
fieldLevelEncryptionProfileList = Maybe FieldLevelEncryptionProfileList
a} :: ListFieldLevelEncryptionProfilesResponse)

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

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