{-# 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.MacieV2.DescribeBuckets
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves (queries) statistical data and other information about one or
-- more S3 buckets that Amazon Macie monitors and analyzes for an account.
--
-- This operation returns paginated results.
module Amazonka.MacieV2.DescribeBuckets
  ( -- * Creating a Request
    DescribeBuckets (..),
    newDescribeBuckets,

    -- * Request Lenses
    describeBuckets_criteria,
    describeBuckets_maxResults,
    describeBuckets_nextToken,
    describeBuckets_sortCriteria,

    -- * Destructuring the Response
    DescribeBucketsResponse (..),
    newDescribeBucketsResponse,

    -- * Response Lenses
    describeBucketsResponse_buckets,
    describeBucketsResponse_nextToken,
    describeBucketsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDescribeBuckets' smart constructor.
data DescribeBuckets = DescribeBuckets'
  { -- | The criteria to use to filter the query results.
    DescribeBuckets
-> Maybe (HashMap Text BucketCriteriaAdditionalProperties)
criteria :: Prelude.Maybe (Prelude.HashMap Prelude.Text BucketCriteriaAdditionalProperties),
    -- | The maximum number of items to include in each page of the response. The
    -- default value is 50.
    DescribeBuckets -> Maybe Int
maxResults :: Prelude.Maybe Prelude.Int,
    -- | The nextToken string that specifies which page of results to return in a
    -- paginated response.
    DescribeBuckets -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The criteria to use to sort the query results.
    DescribeBuckets -> Maybe BucketSortCriteria
sortCriteria :: Prelude.Maybe BucketSortCriteria
  }
  deriving (DescribeBuckets -> DescribeBuckets -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeBuckets -> DescribeBuckets -> Bool
$c/= :: DescribeBuckets -> DescribeBuckets -> Bool
== :: DescribeBuckets -> DescribeBuckets -> Bool
$c== :: DescribeBuckets -> DescribeBuckets -> Bool
Prelude.Eq, ReadPrec [DescribeBuckets]
ReadPrec DescribeBuckets
Int -> ReadS DescribeBuckets
ReadS [DescribeBuckets]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeBuckets]
$creadListPrec :: ReadPrec [DescribeBuckets]
readPrec :: ReadPrec DescribeBuckets
$creadPrec :: ReadPrec DescribeBuckets
readList :: ReadS [DescribeBuckets]
$creadList :: ReadS [DescribeBuckets]
readsPrec :: Int -> ReadS DescribeBuckets
$creadsPrec :: Int -> ReadS DescribeBuckets
Prelude.Read, Int -> DescribeBuckets -> ShowS
[DescribeBuckets] -> ShowS
DescribeBuckets -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeBuckets] -> ShowS
$cshowList :: [DescribeBuckets] -> ShowS
show :: DescribeBuckets -> String
$cshow :: DescribeBuckets -> String
showsPrec :: Int -> DescribeBuckets -> ShowS
$cshowsPrec :: Int -> DescribeBuckets -> ShowS
Prelude.Show, forall x. Rep DescribeBuckets x -> DescribeBuckets
forall x. DescribeBuckets -> Rep DescribeBuckets x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeBuckets x -> DescribeBuckets
$cfrom :: forall x. DescribeBuckets -> Rep DescribeBuckets x
Prelude.Generic)

-- |
-- Create a value of 'DescribeBuckets' 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:
--
-- 'criteria', 'describeBuckets_criteria' - The criteria to use to filter the query results.
--
-- 'maxResults', 'describeBuckets_maxResults' - The maximum number of items to include in each page of the response. The
-- default value is 50.
--
-- 'nextToken', 'describeBuckets_nextToken' - The nextToken string that specifies which page of results to return in a
-- paginated response.
--
-- 'sortCriteria', 'describeBuckets_sortCriteria' - The criteria to use to sort the query results.
newDescribeBuckets ::
  DescribeBuckets
newDescribeBuckets :: DescribeBuckets
newDescribeBuckets =
  DescribeBuckets'
    { $sel:criteria:DescribeBuckets' :: Maybe (HashMap Text BucketCriteriaAdditionalProperties)
criteria = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DescribeBuckets' :: Maybe Int
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeBuckets' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:sortCriteria:DescribeBuckets' :: Maybe BucketSortCriteria
sortCriteria = forall a. Maybe a
Prelude.Nothing
    }

