{-# 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.CreateBucket
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates an Amazon Lightsail bucket.
--
-- A bucket is a cloud storage resource available in the Lightsail object
-- storage service. Use buckets to store objects such as data and its
-- descriptive metadata. 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.CreateBucket
  ( -- * Creating a Request
    CreateBucket (..),
    newCreateBucket,

    -- * Request Lenses
    createBucket_enableObjectVersioning,
    createBucket_tags,
    createBucket_bucketName,
    createBucket_bundleId,

    -- * Destructuring the Response
    CreateBucketResponse (..),
    newCreateBucketResponse,

    -- * Response Lenses
    createBucketResponse_bucket,
    createBucketResponse_operations,
    createBucketResponse_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:/ 'newCreateBucket' smart constructor.
data CreateBucket = CreateBucket'
  { -- | A Boolean value that indicates whether to enable versioning of objects
    -- in the bucket.
    --
    -- For more information about versioning, see
    -- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-managing-bucket-object-versioning Enabling and suspending object versioning in a bucket in Amazon Lightsail>
    -- in the /Amazon Lightsail Developer Guide/.
    CreateBucket -> Maybe Bool
enableObjectVersioning :: Prelude.Maybe Prelude.Bool,
    -- | The tag keys and optional values to add to the bucket during creation.
    --
    -- Use the
    -- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_TagResource.html TagResource>
    -- action to tag the bucket after it\'s created.
    CreateBucket -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The name for the bucket.
    --
    -- For more information about bucket names, see
    -- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/bucket-naming-rules-in-amazon-lightsail Bucket naming rules in Amazon Lightsail>
    -- in the /Amazon Lightsail Developer Guide/.
    CreateBucket -> Text
bucketName :: Prelude.Text,
    -- | The ID of the bundle to use for the bucket.
    --
    -- A bucket bundle specifies the monthly cost, storage space, and data
    -- transfer quota for a bucket.
    --
    -- Use the
    -- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetBucketBundles.html GetBucketBundles>
    -- action to get a list of bundle IDs that you can specify.
    --
    -- Use the
    -- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateBucketBundle.html UpdateBucketBundle>
    -- action to change the bundle after the bucket is created.
    CreateBucket -> Text
bundleId :: Prelude.Text
  }
  deriving (CreateBucket -> CreateBucket -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateBucket -> CreateBucket -> Bool
$c/= :: CreateBucket -> CreateBucket -> Bool
== :: CreateBucket -> CreateBucket -> Bool
$c== :: CreateBucket -> CreateBucket -> Bool
Prelude.Eq, ReadPrec [CreateBucket]
ReadPrec CreateBucket
Int -> ReadS CreateBucket
ReadS [CreateBucket]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateBucket]
$creadListPrec :: ReadPrec [CreateBucket]
readPrec :: ReadPrec CreateBucket
$creadPrec :: ReadPrec CreateBucket
readList :: ReadS [CreateBucket]
$creadList :: ReadS [CreateBucket]
readsPrec :: Int -> ReadS CreateBucket
$creadsPrec :: Int -> ReadS CreateBucket
Prelude.Read, Int -> CreateBucket -> ShowS
[CreateBucket] -> ShowS
CreateBucket -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateBucket] -> ShowS
$cshowList :: [CreateBucket] -> ShowS
show :: CreateBucket -> String
$cshow :: CreateBucket -> String
showsPrec :: Int -> CreateBucket -> ShowS
$cshowsPrec :: Int -> CreateBucket -> ShowS
Prelude.Show, forall x. Rep CreateBucket x -> CreateBucket
forall x. CreateBucket -> Rep CreateBucket x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateBucket x -> CreateBucket
$cfrom :: forall x. CreateBucket -> Rep CreateBucket x
Prelude.Generic)

