{-# 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.Lightsail.GetBuckets
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns information about one or more Amazon Lightsail buckets. The
-- information returned includes the synchronization status of the Amazon
-- Simple Storage Service (Amazon S3) account-level block public access
-- feature for your Lightsail buckets.
--
-- For more information about buckets, see
-- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/buckets-in-amazon-lightsail Buckets in Amazon Lightsail>
-- in the /Amazon Lightsail Developer Guide/.
module Amazonka.Lightsail.GetBuckets
  ( -- * Creating a Request
    GetBuckets (..),
    newGetBuckets,

    -- * Request Lenses
    getBuckets_bucketName,
    getBuckets_includeConnectedResources,
    getBuckets_pageToken,

    -- * Destructuring the Response
    GetBucketsResponse (..),
    newGetBucketsResponse,

    -- * Response Lenses
    getBucketsResponse_accountLevelBpaSync,
    getBucketsResponse_buckets,
    getBucketsResponse_nextPageToken,
    getBucketsResponse_httpStatus,
  )
where

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

-- | /See:/ 'newGetBuckets' smart constructor.
data GetBuckets = GetBuckets'
  { -- | The name of the bucket for which to return information.
    --
    -- When omitted, the response includes all of your buckets in the Amazon
    -- Web Services Region where the request is made.
    GetBuckets -> Maybe Text
bucketName :: Prelude.Maybe Prelude.Text,
    -- | A Boolean value that indicates whether to include Lightsail instances
    -- that were given access to the bucket using the
    -- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_SetResourceAccessForBucket.html SetResourceAccessForBucket>
    -- action.
    GetBuckets -> Maybe Bool
includeConnectedResources :: Prelude.Maybe Prelude.Bool,
    -- | The token to advance to the next page of results from your request.
    --
    -- To get a page token, perform an initial @GetBuckets@ request. If your
    -- results are paginated, the response will return a next page token that
    -- you can specify as the page token in a subsequent request.
    GetBuckets -> Maybe Text
pageToken :: Prelude.Maybe Prelude.Text
  }
  deriving (GetBuckets -> GetBuckets -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetBuckets -> GetBuckets -> Bool
$c/= :: GetBuckets -> GetBuckets -> Bool
== :: GetBuckets -> GetBuckets -> Bool
$c== :: GetBuckets -> GetBuckets -> Bool
Prelude.Eq, ReadPrec [GetBuckets]
ReadPrec GetBuckets
Int -> ReadS GetBuckets
ReadS [GetBuckets]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetBuckets]
$creadListPrec :: ReadPrec [GetBuckets]
readPrec :: ReadPrec GetBuckets
$creadPrec :: ReadPrec GetBuckets
readList :: ReadS [GetBuckets]
$creadList :: ReadS [GetBuckets]
readsPrec :: Int -> ReadS GetBuckets
$creadsPrec :: Int -> ReadS GetBuckets
Prelude.Read, Int -> GetBuckets -> ShowS
[GetBuckets] -> ShowS
GetBuckets -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetBuckets] -> ShowS
$cshowList :: [GetBuckets] -> ShowS
show :: GetBuckets -> String
$cshow :: GetBuckets -> String
showsPrec :: Int -> GetBuckets -> ShowS
$cshowsPrec :: Int -> GetBuckets -> ShowS
Prelude.Show, forall x. Rep GetBuckets x -> GetBuckets
forall x. GetBuckets -> Rep GetBuckets x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetBuckets x -> GetBuckets
$cfrom :: forall x. GetBuckets -> Rep GetBuckets x
Prelude.Generic)

-- |
-- Create a value of 'GetBuckets' 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:
--
-- 'bucketName', 'getBuckets_bucketName' - The name of the bucket for which to return information.
--
-- When omitted, the response includes all of your buckets in the Amazon
-- Web Services Region where the request is made.
--
-- 'includeConnectedResources', 'getBuckets_includeConnectedResources' - A Boolean value that indicates whether to include Lightsail instances
-- that were given access to the bucket using the
-- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_SetResourceAccessForBucket.html SetResourceAccessForBucket>
-- action.
--
-- 'pageToken', 'getBuckets_pageToken' - The token to advance to the next page of results from your request.
--
-- To get a page token, perform an initial @GetBuckets@ request. If your
-- results are paginated, the response will return a next page token that
-- you can specify as the page token in a subsequent request.
newGetBuckets ::
  GetBuckets