-- | The criteria to use to filter the query results.
describeBuckets_criteria :: Lens.Lens' DescribeBuckets (Prelude.Maybe (Prelude.HashMap Prelude.Text BucketCriteriaAdditionalProperties))
describeBuckets_criteria :: Lens'
  DescribeBuckets
  (Maybe (HashMap Text BucketCriteriaAdditionalProperties))
describeBuckets_criteria = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBuckets' {Maybe (HashMap Text BucketCriteriaAdditionalProperties)
criteria :: Maybe (HashMap Text BucketCriteriaAdditionalProperties)
$sel:criteria:DescribeBuckets' :: DescribeBuckets
-> Maybe (HashMap Text BucketCriteriaAdditionalProperties)
criteria} -> Maybe (HashMap Text BucketCriteriaAdditionalProperties)
criteria) (\s :: DescribeBuckets
s@DescribeBuckets' {} Maybe (HashMap Text BucketCriteriaAdditionalProperties)
a -> DescribeBuckets
s {$sel:criteria:DescribeBuckets' :: Maybe (HashMap Text BucketCriteriaAdditionalProperties)
criteria = Maybe (HashMap Text BucketCriteriaAdditionalProperties)
a} :: DescribeBuckets) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The maximum number of items to include in each page of the response. The
-- default value is 50.
describeBuckets_maxResults :: Lens.Lens' DescribeBuckets (Prelude.Maybe Prelude.Int)
describeBuckets_maxResults :: Lens' DescribeBuckets (Maybe Int)
describeBuckets_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBuckets' {Maybe Int
maxResults :: Maybe Int
$sel:maxResults:DescribeBuckets' :: DescribeBuckets -> Maybe Int
maxResults} -> Maybe Int
maxResults) (\s :: DescribeBuckets
s@DescribeBuckets' {} Maybe Int
a -> DescribeBuckets
s {$sel:maxResults:DescribeBuckets' :: Maybe Int
maxResults = Maybe Int
a} :: DescribeBuckets)

-- | The nextToken string that specifies which page of results to return in a
-- paginated response.
describeBuckets_nextToken :: Lens.Lens' DescribeBuckets (Prelude.Maybe Prelude.Text)
describeBuckets_nextToken :: Lens' DescribeBuckets (Maybe Text)
describeBuckets_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBuckets' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeBuckets' :: DescribeBuckets -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeBuckets
s@DescribeBuckets' {} Maybe Text
a -> DescribeBuckets
s {$sel:nextToken:DescribeBuckets' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeBuckets)

-- | The criteria to use to sort the query results.
describeBuckets_sortCriteria :: Lens.Lens' DescribeBuckets (Prelude.Maybe BucketSortCriteria)
describeBuckets_sortCriteria :: Lens' DescribeBuckets (Maybe BucketSortCriteria)
describeBuckets_sortCriteria = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBuckets' {Maybe BucketSortCriteria
sortCriteria :: Maybe BucketSortCriteria
$sel:sortCriteria:DescribeBuckets' :: DescribeBuckets -> Maybe BucketSortCriteria
sortCriteria} -> Maybe BucketSortCriteria
sortCriteria) (\s :: DescribeBuckets
s@DescribeBuckets' {} Maybe BucketSortCriteria
a -> DescribeBuckets
s {$sel:sortCriteria:DescribeBuckets' :: Maybe BucketSortCriteria
sortCriteria = Maybe BucketSortCriteria
a} :: DescribeBuckets)

instance Core.AWSPager DescribeBuckets where
  page :: DescribeBuckets
-> AWSResponse DescribeBuckets -> Maybe DescribeBuckets
page DescribeBuckets
rq AWSResponse DescribeBuckets
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeBuckets
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeBucketsResponse (Maybe Text)
describeBucketsResponse_nextToken
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeBuckets
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeBucketsResponse (Maybe [BucketMetadata])
describeBucketsResponse_buckets
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeBuckets
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeBuckets (Maybe Text)
describeBuckets_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeBuckets
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeBucketsResponse (Maybe Text)
describeBucketsResponse_nextToken
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeBuckets where
  type
    AWSResponse DescribeBuckets =
      DescribeBucketsResponse
  request :: (Service -> Service) -> DescribeBuckets -> Request DescribeBuckets
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 DescribeBuckets
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DescribeBuckets)))
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 [BucketMetadata]
-> Maybe Text -> Int -> DescribeBucketsResponse
DescribeBucketsResponse'
            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
"buckets" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"nextToken")
            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 DescribeBuckets where
  hashWithSalt :: Int -> DescribeBuckets -> Int