-- |
-- Create a value of 'CreateBucket' 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:
--
-- 'enableObjectVersioning', 'createBucket_enableObjectVersioning' - A Boolean value that indicates whether to enable versioning of objects
-- in the bucket.
--
-- For more information about versioning, see
-- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-managing-bucket-object-versioning Enabling and suspending object versioning in a bucket in Amazon Lightsail>
-- in the /Amazon Lightsail Developer Guide/.
--
-- 'tags', 'createBucket_tags' - The tag keys and optional values to add to the bucket during creation.
--
-- Use the
-- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_TagResource.html TagResource>
-- action to tag the bucket after it\'s created.
--
-- 'bucketName', 'createBucket_bucketName' - The name for the bucket.
--
-- For more information about bucket names, see
-- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/bucket-naming-rules-in-amazon-lightsail Bucket naming rules in Amazon Lightsail>
-- in the /Amazon Lightsail Developer Guide/.
--
-- 'bundleId', 'createBucket_bundleId' - The ID of the bundle to use for the bucket.
--
-- A bucket bundle specifies the monthly cost, storage space, and data
-- transfer quota for a bucket.
--
-- Use the
-- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetBucketBundles.html GetBucketBundles>
-- action to get a list of bundle IDs that you can specify.
--
-- Use the
-- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateBucketBundle.html UpdateBucketBundle>
-- action to change the bundle after the bucket is created.
newCreateBucket ::
  -- | 'bucketName'
  Prelude.Text ->
  -- | 'bundleId'
  Prelude.Text ->
  CreateBucket
newCreateBucket :: Text -> Text -> CreateBucket
newCreateBucket Text
pBucketName_ Text
pBundleId_ =
  CreateBucket'
    { $sel:enableObjectVersioning:CreateBucket' :: Maybe Bool
enableObjectVersioning =
        forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateBucket' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:bucketName:CreateBucket' :: Text
bucketName = Text
pBucketName_,
      $sel:bundleId:CreateBucket' :: Text
bundleId = Text
pBundleId_
    }

-- | A Boolean value that indicates whether to enable versioning of objects
-- in the bucket.
--
-- For more information about versioning, see
-- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-managing-bucket-object-versioning Enabling and suspending object versioning in a bucket in Amazon Lightsail>
-- in the /Amazon Lightsail Developer Guide/.
createBucket_enableObjectVersioning :: Lens.Lens' CreateBucket (Prelude.Maybe Prelude.Bool)
createBucket_enableObjectVersioning :: Lens' CreateBucket (Maybe Bool)
createBucket_enableObjectVersioning = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBucket' {Maybe Bool
enableObjectVersioning :: Maybe Bool
$sel:enableObjectVersioning:CreateBucket' :: CreateBucket -> Maybe Bool
enableObjectVersioning} -> Maybe Bool
enableObjectVersioning) (\s :: CreateBucket
s@CreateBucket' {} Maybe Bool
a -> CreateBucket
s {$sel:enableObjectVersioning:CreateBucket' :: Maybe Bool
enableObjectVersioning = Maybe Bool
a} :: CreateBucket)

-- | The tag keys and optional values to add to the bucket during creation.
--
-- Use the
-- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_TagResource.html TagResource>
-- action to tag the bucket after it\'s created.
createBucket_tags :: Lens.Lens' CreateBucket (Prelude.Maybe [Tag])
createBucket_tags :: Lens' CreateBucket (Maybe [Tag])
createBucket_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBucket' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateBucket' :: CreateBucket -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateBucket
s@CreateBucket' {} Maybe [Tag]
a -> CreateBucket
s {$sel:tags:CreateBucket' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateBucket) 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 name for the bucket.
--
-- For more information about bucket names, see
-- <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/bucket-naming-rules-in-amazon-lightsail Bucket naming rules in Amazon Lightsail>
-- in the /Amazon Lightsail Developer Guide/.
createBucket_bucketName :: Lens.Lens' CreateBucket Prelude.Text
createBucket_bucketName :: Lens' CreateBucket Text
createBucket_bucketName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBucket' {Text
bucketName :: Text
$sel:bucketName:CreateBucket' :: CreateBucket -> Text
bucketName} -> Text
bucketName) (\s :: CreateBucket
s@CreateBucket' {} Text
a -> CreateBucket
s {$sel:bucketName:CreateBucket' :: Text
bucketName = Text
a} :: CreateBucket)

