{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
module Network.AWS.CostAndUsageReport.Types.Product where
import Network.AWS.CostAndUsageReport.Types.Sum
import Network.AWS.Lens
import Network.AWS.Prelude
data ReportDefinition = ReportDefinition'
{ _rdAdditionalArtifacts :: !(Maybe [AdditionalArtifact])
, _rdReportName :: !Text
, _rdTimeUnit :: !TimeUnit
, _rdFormat :: !ReportFormat
, _rdCompression :: !CompressionFormat
, _rdAdditionalSchemaElements :: ![SchemaElement]
, _rdS3Bucket :: !Text
, _rdS3Prefix :: !Text
, _rdS3Region :: !AWSRegion
} deriving (Eq, Read, Show, Data, Typeable, Generic)
reportDefinition
:: Text
-> TimeUnit
-> ReportFormat
-> CompressionFormat
-> Text
-> Text
-> AWSRegion
-> ReportDefinition
reportDefinition pReportName_ pTimeUnit_ pFormat_ pCompression_ pS3Bucket_ pS3Prefix_ pS3Region_ =
ReportDefinition'
{ _rdAdditionalArtifacts = Nothing
, _rdReportName = pReportName_
, _rdTimeUnit = pTimeUnit_
, _rdFormat = pFormat_
, _rdCompression = pCompression_
, _rdAdditionalSchemaElements = mempty
, _rdS3Bucket = pS3Bucket_
, _rdS3Prefix = pS3Prefix_
, _rdS3Region = pS3Region_
}
rdAdditionalArtifacts :: Lens' ReportDefinition [AdditionalArtifact]
rdAdditionalArtifacts = lens _rdAdditionalArtifacts (\ s a -> s{_rdAdditionalArtifacts = a}) . _Default . _Coerce
rdReportName :: Lens' ReportDefinition Text
rdReportName = lens _rdReportName (\ s a -> s{_rdReportName = a})
rdTimeUnit :: Lens' ReportDefinition TimeUnit
rdTimeUnit = lens _rdTimeUnit (\ s a -> s{_rdTimeUnit = a})
rdFormat :: Lens' ReportDefinition ReportFormat
rdFormat = lens _rdFormat (\ s a -> s{_rdFormat = a})
rdCompression :: Lens' ReportDefinition CompressionFormat
rdCompression = lens _rdCompression (\ s a -> s{_rdCompression = a})
rdAdditionalSchemaElements :: Lens' ReportDefinition [SchemaElement]
rdAdditionalSchemaElements = lens _rdAdditionalSchemaElements (\ s a -> s{_rdAdditionalSchemaElements = a}) . _Coerce
rdS3Bucket :: Lens' ReportDefinition Text
rdS3Bucket = lens _rdS3Bucket (\ s a -> s{_rdS3Bucket = a})
rdS3Prefix :: Lens' ReportDefinition Text
rdS3Prefix = lens _rdS3Prefix (\ s a -> s{_rdS3Prefix = a})
rdS3Region :: Lens' ReportDefinition AWSRegion
rdS3Region = lens _rdS3Region (\ s a -> s{_rdS3Region = a})
instance FromJSON ReportDefinition where
parseJSON
= withObject "ReportDefinition"
(\ x ->
ReportDefinition' <$>
(x .:? "AdditionalArtifacts" .!= mempty) <*>
(x .: "ReportName")
<*> (x .: "TimeUnit")
<*> (x .: "Format")
<*> (x .: "Compression")
<*> (x .:? "AdditionalSchemaElements" .!= mempty)
<*> (x .: "S3Bucket")
<*> (x .: "S3Prefix")
<*> (x .: "S3Region"))
instance Hashable ReportDefinition where
instance NFData ReportDefinition where
instance ToJSON ReportDefinition where
toJSON ReportDefinition'{..}
= object
(catMaybes
[("AdditionalArtifacts" .=) <$>
_rdAdditionalArtifacts,
Just ("ReportName" .= _rdReportName),
Just ("TimeUnit" .= _rdTimeUnit),
Just ("Format" .= _rdFormat),
Just ("Compression" .= _rdCompression),
Just
("AdditionalSchemaElements" .=
_rdAdditionalSchemaElements),
Just ("S3Bucket" .= _rdS3Bucket),
Just ("S3Prefix" .= _rdS3Prefix),
Just ("S3Region" .= _rdS3Region)])