hashWithSalt Int
_salt DescribeBuckets' {Maybe Int
Maybe Text
Maybe (HashMap Text BucketCriteriaAdditionalProperties)
Maybe BucketSortCriteria
sortCriteria :: Maybe BucketSortCriteria
nextToken :: Maybe Text
maxResults :: Maybe Int
criteria :: Maybe (HashMap Text BucketCriteriaAdditionalProperties)
$sel:sortCriteria:DescribeBuckets' :: DescribeBuckets -> Maybe BucketSortCriteria
$sel:nextToken:DescribeBuckets' :: DescribeBuckets -> Maybe Text
$sel:maxResults:DescribeBuckets' :: DescribeBuckets -> Maybe Int
$sel:criteria:DescribeBuckets' :: DescribeBuckets
-> Maybe (HashMap Text BucketCriteriaAdditionalProperties)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text BucketCriteriaAdditionalProperties)
criteria
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BucketSortCriteria
sortCriteria

instance Prelude.NFData DescribeBuckets where
  rnf :: DescribeBuckets -> ()
rnf DescribeBuckets' {Maybe Int
Maybe Text
Maybe (HashMap Text BucketCriteriaAdditionalProperties)
Maybe BucketSortCriteria
sortCriteria :: Maybe BucketSortCriteria
nextToken :: Maybe Text
maxResults :: Maybe Int
criteria :: Maybe (HashMap Text BucketCriteriaAdditionalProperties)
$sel:sortCriteria:DescribeBuckets' :: DescribeBuckets -> Maybe BucketSortCriteria
$sel:nextToken:DescribeBuckets' :: DescribeBuckets -> Maybe Text
$sel:maxResults:DescribeBuckets' :: DescribeBuckets -> Maybe Int
$sel:criteria:DescribeBuckets' :: DescribeBuckets
-> Maybe (HashMap Text BucketCriteriaAdditionalProperties)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text BucketCriteriaAdditionalProperties)
criteria
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BucketSortCriteria
sortCriteria

instance Data.ToHeaders DescribeBuckets where
  toHeaders :: DescribeBuckets -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DescribeBuckets where
  toJSON :: DescribeBuckets -> Value
toJSON DescribeBuckets' {Maybe Int
Maybe Text
Maybe (HashMap Text BucketCriteriaAdditionalProperties)
Maybe BucketSortCriteria
sortCriteria :: Maybe BucketSortCriteria
nextToken :: Maybe Text
maxResults :: Maybe Int
criteria :: Maybe (HashMap Text BucketCriteriaAdditionalProperties)
$sel:sortCriteria:DescribeBuckets' :: DescribeBuckets -> Maybe BucketSortCriteria
$sel:nextToken:DescribeBuckets' :: DescribeBuckets -> Maybe Text
$sel:maxResults:DescribeBuckets' :: DescribeBuckets -> Maybe Int
$sel:criteria:DescribeBuckets' :: DescribeBuckets
-> Maybe (HashMap Text BucketCriteriaAdditionalProperties)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"criteria" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text BucketCriteriaAdditionalProperties)
criteria,
            (Key
"maxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
maxResults,
            (Key
"nextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            (Key
"sortCriteria" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BucketSortCriteria
sortCriteria
          ]
      )

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

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

