module Network.AWS.S3.PutBucketWebsite
    (
    
      PutBucketWebsite
    
    , putBucketWebsite
    
    , pbwBucket
    , pbwContentMD5
    , pbwWebsiteConfiguration
    
    , PutBucketWebsiteResponse
    
    , putBucketWebsiteResponse
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.S3
import Network.AWS.S3.Types
import qualified GHC.Exts
data PutBucketWebsite = PutBucketWebsite
    { _pbwBucket               :: Text
    , _pbwContentMD5           :: Maybe Text
    , _pbwWebsiteConfiguration :: WebsiteConfiguration
    } deriving (Eq, Show)
putBucketWebsite :: Text 
                 -> WebsiteConfiguration 
                 -> PutBucketWebsite
putBucketWebsite p1 p2 = PutBucketWebsite
    { _pbwBucket               = p1
    , _pbwWebsiteConfiguration = p2
    , _pbwContentMD5           = Nothing
    }
pbwBucket :: Lens' PutBucketWebsite Text
pbwBucket = lens _pbwBucket (\s a -> s { _pbwBucket = a })
pbwContentMD5 :: Lens' PutBucketWebsite (Maybe Text)
pbwContentMD5 = lens _pbwContentMD5 (\s a -> s { _pbwContentMD5 = a })
pbwWebsiteConfiguration :: Lens' PutBucketWebsite WebsiteConfiguration
pbwWebsiteConfiguration =
    lens _pbwWebsiteConfiguration (\s a -> s { _pbwWebsiteConfiguration = a })
data PutBucketWebsiteResponse = PutBucketWebsiteResponse
    deriving (Eq, Ord, Show, Generic)
putBucketWebsiteResponse :: PutBucketWebsiteResponse
putBucketWebsiteResponse = PutBucketWebsiteResponse
instance ToPath PutBucketWebsite where
    toPath PutBucketWebsite{..} = mconcat
        [ "/"
        , toText _pbwBucket
        ]
instance ToQuery PutBucketWebsite where
    toQuery = const "website"
instance ToHeaders PutBucketWebsite where
    toHeaders PutBucketWebsite{..} = mconcat
        [ "Content-MD5" =: _pbwContentMD5
        ]
instance ToXMLRoot PutBucketWebsite where
    toXMLRoot PutBucketWebsite{..} = namespaced ns "PutBucketWebsite"
        [ "WebsiteConfiguration" =@ _pbwWebsiteConfiguration
        ]
instance ToXML PutBucketWebsite
instance AWSRequest PutBucketWebsite where
    type Sv PutBucketWebsite = S3
    type Rs PutBucketWebsite = PutBucketWebsiteResponse
    request  = put
    response = nullResponse PutBucketWebsiteResponse