{-# 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.S3.PutBucketWebsite
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Sets the configuration of the website that is specified in the @website@
-- subresource. To configure a bucket as a website, you can add this
-- subresource on the bucket with website configuration information such as
-- the file name of the index document and any redirect rules. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html Hosting Websites on Amazon S3>.
--
-- This PUT action requires the @S3:PutBucketWebsite@ permission. By
-- default, only the bucket owner can configure the website attached to a
-- bucket; however, bucket owners can allow other users to set the website
-- configuration by writing a bucket policy that grants them the
-- @S3:PutBucketWebsite@ permission.
--
-- To redirect all website requests sent to the bucket\'s website endpoint,
-- you add a website configuration with the following elements. Because all
-- requests are sent to another website, you don\'t need to provide index
-- document name for the bucket.
--
-- -   @WebsiteConfiguration@
--
-- -   @RedirectAllRequestsTo@
--
-- -   @HostName@
--
-- -   @Protocol@
--
-- If you want granular control over redirects, you can use the following
-- elements to add routing rules that describe conditions for redirecting
-- requests and information about the redirect destination. In this case,
-- the website configuration must provide an index document for the bucket,
-- because some requests might not be redirected.
--
-- -   @WebsiteConfiguration@
--
-- -   @IndexDocument@
--
-- -   @Suffix@
--
-- -   @ErrorDocument@
--
-- -   @Key@
--
-- -   @RoutingRules@
--
-- -   @RoutingRule@
--
-- -   @Condition@
--
-- -   @HttpErrorCodeReturnedEquals@
--
-- -   @KeyPrefixEquals@
--
-- -   @Redirect@
--
-- -   @Protocol@
--
-- -   @HostName@
--
-- -   @ReplaceKeyPrefixWith@
--
-- -   @ReplaceKeyWith@
--
-- -   @HttpRedirectCode@
--
-- Amazon S3 has a limitation of 50 routing rules per website
-- configuration. If you require more than 50 routing rules, you can use
-- object redirect. For more information, see
-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html Configuring an Object Redirect>
-- in the /Amazon S3 User Guide/.
module Amazonka.S3.PutBucketWebsite
  ( -- * Creating a Request
    PutBucketWebsite (..),
    newPutBucketWebsite,

    -- * Request Lenses
    putBucketWebsite_checksumAlgorithm,
    putBucketWebsite_contentMD5,
    putBucketWebsite_expectedBucketOwner,
    putBucketWebsite_bucket,
    putBucketWebsite_websiteConfiguration,

    -- * Destructuring the Response
    PutBucketWebsiteResponse (..),
    newPutBucketWebsiteResponse,
  )
where

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
import Amazonka.S3.Types

-- | /See:/ 'newPutBucketWebsite' smart constructor.
data PutBucketWebsite = PutBucketWebsite'
  { -- | Indicates the algorithm used to create the checksum for the object when
    -- using the SDK. This header will not provide any additional functionality
    -- if not using the SDK. When sending this header, there must be a
    -- corresponding @x-amz-checksum@ or @x-amz-trailer@ header sent.
    -- Otherwise, Amazon S3 fails the request with the HTTP status code
    -- @400 Bad Request@. For more information, see
    -- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html Checking object integrity>
    -- in the /Amazon S3 User Guide/.
    --
    -- If you provide an individual checksum, Amazon S3 ignores any provided
    -- @ChecksumAlgorithm@ parameter.
    PutBucketWebsite -> Maybe ChecksumAlgorithm
checksumAlgorithm :: Prelude.Maybe ChecksumAlgorithm,
    -- | The base64-encoded 128-bit MD5 digest of the data. You must use this
    -- header as a message integrity check to verify that the request body was
    -- not corrupted in transit. For more information, see
    -- <http://www.ietf.org/rfc/rfc1864.txt RFC 1864>.
    --
    -- For requests made using the Amazon Web Services Command Line Interface
    -- (CLI) or Amazon Web Services SDKs, this field is calculated
    -- automatically.
    PutBucketWebsite -> Maybe Text
contentMD5 :: Prelude.Maybe Prelude.Text,
    -- | The account ID of the expected bucket owner. If the bucket is owned by a
    -- different account, the request fails with the HTTP status code
    -- @403 Forbidden@ (access denied).
    PutBucketWebsite -> Maybe Text
expectedBucketOwner :: Prelude.Maybe Prelude.Text,
    -- | The bucket name.
    PutBucketWebsite -> BucketName
bucket :: BucketName,
    -- | Container for the request.
    PutBucketWebsite -> WebsiteConfiguration
websiteConfiguration :: WebsiteConfiguration
  }
  deriving (PutBucketWebsite -> PutBucketWebsite -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PutBucketWebsite -> PutBucketWebsite -> Bool
$c/= :: PutBucketWebsite -> PutBucketWebsite -> Bool
== :: PutBucketWebsite -> PutBucketWebsite -> Bool
$c== :: PutBucketWebsite -> PutBucketWebsite -> Bool
Prelude.Eq, ReadPrec [PutBucketWebsite]
ReadPrec PutBucketWebsite
Int -> ReadS PutBucketWebsite
ReadS [PutBucketWebsite]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PutBucketWebsite]
$creadListPrec :: ReadPrec [PutBucketWebsite]
readPrec :: ReadPrec PutBucketWebsite
$creadPrec :: ReadPrec PutBucketWebsite
readList :: ReadS [PutBucketWebsite]
$creadList :: ReadS [PutBucketWebsite]
readsPrec :: Int -> ReadS PutBucketWebsite
$creadsPrec :: Int -> ReadS PutBucketWebsite
Prelude.Read, Int -> PutBucketWebsite -> ShowS
[PutBucketWebsite] -> ShowS
PutBucketWebsite -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PutBucketWebsite] -> ShowS
$cshowList :: [PutBucketWebsite] -> ShowS
show :: PutBucketWebsite -> String
$cshow :: PutBucketWebsite -> String
showsPrec :: Int -> PutBucketWebsite -> ShowS
$cshowsPrec :: Int -> PutBucketWebsite -> ShowS
Prelude.Show, forall x. Rep PutBucketWebsite x -> PutBucketWebsite
forall x. PutBucketWebsite -> Rep PutBucketWebsite x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PutBucketWebsite x -> PutBucketWebsite
$cfrom :: forall x. PutBucketWebsite -> Rep PutBucketWebsite x
Prelude.Generic)

-- |
-- Create a value of 'PutBucketWebsite' 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:
--
-- 'checksumAlgorithm', 'putBucketWebsite_checksumAlgorithm' - Indicates the algorithm used to create the checksum for the object when
-- using the SDK. This header will not provide any additional functionality
-- if not using the SDK. When sending this header, there must be a
-- corresponding @x-amz-checksum@ or @x-amz-trailer@ header sent.
-- Otherwise, Amazon S3 fails the request with the HTTP status code
-- @400 Bad Request@. For more information, see
-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html Checking object integrity>
-- in the /Amazon S3 User Guide/.
--
-- If you provide an individual checksum, Amazon S3 ignores any provided
-- @ChecksumAlgorithm@ parameter.
--
-- 'contentMD5', 'putBucketWebsite_contentMD5' - The base64-encoded 128-bit MD5 digest of the data. You must use this
-- header as a message integrity check to verify that the request body was
-- not corrupted in transit. For more information, see
-- <http://www.ietf.org/rfc/rfc1864.txt RFC 1864>.
--
-- For requests made using the Amazon Web Services Command Line Interface
-- (CLI) or Amazon Web Services SDKs, this field is calculated
-- automatically.
--
-- 'expectedBucketOwner', 'putBucketWebsite_expectedBucketOwner' - The account ID of the expected bucket owner. If the bucket is owned by a
-- different account, the request fails with the HTTP status code
-- @403 Forbidden@ (access denied).
--
-- 'bucket', 'putBucketWebsite_bucket' - The bucket name.
--
-- 'websiteConfiguration', 'putBucketWebsite_websiteConfiguration' - Container for the request.
newPutBucketWebsite ::
  -- | 'bucket'
  BucketName ->
  -- | 'websiteConfiguration'
  WebsiteConfiguration ->
  PutBucketWebsite
newPutBucketWebsite :: BucketName -> WebsiteConfiguration -> PutBucketWebsite
newPutBucketWebsite BucketName
pBucket_ WebsiteConfiguration
pWebsiteConfiguration_ =
  PutBucketWebsite'
    { $sel:checksumAlgorithm:PutBucketWebsite' :: Maybe ChecksumAlgorithm
checksumAlgorithm =
        forall a. Maybe a
Prelude.Nothing,
      $sel:contentMD5:PutBucketWebsite' :: Maybe Text
contentMD5 = forall a. Maybe a
Prelude.Nothing,
      $sel:expectedBucketOwner:PutBucketWebsite' :: Maybe Text
expectedBucketOwner = forall a. Maybe a
Prelude.Nothing,
      $sel:bucket:PutBucketWebsite' :: BucketName
bucket = BucketName
pBucket_,
      $sel:websiteConfiguration:PutBucketWebsite' :: WebsiteConfiguration
websiteConfiguration = WebsiteConfiguration
pWebsiteConfiguration_
    }

-- | Indicates the algorithm used to create the checksum for the object when
-- using the SDK. This header will not provide any additional functionality
-- if not using the SDK. When sending this header, there must be a
-- corresponding @x-amz-checksum@ or @x-amz-trailer@ header sent.
-- Otherwise, Amazon S3 fails the request with the HTTP status code
-- @400 Bad Request@. For more information, see
-- <https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html Checking object integrity>
-- in the /Amazon S3 User Guide/.
--
-- If you provide an individual checksum, Amazon S3 ignores any provided
-- @ChecksumAlgorithm@ parameter.
putBucketWebsite_checksumAlgorithm :: Lens.Lens' PutBucketWebsite (Prelude.Maybe ChecksumAlgorithm)
putBucketWebsite_checksumAlgorithm :: Lens' PutBucketWebsite (Maybe ChecksumAlgorithm)
putBucketWebsite_checksumAlgorithm = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutBucketWebsite' {Maybe ChecksumAlgorithm
checksumAlgorithm :: Maybe ChecksumAlgorithm
$sel:checksumAlgorithm:PutBucketWebsite' :: PutBucketWebsite -> Maybe ChecksumAlgorithm
checksumAlgorithm} -> Maybe ChecksumAlgorithm
checksumAlgorithm) (\s :: PutBucketWebsite
s@PutBucketWebsite' {} Maybe ChecksumAlgorithm
a -> PutBucketWebsite
s {$sel:checksumAlgorithm:PutBucketWebsite' :: Maybe ChecksumAlgorithm
checksumAlgorithm = Maybe ChecksumAlgorithm
a} :: PutBucketWebsite)

-- | The base64-encoded 128-bit MD5 digest of the data. You must use this
-- header as a message integrity check to verify that the request body was
-- not corrupted in transit. For more information, see
-- <http://www.ietf.org/rfc/rfc1864.txt RFC 1864>.
--
-- For requests made using the Amazon Web Services Command Line Interface
-- (CLI) or Amazon Web Services SDKs, this field is calculated
-- automatically.
putBucketWebsite_contentMD5 :: Lens.Lens' PutBucketWebsite (Prelude.Maybe Prelude.Text)
putBucketWebsite_contentMD5 :: Lens' PutBucketWebsite (Maybe Text)
putBucketWebsite_contentMD5 = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutBucketWebsite' {Maybe Text
contentMD5 :: Maybe Text
$sel:contentMD5:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
contentMD5} -> Maybe Text
contentMD5) (\s :: PutBucketWebsite
s@PutBucketWebsite' {} Maybe Text
a -> PutBucketWebsite
s {$sel:contentMD5:PutBucketWebsite' :: Maybe Text
contentMD5 = Maybe Text
a} :: PutBucketWebsite)

-- | The account ID of the expected bucket owner. If the bucket is owned by a
-- different account, the request fails with the HTTP status code
-- @403 Forbidden@ (access denied).
putBucketWebsite_expectedBucketOwner :: Lens.Lens' PutBucketWebsite (Prelude.Maybe Prelude.Text)
putBucketWebsite_expectedBucketOwner :: Lens' PutBucketWebsite (Maybe Text)
putBucketWebsite_expectedBucketOwner = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutBucketWebsite' {Maybe Text
expectedBucketOwner :: Maybe Text
$sel:expectedBucketOwner:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
expectedBucketOwner} -> Maybe Text
expectedBucketOwner) (\s :: PutBucketWebsite
s@PutBucketWebsite' {} Maybe Text
a -> PutBucketWebsite
s {$sel:expectedBucketOwner:PutBucketWebsite' :: Maybe Text
expectedBucketOwner = Maybe Text
a} :: PutBucketWebsite)

-- | The bucket name.
putBucketWebsite_bucket :: Lens.Lens' PutBucketWebsite BucketName
putBucketWebsite_bucket :: Lens' PutBucketWebsite BucketName
putBucketWebsite_bucket = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutBucketWebsite' {BucketName
bucket :: BucketName
$sel:bucket:PutBucketWebsite' :: PutBucketWebsite -> BucketName
bucket} -> BucketName
bucket) (\s :: PutBucketWebsite
s@PutBucketWebsite' {} BucketName
a -> PutBucketWebsite
s {$sel:bucket:PutBucketWebsite' :: BucketName
bucket = BucketName
a} :: PutBucketWebsite)

-- | Container for the request.
putBucketWebsite_websiteConfiguration :: Lens.Lens' PutBucketWebsite WebsiteConfiguration
putBucketWebsite_websiteConfiguration :: Lens' PutBucketWebsite WebsiteConfiguration
putBucketWebsite_websiteConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PutBucketWebsite' {WebsiteConfiguration
websiteConfiguration :: WebsiteConfiguration
$sel:websiteConfiguration:PutBucketWebsite' :: PutBucketWebsite -> WebsiteConfiguration
websiteConfiguration} -> WebsiteConfiguration
websiteConfiguration) (\s :: PutBucketWebsite
s@PutBucketWebsite' {} WebsiteConfiguration
a -> PutBucketWebsite
s {$sel:websiteConfiguration:PutBucketWebsite' :: WebsiteConfiguration
websiteConfiguration = WebsiteConfiguration
a} :: PutBucketWebsite)

instance Core.AWSRequest PutBucketWebsite where
  type
    AWSResponse PutBucketWebsite =
      PutBucketWebsiteResponse
  request :: (Service -> Service)
-> PutBucketWebsite -> Request PutBucketWebsite
request Service -> Service
overrides =
    forall a. Request a -> Request a
Request.s3vhost
      forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a. (ToRequest a, ToElement a) => Service -> a -> Request a
Request.putXML (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy PutBucketWebsite
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse PutBucketWebsite)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull PutBucketWebsiteResponse
PutBucketWebsiteResponse'

instance Prelude.Hashable PutBucketWebsite where
  hashWithSalt :: Int -> PutBucketWebsite -> Int
hashWithSalt Int
_salt PutBucketWebsite' {Maybe Text
Maybe ChecksumAlgorithm
BucketName
WebsiteConfiguration
websiteConfiguration :: WebsiteConfiguration
bucket :: BucketName
expectedBucketOwner :: Maybe Text
contentMD5 :: Maybe Text
checksumAlgorithm :: Maybe ChecksumAlgorithm
$sel:websiteConfiguration:PutBucketWebsite' :: PutBucketWebsite -> WebsiteConfiguration
$sel:bucket:PutBucketWebsite' :: PutBucketWebsite -> BucketName
$sel:expectedBucketOwner:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:contentMD5:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:checksumAlgorithm:PutBucketWebsite' :: PutBucketWebsite -> Maybe ChecksumAlgorithm
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ChecksumAlgorithm
checksumAlgorithm
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
contentMD5
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
expectedBucketOwner
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` BucketName
bucket
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` WebsiteConfiguration
websiteConfiguration

instance Prelude.NFData PutBucketWebsite where
  rnf :: PutBucketWebsite -> ()
rnf PutBucketWebsite' {Maybe Text
Maybe ChecksumAlgorithm
BucketName
WebsiteConfiguration
websiteConfiguration :: WebsiteConfiguration
bucket :: BucketName
expectedBucketOwner :: Maybe Text
contentMD5 :: Maybe Text
checksumAlgorithm :: Maybe ChecksumAlgorithm
$sel:websiteConfiguration:PutBucketWebsite' :: PutBucketWebsite -> WebsiteConfiguration
$sel:bucket:PutBucketWebsite' :: PutBucketWebsite -> BucketName
$sel:expectedBucketOwner:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:contentMD5:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:checksumAlgorithm:PutBucketWebsite' :: PutBucketWebsite -> Maybe ChecksumAlgorithm
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ChecksumAlgorithm
checksumAlgorithm
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
contentMD5
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
expectedBucketOwner
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf BucketName
bucket
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf WebsiteConfiguration
websiteConfiguration

instance Data.ToElement PutBucketWebsite where
  toElement :: PutBucketWebsite -> Element
toElement PutBucketWebsite' {Maybe Text
Maybe ChecksumAlgorithm
BucketName
WebsiteConfiguration
websiteConfiguration :: WebsiteConfiguration
bucket :: BucketName
expectedBucketOwner :: Maybe Text
contentMD5 :: Maybe Text
checksumAlgorithm :: Maybe ChecksumAlgorithm
$sel:websiteConfiguration:PutBucketWebsite' :: PutBucketWebsite -> WebsiteConfiguration
$sel:bucket:PutBucketWebsite' :: PutBucketWebsite -> BucketName
$sel:expectedBucketOwner:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:contentMD5:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:checksumAlgorithm:PutBucketWebsite' :: PutBucketWebsite -> Maybe ChecksumAlgorithm
..} =
    forall a. ToXML a => Name -> a -> Element
Data.mkElement
      Name
"{http://s3.amazonaws.com/doc/2006-03-01/}WebsiteConfiguration"
      WebsiteConfiguration
websiteConfiguration

instance Data.ToHeaders PutBucketWebsite where
  toHeaders :: PutBucketWebsite -> [Header]
toHeaders PutBucketWebsite' {Maybe Text
Maybe ChecksumAlgorithm
BucketName
WebsiteConfiguration
websiteConfiguration :: WebsiteConfiguration
bucket :: BucketName
expectedBucketOwner :: Maybe Text
contentMD5 :: Maybe Text
checksumAlgorithm :: Maybe ChecksumAlgorithm
$sel:websiteConfiguration:PutBucketWebsite' :: PutBucketWebsite -> WebsiteConfiguration
$sel:bucket:PutBucketWebsite' :: PutBucketWebsite -> BucketName
$sel:expectedBucketOwner:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:contentMD5:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:checksumAlgorithm:PutBucketWebsite' :: PutBucketWebsite -> Maybe ChecksumAlgorithm
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ HeaderName
"x-amz-sdk-checksum-algorithm"
          forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# Maybe ChecksumAlgorithm
checksumAlgorithm,
        HeaderName
"Content-MD5" forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# Maybe Text
contentMD5,
        HeaderName
"x-amz-expected-bucket-owner"
          forall a. ToHeader a => HeaderName -> a -> [Header]
Data.=# Maybe Text
expectedBucketOwner
      ]

instance Data.ToPath PutBucketWebsite where
  toPath :: PutBucketWebsite -> ByteString
toPath PutBucketWebsite' {Maybe Text
Maybe ChecksumAlgorithm
BucketName
WebsiteConfiguration
websiteConfiguration :: WebsiteConfiguration
bucket :: BucketName
expectedBucketOwner :: Maybe Text
contentMD5 :: Maybe Text
checksumAlgorithm :: Maybe ChecksumAlgorithm
$sel:websiteConfiguration:PutBucketWebsite' :: PutBucketWebsite -> WebsiteConfiguration
$sel:bucket:PutBucketWebsite' :: PutBucketWebsite -> BucketName
$sel:expectedBucketOwner:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:contentMD5:PutBucketWebsite' :: PutBucketWebsite -> Maybe Text
$sel:checksumAlgorithm:PutBucketWebsite' :: PutBucketWebsite -> Maybe ChecksumAlgorithm
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat [ByteString
"/", forall a. ToByteString a => a -> ByteString
Data.toBS BucketName
bucket]

instance Data.ToQuery PutBucketWebsite where
  toQuery :: PutBucketWebsite -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const (forall a. Monoid a => [a] -> a
Prelude.mconcat [QueryString
"website"])

-- | /See:/ 'newPutBucketWebsiteResponse' smart constructor.
data PutBucketWebsiteResponse = PutBucketWebsiteResponse'
  {
  }
  deriving (PutBucketWebsiteResponse -> PutBucketWebsiteResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PutBucketWebsiteResponse -> PutBucketWebsiteResponse -> Bool
$c/= :: PutBucketWebsiteResponse -> PutBucketWebsiteResponse -> Bool
== :: PutBucketWebsiteResponse -> PutBucketWebsiteResponse -> Bool
$c== :: PutBucketWebsiteResponse -> PutBucketWebsiteResponse -> Bool
Prelude.Eq, ReadPrec [PutBucketWebsiteResponse]
ReadPrec PutBucketWebsiteResponse
Int -> ReadS PutBucketWebsiteResponse
ReadS [PutBucketWebsiteResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PutBucketWebsiteResponse]
$creadListPrec :: ReadPrec [PutBucketWebsiteResponse]
readPrec :: ReadPrec PutBucketWebsiteResponse
$creadPrec :: ReadPrec PutBucketWebsiteResponse
readList :: ReadS [PutBucketWebsiteResponse]
$creadList :: ReadS [PutBucketWebsiteResponse]
readsPrec :: Int -> ReadS PutBucketWebsiteResponse
$creadsPrec :: Int -> ReadS PutBucketWebsiteResponse
Prelude.Read, Int -> PutBucketWebsiteResponse -> ShowS
[PutBucketWebsiteResponse] -> ShowS
PutBucketWebsiteResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PutBucketWebsiteResponse] -> ShowS
$cshowList :: [PutBucketWebsiteResponse] -> ShowS
show :: PutBucketWebsiteResponse -> String
$cshow :: PutBucketWebsiteResponse -> String
showsPrec :: Int -> PutBucketWebsiteResponse -> ShowS
$cshowsPrec :: Int -> PutBucketWebsiteResponse -> ShowS
Prelude.Show, forall x.
Rep PutBucketWebsiteResponse x -> PutBucketWebsiteResponse
forall x.
PutBucketWebsiteResponse -> Rep PutBucketWebsiteResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep PutBucketWebsiteResponse x -> PutBucketWebsiteResponse
$cfrom :: forall x.
PutBucketWebsiteResponse -> Rep PutBucketWebsiteResponse x
Prelude.Generic)

-- |
-- Create a value of 'PutBucketWebsiteResponse' 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.
newPutBucketWebsiteResponse ::
  PutBucketWebsiteResponse
newPutBucketWebsiteResponse :: PutBucketWebsiteResponse
newPutBucketWebsiteResponse =
  PutBucketWebsiteResponse
PutBucketWebsiteResponse'

instance Prelude.NFData PutBucketWebsiteResponse where
  rnf :: PutBucketWebsiteResponse -> ()
rnf PutBucketWebsiteResponse
_ = ()