-- | /See:/ 'newDescribeBucketsResponse' smart constructor.
data DescribeBucketsResponse = DescribeBucketsResponse'
  { -- | An array of objects, one for each bucket that matches the filter
    -- criteria specified in the request.
    DescribeBucketsResponse -> Maybe [BucketMetadata]
buckets :: Prelude.Maybe [BucketMetadata],
    -- | The string to use in a subsequent request to get the next page of
    -- results in a paginated response. This value is null if there are no
    -- additional pages.
    DescribeBucketsResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DescribeBucketsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeBucketsResponse -> DescribeBucketsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeBucketsResponse -> DescribeBucketsResponse -> Bool
$c/= :: DescribeBucketsResponse -> DescribeBucketsResponse -> Bool
== :: DescribeBucketsResponse -> DescribeBucketsResponse -> Bool
$c== :: DescribeBucketsResponse -> DescribeBucketsResponse -> Bool
Prelude.Eq, ReadPrec [DescribeBucketsResponse]
ReadPrec DescribeBucketsResponse
Int -> ReadS DescribeBucketsResponse
ReadS [DescribeBucketsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeBucketsResponse]
$creadListPrec :: ReadPrec [DescribeBucketsResponse]
readPrec :: ReadPrec DescribeBucketsResponse
$creadPrec :: ReadPrec DescribeBucketsResponse
readList :: ReadS [DescribeBucketsResponse]
$creadList :: ReadS [DescribeBucketsResponse]
readsPrec :: Int -> ReadS DescribeBucketsResponse
$creadsPrec :: Int -> ReadS DescribeBucketsResponse
Prelude.Read, Int -> DescribeBucketsResponse -> ShowS
[DescribeBucketsResponse] -> ShowS
DescribeBucketsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeBucketsResponse] -> ShowS
$cshowList :: [DescribeBucketsResponse] -> ShowS
show :: DescribeBucketsResponse -> String
$cshow :: DescribeBucketsResponse -> String
showsPrec :: Int -> DescribeBucketsResponse -> ShowS
$cshowsPrec :: Int -> DescribeBucketsResponse -> ShowS
Prelude.Show, forall x. Rep DescribeBucketsResponse x -> DescribeBucketsResponse
forall x. DescribeBucketsResponse -> Rep DescribeBucketsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeBucketsResponse x -> DescribeBucketsResponse
$cfrom :: forall x. DescribeBucketsResponse -> Rep DescribeBucketsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeBucketsResponse' 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:
--
-- 'buckets', 'describeBucketsResponse_buckets' - An array of objects, one for each bucket that matches the filter
-- criteria specified in the request.
--
-- 'nextToken', 'describeBucketsResponse_nextToken' - The string to use in a subsequent request to get the next page of
-- results in a paginated response. This value is null if there are no
-- additional pages.
--
-- 'httpStatus', 'describeBucketsResponse_httpStatus' - The response's http status code.
newDescribeBucketsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeBucketsResponse
newDescribeBucketsResponse :: Int -> DescribeBucketsResponse
newDescribeBucketsResponse Int
pHttpStatus_ =
  DescribeBucketsResponse'
    { $sel:buckets:DescribeBucketsResponse' :: Maybe [BucketMetadata]
buckets = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:DescribeBucketsResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeBucketsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | An array of objects, one for each bucket that matches the filter
-- criteria specified in the request.
describeBucketsResponse_buckets :: Lens.Lens' DescribeBucketsResponse (Prelude.Maybe [BucketMetadata])
describeBucketsResponse_buckets :: Lens' DescribeBucketsResponse (Maybe [BucketMetadata])
describeBucketsResponse_buckets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBucketsResponse' {Maybe [BucketMetadata]
buckets :: Maybe [BucketMetadata]
$sel:buckets:DescribeBucketsResponse' :: DescribeBucketsResponse -> Maybe [BucketMetadata]
buckets} -> Maybe [BucketMetadata]
buckets) (\s :: DescribeBucketsResponse
s@DescribeBucketsResponse' {} Maybe [BucketMetadata]
a -> DescribeBucketsResponse
s {$sel:buckets:DescribeBucketsResponse' :: Maybe [BucketMetadata]
buckets = Maybe [BucketMetadata]
a} :: DescribeBucketsResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The string to use in a subsequent request to get the next page of
-- results in a paginated response. This value is null if there are no
-- additional pages.
describeBucketsResponse_nextToken :: Lens.Lens' DescribeBucketsResponse (Prelude.Maybe Prelude.Text)
describeBucketsResponse_nextToken :: Lens' DescribeBucketsResponse (Maybe Text)
describeBucketsResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeBucketsResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeBucketsResponse' :: DescribeBucketsResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeBucketsResponse
s@DescribeBucketsResponse' {} Maybe Text
a -> DescribeBucketsResponse
s {$sel:nextToken:DescribeBucketsResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeBucketsResponse)

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

instance Prelude.NFData DescribeBucketsResponse where
  rnf :: DescribeBucketsResponse -> ()
rnf DescribeBucketsResponse' {Int
Maybe [BucketMetadata]
Maybe Text
httpStatus :: Int
nextToken :: Maybe Text
buckets :: Maybe [BucketMetadata]
$sel:httpStatus:DescribeBucketsResponse' :: DescribeBucketsResponse -> Int
$sel:nextToken:DescribeBucketsResponse' :: DescribeBucketsResponse -> Maybe Text
$sel:buckets:DescribeBucketsResponse' :: DescribeBucketsResponse -> Maybe [BucketMetadata]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [BucketMetadata]
buckets
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus