{-# 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.GetBucketWebsite
-- 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 the website configuration for a bucket. To host website on
-- Amazon S3, you can configure a bucket as website by adding a website
-- configuration. For more information about hosting websites, see
-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html Hosting Websites on Amazon S3>.
--
-- This GET action requires the @S3:GetBucketWebsite@ permission. By
-- default, only the bucket owner can read the bucket website
-- configuration. However, bucket owners can allow other users to read the
-- website configuration by writing a bucket policy granting them the
-- @S3:GetBucketWebsite@ permission.
--
-- The following operations are related to @DeleteBucketWebsite@:
--
-- -   <https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketWebsite.html DeleteBucketWebsite>
--
-- -   <https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html PutBucketWebsite>
module Amazonka.S3.GetBucketWebsite
  ( -- * Creating a Request
    GetBucketWebsite (..),
    newGetBucketWebsite,

    -- * Request Lenses
    getBucketWebsite_expectedBucketOwner,
    getBucketWebsite_bucket,

    -- * Destructuring the Response
    GetBucketWebsiteResponse (..),
    newGetBucketWebsiteResponse,

    -- * Response Lenses
    getBucketWebsiteResponse_errorDocument,
    getBucketWebsiteResponse_indexDocument,
    getBucketWebsiteResponse_redirectAllRequestsTo,
    getBucketWebsiteResponse_routingRules,
    getBucketWebsiteResponse_httpStatus,
  )
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:/ 'newGetBucketWebsite' smart constructor.
data GetBucketWebsite = GetBucketWebsite'
  { -- | 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).
    GetBucketWebsite -> Maybe Text
expectedBucketOwner :: Prelude.Maybe Prelude.Text,
    -- | The bucket name for which to get the website configuration.
    GetBucketWebsite -> BucketName
bucket :: BucketName
  }
  deriving (GetBucketWebsite -> GetBucketWebsite -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetBucketWebsite -> GetBucketWebsite -> Bool
$c/= :: GetBucketWebsite -> GetBucketWebsite -> Bool
== :: GetBucketWebsite -> GetBucketWebsite -> Bool
$c== :: GetBucketWebsite -> GetBucketWebsite -> Bool
Prelude.Eq, ReadPrec [GetBucketWebsite]
ReadPrec GetBucketWebsite
Int -> ReadS GetBucketWebsite
ReadS [GetBucketWebsite]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetBucketWebsite]
$creadListPrec :: ReadPrec [GetBucketWebsite]
readPrec :: ReadPrec GetBucketWebsite
$creadPrec :: ReadPrec GetBucketWebsite
readList :: ReadS [GetBucketWebsite]
$creadList :: ReadS [GetBucketWebsite]
readsPrec :: Int -> ReadS GetBucketWebsite
$creadsPrec :: Int -> ReadS GetBucketWebsite
Prelude.Read, Int -> GetBucketWebsite -> ShowS
[GetBucketWebsite] -> ShowS
GetBucketWebsite -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetBucketWebsite] -> ShowS
$cshowList :: [GetBucketWebsite] -> ShowS
show :: GetBucketWebsite -> String
$cshow :: GetBucketWebsite -> String
showsPrec :: Int -> GetBucketWebsite -> ShowS
$cshowsPrec :: Int -> GetBucketWebsite -> ShowS
Prelude.Show, forall x. Rep GetBucketWebsite x -> GetBucketWebsite
forall x. GetBucketWebsite -> Rep GetBucketWebsite x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetBucketWebsite x -> GetBucketWebsite
$cfrom :: forall x. GetBucketWebsite -> Rep GetBucketWebsite x
Prelude.Generic)

-- |
-- Create a value of 'GetBucketWebsite' 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:
--
-- 'expectedBucketOwner', 'getBucketWebsite_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', 'getBucketWebsite_bucket' - The bucket name for which to get the website configuration.
newGetBucketWebsite ::
  -- | 'bucket'
  BucketName ->
  GetBucketWebsite
newGetBucketWebsite :: BucketName -> GetBucketWebsite
newGetBucketWebsite BucketName
pBucket_ =
  GetBucketWebsite'
    { $sel:expectedBucketOwner:GetBucketWebsite' :: Maybe Text
expectedBucketOwner =
        forall a. Maybe a
Prelude.Nothing,
      $sel:bucket:GetBucketWebsite' :: BucketName
bucket = BucketName
pBucket_
    }

