module Network.AWS.S3.PutBucketRequestPayment
    (
    
      PutBucketRequestPayment
    
    , putBucketRequestPayment
    
    , pbrpBucket
    , pbrpContentMD5
    , pbrpRequestPaymentConfiguration
    
    , PutBucketRequestPaymentResponse
    
    , putBucketRequestPaymentResponse
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.S3
import Network.AWS.S3.Types
import qualified GHC.Exts
data PutBucketRequestPayment = PutBucketRequestPayment
    { _pbrpBucket                      :: Text
    , _pbrpContentMD5                  :: Maybe Text
    , _pbrpRequestPaymentConfiguration :: RequestPaymentConfiguration
    } deriving (Eq, Show)
putBucketRequestPayment :: Text 
                        -> RequestPaymentConfiguration 
                        -> PutBucketRequestPayment
putBucketRequestPayment p1 p2 = PutBucketRequestPayment
    { _pbrpBucket                      = p1
    , _pbrpRequestPaymentConfiguration = p2
    , _pbrpContentMD5                  = Nothing
    }
pbrpBucket :: Lens' PutBucketRequestPayment Text
pbrpBucket = lens _pbrpBucket (\s a -> s { _pbrpBucket = a })
pbrpContentMD5 :: Lens' PutBucketRequestPayment (Maybe Text)
pbrpContentMD5 = lens _pbrpContentMD5 (\s a -> s { _pbrpContentMD5 = a })
pbrpRequestPaymentConfiguration :: Lens' PutBucketRequestPayment RequestPaymentConfiguration
pbrpRequestPaymentConfiguration =
    lens _pbrpRequestPaymentConfiguration
        (\s a -> s { _pbrpRequestPaymentConfiguration = a })
data PutBucketRequestPaymentResponse = PutBucketRequestPaymentResponse
    deriving (Eq, Ord, Show, Generic)
putBucketRequestPaymentResponse :: PutBucketRequestPaymentResponse
putBucketRequestPaymentResponse = PutBucketRequestPaymentResponse
instance ToPath PutBucketRequestPayment where
    toPath PutBucketRequestPayment{..} = mconcat
        [ "/"
        , toText _pbrpBucket
        ]
instance ToQuery PutBucketRequestPayment where
    toQuery = const "requestPayment"
instance ToHeaders PutBucketRequestPayment where
    toHeaders PutBucketRequestPayment{..} = mconcat
        [ "Content-MD5" =: _pbrpContentMD5
        ]
instance ToXMLRoot PutBucketRequestPayment where
    toXMLRoot PutBucketRequestPayment{..} = namespaced ns "PutBucketRequestPayment"
        [ "RequestPaymentConfiguration" =@ _pbrpRequestPaymentConfiguration
        ]
instance ToXML PutBucketRequestPayment
instance AWSRequest PutBucketRequestPayment where
    type Sv PutBucketRequestPayment = S3
    type Rs PutBucketRequestPayment = PutBucketRequestPaymentResponse
    request  = put
    response = nullResponse PutBucketRequestPaymentResponse