newGetBuckets :: GetBuckets
newGetBuckets =
  GetBuckets'
    { $sel:bucketName:GetBuckets' :: Maybe Text
bucketName = forall a. Maybe a
Prelude.Nothing,
      $sel:includeConnectedResources:GetBuckets' :: Maybe Bool
includeConnectedResources = forall a. Maybe a
Prelude.Nothing,
      $sel:pageToken:GetBuckets' :: Maybe Text
pageToken = forall a. Maybe a
Prelude.Nothing
    }

-- | The name of the bucket for which to return information.
--
-- When omitted, the response includes all of your buckets in the Amazon
-- Web Services Region where the request is made.
getBuckets_bucketName :: Lens.Lens' GetBuckets (Prelude.Maybe Prelude.Text)
getBuckets_bucketName :: Lens' GetBuckets (Maybe Text)
getBuckets_bucketName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBuckets' {Maybe Text
bucketName :: Maybe Text
$sel:bucketName:GetBuckets' :: GetBuckets -> Maybe Text
bucketName} -> Maybe Text
bucketName) (\s :: GetBuckets
s@GetBuckets' {} Maybe Text
a -> GetBuckets
s {$sel:bucketName:GetBuckets' :: Maybe Text
bucketName = Maybe Text
a} :: GetBuckets)

-- | A Boolean value that indicates whether to include Lightsail instances
-- that were given access to the bucket using the
-- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_SetResourceAccessForBucket.html SetResourceAccessForBucket>
-- action.
getBuckets_includeConnectedResources :: Lens.Lens' GetBuckets (Prelude.Maybe Prelude.Bool)
getBuckets_includeConnectedResources :: Lens' GetBuckets (Maybe Bool)
getBuckets_includeConnectedResources = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBuckets' {Maybe Bool
includeConnectedResources :: Maybe Bool
$sel:includeConnectedResources:GetBuckets' :: GetBuckets -> Maybe Bool
includeConnectedResources} -> Maybe Bool
includeConnectedResources) (\s :: GetBuckets
s@GetBuckets' {} Maybe Bool
a -> GetBuckets
s {$sel:includeConnectedResources:GetBuckets' :: Maybe Bool
includeConnectedResources = Maybe Bool
a} :: GetBuckets)

-- | The token to advance to the next page of results from your request.
--
-- To get a page token, perform an initial @GetBuckets@ request. If your
-- results are paginated, the response will return a next page token that
-- you can specify as the page token in a subsequent request.
getBuckets_pageToken :: Lens.Lens' GetBuckets (Prelude.Maybe Prelude.Text)
getBuckets_pageToken :: Lens' GetBuckets (Maybe Text)
getBuckets_pageToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBuckets' {Maybe Text
pageToken :: Maybe Text
$sel:pageToken:GetBuckets' :: GetBuckets -> Maybe Text
pageToken} -> Maybe Text
pageToken) (\s :: GetBuckets
s@GetBuckets' {} Maybe Text
a -> GetBuckets
s {$sel:pageToken:GetBuckets' :: Maybe Text
pageToken = Maybe Text
a} :: GetBuckets)

instance Core.AWSRequest GetBuckets where
  type AWSResponse GetBuckets = GetBucketsResponse
  request :: (Service -> Service) -> GetBuckets -> Request GetBuckets
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 GetBuckets
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetBuckets)))
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 AccountLevelBpaSync
-> Maybe [Bucket] -> Maybe Text -> Int -> GetBucketsResponse
GetBucketsResponse'
            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
"accountLevelBpaSync")
            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
"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
"nextPageToken")
            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 GetBuckets where
  hashWithSalt :: Int -> GetBuckets -> Int
hashWithSalt Int
_salt GetBuckets' {Maybe Bool
Maybe Text
pageToken :: Maybe Text
includeConnectedResources :: Maybe Bool
bucketName :: Maybe Text
$sel:pageToken:GetBuckets' :: GetBuckets -> Maybe Text
$sel:includeConnectedResources:GetBuckets' :: GetBuckets -> Maybe Bool
$sel:bucketName:GetBuckets' :: GetBuckets -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
bucketName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
includeConnectedResources
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
pageToken

instance Prelude.NFData GetBuckets where
  rnf :: GetBuckets -> ()
rnf GetBuckets' {Maybe Bool
Maybe Text
pageToken :: Maybe Text
includeConnectedResources :: Maybe Bool
bucketName :: Maybe Text
$sel:pageToken:GetBuckets' :: GetBuckets -> Maybe Text
$sel:includeConnectedResources:GetBuckets' :: GetBuckets -> Maybe Bool
$sel:bucketName:GetBuckets' :: GetBuckets -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
bucketName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
includeConnectedResources
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
pageToken

instance Data.ToHeaders GetBuckets where
  toHeaders :: GetBuckets -> 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