-- | 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).
getBucketWebsite_expectedBucketOwner :: Lens.Lens' GetBucketWebsite (Prelude.Maybe Prelude.Text)
getBucketWebsite_expectedBucketOwner :: Lens' GetBucketWebsite (Maybe Text)
getBucketWebsite_expectedBucketOwner = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketWebsite' {Maybe Text
expectedBucketOwner :: Maybe Text
$sel:expectedBucketOwner:GetBucketWebsite' :: GetBucketWebsite -> Maybe Text
expectedBucketOwner} -> Maybe Text
expectedBucketOwner) (\s :: GetBucketWebsite
s@GetBucketWebsite' {} Maybe Text
a -> GetBucketWebsite
s {$sel:expectedBucketOwner:GetBucketWebsite' :: Maybe Text
expectedBucketOwner = Maybe Text
a} :: GetBucketWebsite)

-- | The bucket name for which to get the website configuration.
getBucketWebsite_bucket :: Lens.Lens' GetBucketWebsite BucketName
getBucketWebsite_bucket :: Lens' GetBucketWebsite BucketName
getBucketWebsite_bucket = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketWebsite' {BucketName
bucket :: BucketName
$sel:bucket:GetBucketWebsite' :: GetBucketWebsite -> BucketName
bucket} -> BucketName
bucket) (\s :: GetBucketWebsite
s@GetBucketWebsite' {} BucketName
a -> GetBucketWebsite
s {$sel:bucket:GetBucketWebsite' :: BucketName
bucket = BucketName
a} :: GetBucketWebsite)

instance Core.AWSRequest GetBucketWebsite where
  type
    AWSResponse GetBucketWebsite =
      GetBucketWebsiteResponse
  request :: (Service -> Service)
-> GetBucketWebsite -> Request GetBucketWebsite
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 => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy GetBucketWebsite
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetBucketWebsite)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe ErrorDocument
-> Maybe IndexDocument
-> Maybe RedirectAllRequestsTo
-> Maybe [RoutingRule]
-> Int
-> GetBucketWebsiteResponse
GetBucketWebsiteResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ErrorDocument")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"IndexDocument")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"RedirectAllRequestsTo")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"RoutingRules"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"RoutingRule")
                        )
            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 GetBucketWebsite where
  hashWithSalt :: Int -> GetBucketWebsite -> Int
hashWithSalt Int
_salt GetBucketWebsite' {Maybe Text
BucketName
bucket :: BucketName
expectedBucketOwner :: Maybe Text
$sel:bucket:GetBucketWebsite' :: GetBucketWebsite -> BucketName
$sel:expectedBucketOwner:GetBucketWebsite' :: GetBucketWebsite -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
expectedBucketOwner
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` BucketName
bucket

instance Prelude.NFData GetBucketWebsite where
  rnf :: GetBucketWebsite -> ()
rnf GetBucketWebsite' {Maybe Text
BucketName
bucket :: BucketName
expectedBucketOwner :: Maybe Text
$sel:bucket:GetBucketWebsite' :: GetBucketWebsite -> BucketName
$sel:expectedBucketOwner:GetBucketWebsite' :: GetBucketWebsite -> Maybe Text
..} =
    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

instance Data.ToHeaders GetBucketWebsite where
  toHeaders :: GetBucketWebsite -> ResponseHeaders
toHeaders GetBucketWebsite' {Maybe Text
BucketName
bucket :: BucketName
expectedBucketOwner :: Maybe Text
$sel:bucket:GetBucketWebsite' :: GetBucketWebsite -> BucketName
$sel:expectedBucketOwner:GetBucketWebsite' :: GetBucketWebsite -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ HeaderName
"x-amz-expected-bucket-owner"
          forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Maybe Text
expectedBucketOwner
      ]

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

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

-- | /See:/ 'newGetBucketWebsiteResponse' smart constructor.
data GetBucketWebsiteResponse = GetBucketWebsiteResponse'
  { -- | The object key name of the website error document to use for 4XX class
    -- errors.
    GetBucketWebsiteResponse -> Maybe ErrorDocument
errorDocument :: Prelude.Maybe ErrorDocument,
    -- | The name of the index document for the website (for example
    -- @index.html@).
    GetBucketWebsiteResponse -> Maybe IndexDocument
indexDocument :: Prelude.Maybe IndexDocument,
    -- | Specifies the redirect behavior of all requests to a website endpoint of
    -- an Amazon S3 bucket.
    GetBucketWebsiteResponse -> Maybe RedirectAllRequestsTo
redirectAllRequestsTo :: Prelude.Maybe RedirectAllRequestsTo,
    -- | Rules that define when a redirect is applied and the redirect behavior.
    GetBucketWebsiteResponse -> Maybe [RoutingRule]
routingRules :: Prelude.Maybe [RoutingRule],
    -- | The response's http status code.
    GetBucketWebsiteResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (GetBucketWebsiteResponse -> GetBucketWebsiteResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetBucketWebsiteResponse -> GetBucketWebsiteResponse -> Bool
$c/= :: GetBucketWebsiteResponse -> GetBucketWebsiteResponse -> Bool
== :: GetBucketWebsiteResponse -> GetBucketWebsiteResponse -> Bool
$c== :: GetBucketWebsiteResponse -> GetBucketWebsiteResponse -> Bool
Prelude.Eq, ReadPrec [GetBucketWebsiteResponse]
ReadPrec GetBucketWebsiteResponse
Int -> ReadS GetBucketWebsiteResponse
ReadS [GetBucketWebsiteResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetBucketWebsiteResponse]
$creadListPrec :: ReadPrec [GetBucketWebsiteResponse]
readPrec :: ReadPrec GetBucketWebsiteResponse
$creadPrec :: ReadPrec GetBucketWebsiteResponse
readList :: ReadS [GetBucketWebsiteResponse]
$creadList :: ReadS [GetBucketWebsiteResponse]
readsPrec :: Int -> ReadS GetBucketWebsiteResponse
$creadsPrec :: Int -> ReadS GetBucketWebsiteResponse
Prelude.Read, Int -> GetBucketWebsiteResponse -> ShowS
[GetBucketWebsiteResponse] -> ShowS
GetBucketWebsiteResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetBucketWebsiteResponse] -> ShowS
$cshowList :: [GetBucketWebsiteResponse] -> ShowS
show :: GetBucketWebsiteResponse -> String
$cshow :: GetBucketWebsiteResponse -> String
showsPrec :: Int -> GetBucketWebsiteResponse -> ShowS
$cshowsPrec :: Int -> GetBucketWebsiteResponse -> ShowS
Prelude.Show, forall x.
Rep GetBucketWebsiteResponse x -> GetBucketWebsiteResponse
forall x.
GetBucketWebsiteResponse -> Rep GetBucketWebsiteResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetBucketWebsiteResponse x -> GetBucketWebsiteResponse
$cfrom :: forall x.
GetBucketWebsiteResponse -> Rep GetBucketWebsiteResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetBucketWebsiteResponse' 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:
--
-- 'errorDocument', 'getBucketWebsiteResponse_errorDocument' - The object key name of the website error document to use for 4XX class
-- errors.
--
-- 'indexDocument', 'getBucketWebsiteResponse_indexDocument' - The name of the index document for the website (for example
-- @index.html@).
--
-- 'redirectAllRequestsTo', 'getBucketWebsiteResponse_redirectAllRequestsTo' - Specifies the redirect behavior of all requests to a website endpoint of
-- an Amazon S3 bucket.
--
-- 'routingRules', 'getBucketWebsiteResponse_routingRules' - Rules that define when a redirect is applied and the redirect behavior.
--
-- 'httpStatus', 'getBucketWebsiteResponse_httpStatus' - The response's http status code.
newGetBucketWebsiteResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  GetBucketWebsiteResponse
newGetBucketWebsiteResponse :: Int -> GetBucketWebsiteResponse
newGetBucketWebsiteResponse Int
pHttpStatus_ =
  GetBucketWebsiteResponse'
    { $sel:errorDocument:GetBucketWebsiteResponse' :: Maybe ErrorDocument
errorDocument =
        forall a. Maybe a
Prelude.Nothing,
      $sel:indexDocument:GetBucketWebsiteResponse' :: Maybe IndexDocument
indexDocument = forall a. Maybe a
Prelude.Nothing,
      $sel:redirectAllRequestsTo:GetBucketWebsiteResponse' :: Maybe RedirectAllRequestsTo
redirectAllRequestsTo = forall a. Maybe a
Prelude.Nothing,
      $sel:routingRules:GetBucketWebsiteResponse' :: Maybe [RoutingRule]
routingRules = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:GetBucketWebsiteResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The object key name of the website error document to use for 4XX class
-- errors.
getBucketWebsiteResponse_errorDocument :: Lens.Lens' GetBucketWebsiteResponse (Prelude.Maybe ErrorDocument)
getBucketWebsiteResponse_errorDocument :: Lens' GetBucketWebsiteResponse (Maybe ErrorDocument)
getBucketWebsiteResponse_errorDocument = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketWebsiteResponse' {Maybe ErrorDocument
errorDocument :: Maybe ErrorDocument
$sel:errorDocument:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Maybe ErrorDocument
errorDocument} -> Maybe ErrorDocument
errorDocument) (\s :: GetBucketWebsiteResponse
s@GetBucketWebsiteResponse' {} Maybe ErrorDocument
a -> GetBucketWebsiteResponse
s {$sel:errorDocument:GetBucketWebsiteResponse' :: Maybe ErrorDocument
errorDocument = Maybe ErrorDocument
a} :: GetBucketWebsiteResponse)

-- | The name of the index document for the website (for example
-- @index.html@).
getBucketWebsiteResponse_indexDocument :: Lens.Lens' GetBucketWebsiteResponse (Prelude.Maybe IndexDocument)
getBucketWebsiteResponse_indexDocument :: Lens' GetBucketWebsiteResponse (Maybe IndexDocument)
getBucketWebsiteResponse_indexDocument = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketWebsiteResponse' {Maybe IndexDocument
indexDocument :: Maybe IndexDocument
$sel:indexDocument:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Maybe IndexDocument
indexDocument} -> Maybe IndexDocument
indexDocument) (\s :: GetBucketWebsiteResponse
s@GetBucketWebsiteResponse' {} Maybe IndexDocument
a -> GetBucketWebsiteResponse
s {$sel:indexDocument:GetBucketWebsiteResponse' :: Maybe IndexDocument
indexDocument = Maybe IndexDocument
a} :: GetBucketWebsiteResponse)

-- | Specifies the redirect behavior of all requests to a website endpoint of
-- an Amazon S3 bucket.
getBucketWebsiteResponse_redirectAllRequestsTo :: Lens.Lens' GetBucketWebsiteResponse (Prelude.Maybe RedirectAllRequestsTo)
getBucketWebsiteResponse_redirectAllRequestsTo :: Lens' GetBucketWebsiteResponse (Maybe RedirectAllRequestsTo)
getBucketWebsiteResponse_redirectAllRequestsTo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketWebsiteResponse' {Maybe RedirectAllRequestsTo
redirectAllRequestsTo :: Maybe RedirectAllRequestsTo
$sel:redirectAllRequestsTo:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Maybe RedirectAllRequestsTo
redirectAllRequestsTo} -> Maybe RedirectAllRequestsTo
redirectAllRequestsTo) (\s :: GetBucketWebsiteResponse
s@GetBucketWebsiteResponse' {} Maybe RedirectAllRequestsTo
a -> GetBucketWebsiteResponse
s {$sel:redirectAllRequestsTo:GetBucketWebsiteResponse' :: Maybe RedirectAllRequestsTo
redirectAllRequestsTo = Maybe RedirectAllRequestsTo
a} :: GetBucketWebsiteResponse)

-- | Rules that define when a redirect is applied and the redirect behavior.
getBucketWebsiteResponse_routingRules :: Lens.Lens' GetBucketWebsiteResponse (Prelude.Maybe [RoutingRule])
getBucketWebsiteResponse_routingRules :: Lens' GetBucketWebsiteResponse (Maybe [RoutingRule])
getBucketWebsiteResponse_routingRules = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketWebsiteResponse' {Maybe [RoutingRule]
routingRules :: Maybe [RoutingRule]
$sel:routingRules:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Maybe [RoutingRule]
routingRules} -> Maybe [RoutingRule]
routingRules) (\s :: GetBucketWebsiteResponse
s@GetBucketWebsiteResponse' {} Maybe [RoutingRule]
a -> GetBucketWebsiteResponse
s {$sel:routingRules:GetBucketWebsiteResponse' :: Maybe [RoutingRule]
routingRules = Maybe [RoutingRule]
a} :: GetBucketWebsiteResponse) 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.
getBucketWebsiteResponse_httpStatus :: Lens.Lens' GetBucketWebsiteResponse Prelude.Int
getBucketWebsiteResponse_httpStatus :: Lens' GetBucketWebsiteResponse Int
getBucketWebsiteResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetBucketWebsiteResponse' {Int
httpStatus :: Int
$sel:httpStatus:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: GetBucketWebsiteResponse
s@GetBucketWebsiteResponse' {} Int
a -> GetBucketWebsiteResponse
s {$sel:httpStatus:GetBucketWebsiteResponse' :: Int
httpStatus = Int
a} :: GetBucketWebsiteResponse)

instance Prelude.NFData GetBucketWebsiteResponse where
  rnf :: GetBucketWebsiteResponse -> ()
rnf GetBucketWebsiteResponse' {Int
Maybe [RoutingRule]
Maybe ErrorDocument
Maybe IndexDocument
Maybe RedirectAllRequestsTo
httpStatus :: Int
routingRules :: Maybe [RoutingRule]
redirectAllRequestsTo :: Maybe RedirectAllRequestsTo
indexDocument :: Maybe IndexDocument
errorDocument :: Maybe ErrorDocument
$sel:httpStatus:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Int
$sel:routingRules:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Maybe [RoutingRule]
$sel:redirectAllRequestsTo:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Maybe RedirectAllRequestsTo
$sel:indexDocument:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Maybe IndexDocument
$sel:errorDocument:GetBucketWebsiteResponse' :: GetBucketWebsiteResponse -> Maybe ErrorDocument
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ErrorDocument
errorDocument
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe IndexDocument
indexDocument
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RedirectAllRequestsTo
redirectAllRequestsTo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [RoutingRule]
routingRules
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus