module Network.AWS.SDB.DomainMetadata
    (
    
      DomainMetadata
    
    , domainMetadata
    
    , dmDomainName
    
    , DomainMetadataResponse
    
    , domainMetadataResponse
    
    , dmrAttributeNameCount
    , dmrAttributeNamesSizeBytes
    , dmrAttributeValueCount
    , dmrAttributeValuesSizeBytes
    , dmrItemCount
    , dmrItemNamesSizeBytes
    , dmrTimestamp
    ) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.SDB.Types
import qualified GHC.Exts
newtype DomainMetadata = DomainMetadata
    { _dmDomainName :: Text
    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
domainMetadata :: Text 
               -> DomainMetadata
domainMetadata p1 = DomainMetadata
    { _dmDomainName = p1
    }
dmDomainName :: Lens' DomainMetadata Text
dmDomainName = lens _dmDomainName (\s a -> s { _dmDomainName = a })
data DomainMetadataResponse = DomainMetadataResponse
    { _dmrAttributeNameCount       :: Maybe Int
    , _dmrAttributeNamesSizeBytes  :: Maybe Integer
    , _dmrAttributeValueCount      :: Maybe Int
    , _dmrAttributeValuesSizeBytes :: Maybe Integer
    , _dmrItemCount                :: Maybe Int
    , _dmrItemNamesSizeBytes       :: Maybe Integer
    , _dmrTimestamp                :: Maybe Int
    } deriving (Eq, Ord, Read, Show)
domainMetadataResponse :: DomainMetadataResponse
domainMetadataResponse = DomainMetadataResponse
    { _dmrItemCount                = Nothing
    , _dmrItemNamesSizeBytes       = Nothing
    , _dmrAttributeNameCount       = Nothing
    , _dmrAttributeNamesSizeBytes  = Nothing
    , _dmrAttributeValueCount      = Nothing
    , _dmrAttributeValuesSizeBytes = Nothing
    , _dmrTimestamp                = Nothing
    }
dmrAttributeNameCount :: Lens' DomainMetadataResponse (Maybe Int)
dmrAttributeNameCount =
    lens _dmrAttributeNameCount (\s a -> s { _dmrAttributeNameCount = a })
dmrAttributeNamesSizeBytes :: Lens' DomainMetadataResponse (Maybe Integer)
dmrAttributeNamesSizeBytes =
    lens _dmrAttributeNamesSizeBytes
        (\s a -> s { _dmrAttributeNamesSizeBytes = a })
dmrAttributeValueCount :: Lens' DomainMetadataResponse (Maybe Int)
dmrAttributeValueCount =
    lens _dmrAttributeValueCount (\s a -> s { _dmrAttributeValueCount = a })
dmrAttributeValuesSizeBytes :: Lens' DomainMetadataResponse (Maybe Integer)
dmrAttributeValuesSizeBytes =
    lens _dmrAttributeValuesSizeBytes
        (\s a -> s { _dmrAttributeValuesSizeBytes = a })
dmrItemCount :: Lens' DomainMetadataResponse (Maybe Int)
dmrItemCount = lens _dmrItemCount (\s a -> s { _dmrItemCount = a })
dmrItemNamesSizeBytes :: Lens' DomainMetadataResponse (Maybe Integer)
dmrItemNamesSizeBytes =
    lens _dmrItemNamesSizeBytes (\s a -> s { _dmrItemNamesSizeBytes = a })
dmrTimestamp :: Lens' DomainMetadataResponse (Maybe Int)
dmrTimestamp = lens _dmrTimestamp (\s a -> s { _dmrTimestamp = a })
instance ToPath DomainMetadata where
    toPath = const "/"
instance ToQuery DomainMetadata where
    toQuery DomainMetadata{..} = mconcat
        [ "DomainName" =? _dmDomainName
        ]
instance ToHeaders DomainMetadata
instance AWSRequest DomainMetadata where
    type Sv DomainMetadata = SDB
    type Rs DomainMetadata = DomainMetadataResponse
    request  = post "DomainMetadata"
    response = xmlResponse
instance FromXML DomainMetadataResponse where
    parseXML = withElement "DomainMetadataResult" $ \x -> DomainMetadataResponse
        <$> x .@? "AttributeNameCount"
        <*> x .@? "AttributeNamesSizeBytes"
        <*> x .@? "AttributeValueCount"
        <*> x .@? "AttributeValuesSizeBytes"
        <*> x .@? "ItemCount"
        <*> x .@? "ItemNamesSizeBytes"
        <*> x .@? "Timestamp"