-- | The ID of the bundle to use for the bucket.
--
-- A bucket bundle specifies the monthly cost, storage space, and data
-- transfer quota for a bucket.
--
-- Use the
-- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetBucketBundles.html GetBucketBundles>
-- action to get a list of bundle IDs that you can specify.
--
-- Use the
-- <https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateBucketBundle.html UpdateBucketBundle>
-- action to change the bundle after the bucket is created.
createBucket_bundleId :: Lens.Lens' CreateBucket Prelude.Text
createBucket_bundleId :: Lens' CreateBucket Text
createBucket_bundleId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBucket' {Text
bundleId :: Text
$sel:bundleId:CreateBucket' :: CreateBucket -> Text
bundleId} -> Text
bundleId) (\s :: CreateBucket
s@CreateBucket' {} Text
a -> CreateBucket
s {$sel:bundleId:CreateBucket' :: Text
bundleId = Text
a} :: CreateBucket)

instance Core.AWSRequest CreateBucket where
  type AWSResponse CreateBucket = CreateBucketResponse
  request :: (Service -> Service) -> CreateBucket -> Request CreateBucket
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 CreateBucket
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateBucket)))
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 Bucket -> Maybe [Operation] -> Int -> CreateBucketResponse
CreateBucketResponse'
            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
"bucket")
            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
"operations" 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.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable CreateBucket where
  hashWithSalt :: Int -> CreateBucket -> Int
hashWithSalt Int
_salt CreateBucket' {Maybe Bool
Maybe [Tag]
Text
bundleId :: Text
bucketName :: Text
tags :: Maybe [Tag]
enableObjectVersioning :: Maybe Bool
$sel:bundleId:CreateBucket' :: CreateBucket -> Text
$sel:bucketName:CreateBucket' :: CreateBucket -> Text
$sel:tags:CreateBucket' :: CreateBucket -> Maybe [Tag]
$sel:enableObjectVersioning:CreateBucket' :: CreateBucket -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableObjectVersioning
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
bucketName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
bundleId

instance Prelude.NFData CreateBucket where
  rnf :: CreateBucket -> ()
rnf CreateBucket' {Maybe Bool
Maybe [Tag]
Text
bundleId :: Text
bucketName :: Text
tags :: Maybe [Tag]
enableObjectVersioning :: Maybe Bool
$sel:bundleId:CreateBucket' :: CreateBucket -> Text
$sel:bucketName:CreateBucket' :: CreateBucket -> Text
$sel:tags:CreateBucket' :: CreateBucket -> Maybe [Tag]
$sel:enableObjectVersioning:CreateBucket' :: CreateBucket -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enableObjectVersioning
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
bucketName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
bundleId

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

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

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

-- | /See:/ 'newCreateBucketResponse' smart constructor.
data CreateBucketResponse = CreateBucketResponse'
  { -- | An object that describes the bucket that is created.
    CreateBucketResponse -> Maybe Bucket
bucket :: Prelude.Maybe Bucket,
    -- | An array of objects that describe the result of the action, such as the
    -- status of the request, the timestamp of the request, and the resources
    -- affected by the request.
    CreateBucketResponse -> Maybe [Operation]
operations :: Prelude.Maybe [Operation],
    -- | The response's http status code.
    CreateBucketResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateBucketResponse -> CreateBucketResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateBucketResponse -> CreateBucketResponse -> Bool
$c/= :: CreateBucketResponse -> CreateBucketResponse -> Bool
== :: CreateBucketResponse -> CreateBucketResponse -> Bool
$c== :: CreateBucketResponse -> CreateBucketResponse -> Bool
Prelude.Eq, ReadPrec [CreateBucketResponse]
ReadPrec CreateBucketResponse
Int -> ReadS CreateBucketResponse
ReadS [CreateBucketResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateBucketResponse]
$creadListPrec :: ReadPrec [CreateBucketResponse]
readPrec :: ReadPrec CreateBucketResponse
$creadPrec :: ReadPrec CreateBucketResponse
readList :: ReadS [CreateBucketResponse]
$creadList :: ReadS [CreateBucketResponse]
readsPrec :: Int -> ReadS CreateBucketResponse
$creadsPrec :: Int -> ReadS CreateBucketResponse
Prelude.Read, Int -> CreateBucketResponse -> ShowS
[CreateBucketResponse] -> ShowS
CreateBucketResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateBucketResponse] -> ShowS
$cshowList :: [CreateBucketResponse] -> ShowS
show :: CreateBucketResponse -> String
$cshow :: CreateBucketResponse -> String
showsPrec :: Int -> CreateBucketResponse -> ShowS
$cshowsPrec :: Int -> CreateBucketResponse -> ShowS
Prelude.Show, forall x. Rep CreateBucketResponse x -> CreateBucketResponse
forall x. CreateBucketResponse -> Rep CreateBucketResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateBucketResponse x -> CreateBucketResponse
$cfrom :: forall x. CreateBucketResponse -> Rep CreateBucketResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateBucketResponse' 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:
--
-- 'bucket', 'createBucketResponse_bucket' - An object that describes the bucket that is created.
--
-- 'operations', 'createBucketResponse_operations' - An array of objects that describe the result of the action, such as the
-- status of the request, the timestamp of the request, and the resources
-- affected by the request.
--
-- 'httpStatus', 'createBucketResponse_httpStatus' - The response's http status code.
newCreateBucketResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateBucketResponse
newCreateBucketResponse :: Int -> CreateBucketResponse
newCreateBucketResponse Int
pHttpStatus_ =
  CreateBucketResponse'
    { $sel:bucket:CreateBucketResponse' :: Maybe Bucket
bucket = forall a. Maybe a
Prelude.Nothing,
      $sel:operations:CreateBucketResponse' :: Maybe [Operation]
operations = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateBucketResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | An object that describes the bucket that is created.
createBucketResponse_bucket :: Lens.Lens' CreateBucketResponse (Prelude.Maybe Bucket)
createBucketResponse_bucket :: Lens' CreateBucketResponse (Maybe Bucket)
createBucketResponse_bucket = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBucketResponse' {Maybe Bucket
bucket :: Maybe Bucket
$sel:bucket:CreateBucketResponse' :: CreateBucketResponse -> Maybe Bucket
bucket} -> Maybe Bucket
bucket) (\s :: CreateBucketResponse
s@CreateBucketResponse' {} Maybe Bucket
a -> CreateBucketResponse
s {$sel:bucket:CreateBucketResponse' :: Maybe Bucket
bucket = Maybe Bucket
a} :: CreateBucketResponse)

-- | An array of objects that describe the result of the action, such as the
-- status of the request, the timestamp of the request, and the resources
-- affected by the request.
createBucketResponse_operations :: Lens.Lens' CreateBucketResponse (Prelude.Maybe [Operation])
createBucketResponse_operations :: Lens' CreateBucketResponse (Maybe [Operation])
createBucketResponse_operations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBucketResponse' {Maybe [Operation]
operations :: Maybe [Operation]
$sel:operations:CreateBucketResponse' :: CreateBucketResponse -> Maybe [Operation]
operations} -> Maybe [Operation]
operations) (\s :: CreateBucketResponse
s@CreateBucketResponse' {} Maybe [Operation]
a -> CreateBucketResponse
s {$sel:operations:CreateBucketResponse' :: Maybe [Operation]
operations = Maybe [Operation]
a} :: CreateBucketResponse) 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 response's http status code.
createBucketResponse_httpStatus :: Lens.Lens' CreateBucketResponse Prelude.Int
createBucketResponse_httpStatus :: Lens' CreateBucketResponse Int
createBucketResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateBucketResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateBucketResponse' :: CreateBucketResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateBucketResponse
s@CreateBucketResponse' {} Int
a -> CreateBucketResponse
s {$sel:httpStatus:CreateBucketResponse' :: Int
httpStatus = Int
a} :: CreateBucketResponse)

instance Prelude.NFData CreateBucketResponse where
  rnf :: CreateBucketResponse -> ()
rnf CreateBucketResponse' {Int
Maybe [Operation]
Maybe Bucket
httpStatus :: Int
operations :: Maybe [Operation]
bucket :: Maybe Bucket
$sel:httpStatus:CreateBucketResponse' :: CreateBucketResponse -> Int
$sel:operations:CreateBucketResponse' :: CreateBucketResponse -> Maybe [Operation]
$sel:bucket:CreateBucketResponse' :: CreateBucketResponse -> Maybe Bucket
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bucket
bucket
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Operation]
operations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus