module Network.AWS.S3.GetBucketVersioning
    (
    
      GetBucketVersioning
    
    , getBucketVersioning
    
    , gbvBucket
    
    , GetBucketVersioningResponse
    
    , getBucketVersioningResponse
    
    , gbvrMFADelete
    , gbvrStatus
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.S3
import Network.AWS.S3.Types
import qualified GHC.Exts
newtype GetBucketVersioning = GetBucketVersioning
    { _gbvBucket :: Text
    } deriving (Eq, Ord, Show, Monoid, IsString)
getBucketVersioning :: Text 
                    -> GetBucketVersioning
getBucketVersioning p1 = GetBucketVersioning
    { _gbvBucket = p1
    }
gbvBucket :: Lens' GetBucketVersioning Text
gbvBucket = lens _gbvBucket (\s a -> s { _gbvBucket = a })
data GetBucketVersioningResponse = GetBucketVersioningResponse
    { _gbvrMFADelete :: Maybe MFADeleteStatus
    , _gbvrStatus    :: Maybe BucketVersioningStatus
    } deriving (Eq, Show)
getBucketVersioningResponse :: GetBucketVersioningResponse
getBucketVersioningResponse = GetBucketVersioningResponse
    { _gbvrStatus    = Nothing
    , _gbvrMFADelete = Nothing
    }
gbvrMFADelete :: Lens' GetBucketVersioningResponse (Maybe MFADeleteStatus)
gbvrMFADelete = lens _gbvrMFADelete (\s a -> s { _gbvrMFADelete = a })
gbvrStatus :: Lens' GetBucketVersioningResponse (Maybe BucketVersioningStatus)
gbvrStatus = lens _gbvrStatus (\s a -> s { _gbvrStatus = a })
instance ToPath GetBucketVersioning where
    toPath GetBucketVersioning{..} = mconcat
        [ "/"
        , toText _gbvBucket
        ]
instance ToQuery GetBucketVersioning where
    toQuery = const "versioning"
instance ToHeaders GetBucketVersioning
instance ToXMLRoot GetBucketVersioning where
    toXMLRoot = const (namespaced ns "GetBucketVersioning" [])
instance ToXML GetBucketVersioning
instance AWSRequest GetBucketVersioning where
    type Sv GetBucketVersioning = S3
    type Rs GetBucketVersioning = GetBucketVersioningResponse
    request  = get
    response = xmlResponse
instance FromXML GetBucketVersioningResponse where
    parseXML x = GetBucketVersioningResponse
        <$> x .@? "MfaDelete"
        <*> x .@? "Status"