"Lightsail_20161128.GetBuckets" ::
                          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 GetBuckets where
  toJSON :: GetBuckets -> Value
toJSON GetBuckets' {Maybe Bool
Maybe Text
pageToken :: Maybe Text
includeConnectedResources :: Maybe Bool
bucketName :: Maybe Text
$sel:pageToken:GetBuckets' :: GetBuckets -> Maybe Text
$sel:includeConnectedResources:GetBuckets' :: GetBuckets -> Maybe Bool
$sel:bucketName:GetBuckets' :: GetBuckets -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"bucketName" 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
bucketName,
            (Key
"includeConnectedResources" 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 Bool
includeConnectedResources,
            (Key
"pageToken" 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
pageToken
          ]
      )

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

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

-- | /See:/ 'newGetBucketsResponse' smart constructor.
data GetBucketsResponse = GetBucketsResponse'
  { -- | An object that describes the synchronization status of the Amazon S3
    -- account-level block public access feature for your Lightsail buckets.
    --
    -- For more information about this feature and how it affects Lightsail
    -- buckets, see
    -- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-block-public-access-for-buckets Block public access for buckets in Amazon Lightsail>.
    GetBucketsResponse -> Maybe AccountLevelBpaSync
accountLevelBpaSync :: Prelude.Maybe AccountLevelBpaSync,
    -- | An array of objects that describe buckets.
    GetBucketsResponse -> Maybe [Bucket]
buckets :: Prelude.Maybe [Bucket],
    -- | The token to advance to the next page of results from your request.
    --
    -- A next page token is not returned if there are no more results to
    -- display.
    --
    -- To get the next page of results, perform another @GetBuckets@ request
    -- and specify the next page token using the @pageToken@ parameter.
    GetBucketsResponse -> Maybe Text
nextPageToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    GetBucketsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetBucketsResponse -> GetBucketsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetBucketsResponse -> GetBucketsResponse -> Bool
$c/= :: GetBucketsResponse -> GetBucketsResponse -> Bool
== :: GetBucketsResponse -> GetBucketsResponse -> Bool
$c== :: GetBucketsResponse -> GetBucketsResponse -> Bool
Prelude.Eq, ReadPrec [GetBucketsResponse]
ReadPrec GetBucketsResponse
Int -> ReadS GetBucketsResponse
ReadS [GetBucketsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetBucketsResponse]
$creadListPrec :: ReadPrec [GetBucketsResponse]
readPrec :: ReadPrec GetBucketsResponse
$creadPrec :: ReadPrec GetBucketsResponse
readList :: ReadS [GetBucketsResponse]
$creadList :: ReadS [GetBucketsResponse]
readsPrec :: Int -> ReadS GetBucketsResponse
$creadsPrec :: Int -> ReadS GetBucketsResponse
Prelude.Read, Int -> GetBucketsResponse -> ShowS
[GetBucketsResponse] -> ShowS
GetBucketsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetBucketsResponse] -> ShowS
$cshowList :: [GetBucketsResponse] -> ShowS
show :: GetBucketsResponse -> String
$cshow :: GetBucketsResponse -> String
showsPrec :: Int -> GetBucketsResponse -> ShowS
$cshowsPrec :: Int -> GetBucketsResponse -> ShowS
Prelude.Show, forall x. Rep GetBucketsResponse x -> GetBucketsResponse
forall x. GetBucketsResponse -> Rep GetBucketsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetBucketsResponse x -> GetBucketsResponse
$cfrom :: forall x. GetBucketsResponse -> Rep GetBucketsResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetBucketsResponse' 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:
--
-- 'accountLevelBpaSync', 'getBucketsResponse_accountLevelBpaSync' - An object that describes the synchronization status of the Amazon S3
-- account-level block public access feature for your Lightsail buckets.
--
-- For more information about this feature and how it affects Lightsail
-- buckets, see
-- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-block-public-access-for-buckets Block public access for buckets in Amazon Lightsail>.
--
-- 'buckets', 'getBucketsResponse_buckets' - An array of objects that describe buckets.
--
-- 'nextPageToken', 'getBucketsResponse_nextPageToken' - The token to advance to the next page of results from your request.
--
-- A next page token is not returned if there are no more results to
-- display.
--
-- To get the next page of results, perform another @GetBuckets@ request
-- and specify the next page token using the @pageToken@ parameter.
--
-- 'httpStatus', 'getBucketsResponse_httpStatus' - The response's http status code.
newGetBucketsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetBucketsResponse
newGetBucketsResponse :: Int -> GetBucketsResponse
newGetBucketsResponse Int
pHttpStatus_ =
  GetBucketsResponse'
    { $sel:accountLevelBpaSync:GetBucketsResponse' :: Maybe AccountLevelBpaSync
accountLevelBpaSync =
        forall a. Maybe a
Prelude.Nothing,
      $sel:buckets:GetBucketsResponse' :: Maybe [Bucket]
buckets = forall a. Maybe a
Prelude.Nothing,
      $sel:nextPageToken:GetBucketsResponse' :: Maybe Text
nextPageToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetBucketsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | An object that describes the synchronization status of the Amazon S3
-- account-level block public access feature for your Lightsail buckets.
--
-- For more information about this feature and how it affects Lightsail
-- buckets, see
-- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-block-public-access-for-buckets Block public access for buckets in Amazon Lightsail>.
getBucketsResponse_accountLevelBpaSync :: Lens.Lens' GetBucketsResponse (Prelude.Maybe AccountLevelBpaSync)
getBucketsResponse_accountLevelBpaSync :: Lens' GetBucketsResponse (Maybe AccountLevelBpaSync)
getBucketsResponse_accountLevelBpaSync = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketsResponse' {Maybe AccountLevelBpaSync
accountLevelBpaSync :: Maybe AccountLevelBpaSync
$sel:accountLevelBpaSync:GetBucketsResponse' :: GetBucketsResponse -> Maybe AccountLevelBpaSync
accountLevelBpaSync} -> Maybe AccountLevelBpaSync
accountLevelBpaSync) (\s :: GetBucketsResponse
s@GetBucketsResponse' {} Maybe AccountLevelBpaSync
a -> GetBucketsResponse
s {$sel:accountLevelBpaSync:GetBucketsResponse' :: Maybe AccountLevelBpaSync
accountLevelBpaSync = Maybe AccountLevelBpaSync
a} :: GetBucketsResponse)

-- | An array of objects that describe buckets.
getBucketsResponse_buckets :: Lens.Lens' GetBucketsResponse (Prelude.Maybe [Bucket])
getBucketsResponse_buckets :: Lens' GetBucketsResponse (Maybe [Bucket])
getBucketsResponse_buckets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketsResponse' {Maybe [Bucket]
buckets :: Maybe [Bucket]
$sel:buckets:GetBucketsResponse' :: GetBucketsResponse -> Maybe [Bucket]
buckets} -> Maybe [Bucket]
buckets) (\s :: GetBucketsResponse
s@GetBucketsResponse' {} Maybe [Bucket]
a -> GetBucketsResponse
s {$sel:buckets:GetBucketsResponse' :: Maybe [Bucket]
buckets = Maybe [Bucket]
a} :: GetBucketsResponse) 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 token to advance to the next page of results from your request.
--
-- A next page token is not returned if there are no more results to
-- display.
--
-- To get the next page of results, perform another @GetBuckets@ request
-- and specify the next page token using the @pageToken@ parameter.
getBucketsResponse_nextPageToken :: Lens.Lens' GetBucketsResponse (Prelude.Maybe Prelude.Text)
getBucketsResponse_nextPageToken :: Lens' GetBucketsResponse (Maybe Text)
getBucketsResponse_nextPageToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketsResponse' {Maybe Text
nextPageToken :: Maybe Text
$sel:nextPageToken:GetBucketsResponse' :: GetBucketsResponse -> Maybe Text
nextPageToken} -> Maybe Text
nextPageToken) (\s :: GetBucketsResponse
s@GetBucketsResponse' {} Maybe Text
a -> GetBucketsResponse
s {$sel:nextPageToken:GetBucketsResponse' :: Maybe Text
nextPageToken = Maybe Text
a} :: GetBucketsResponse)

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

instance Prelude.NFData GetBucketsResponse where
  rnf :: GetBucketsResponse -> ()
rnf GetBucketsResponse' {Int
Maybe [Bucket]
Maybe Text
Maybe AccountLevelBpaSync
httpStatus :: Int
nextPageToken :: Maybe Text
buckets :: Maybe [Bucket]
accountLevelBpaSync :: Maybe AccountLevelBpaSync
$sel:httpStatus:GetBucketsResponse' :: GetBucketsResponse -> Int
$sel:nextPageToken:GetBucketsResponse' :: GetBucketsResponse -> Maybe Text
$sel:buckets:GetBucketsResponse' :: GetBucketsResponse -> Maybe [Bucket]
$sel:accountLevelBpaSync:GetBucketsResponse' :: GetBucketsResponse -> Maybe AccountLevelBpaSync
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AccountLevelBpaSync
accountLevelBpaSync
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Bucket]
buckets
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextPageToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus