{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.MarketplaceMetering.BatchMeterUsage
(
batchMeterUsage
, BatchMeterUsage
, bmuUsageRecords
, bmuProductCode
, batchMeterUsageResponse
, BatchMeterUsageResponse
, bmursResults
, bmursUnprocessedRecords
, bmursResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.MarketplaceMetering.Types
import Network.AWS.MarketplaceMetering.Types.Product
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data BatchMeterUsage = BatchMeterUsage'
{ _bmuUsageRecords :: ![UsageRecord]
, _bmuProductCode :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
batchMeterUsage
:: Text
-> BatchMeterUsage
batchMeterUsage pProductCode_ =
BatchMeterUsage' {_bmuUsageRecords = mempty, _bmuProductCode = pProductCode_}
bmuUsageRecords :: Lens' BatchMeterUsage [UsageRecord]
bmuUsageRecords = lens _bmuUsageRecords (\ s a -> s{_bmuUsageRecords = a}) . _Coerce
bmuProductCode :: Lens' BatchMeterUsage Text
bmuProductCode = lens _bmuProductCode (\ s a -> s{_bmuProductCode = a})
instance AWSRequest BatchMeterUsage where
type Rs BatchMeterUsage = BatchMeterUsageResponse
request = postJSON marketplaceMetering
response
= receiveJSON
(\ s h x ->
BatchMeterUsageResponse' <$>
(x .?> "Results" .!@ mempty) <*>
(x .?> "UnprocessedRecords" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable BatchMeterUsage where
instance NFData BatchMeterUsage where
instance ToHeaders BatchMeterUsage where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSMPMeteringService.BatchMeterUsage" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON BatchMeterUsage where
toJSON BatchMeterUsage'{..}
= object
(catMaybes
[Just ("UsageRecords" .= _bmuUsageRecords),
Just ("ProductCode" .= _bmuProductCode)])
instance ToPath BatchMeterUsage where
toPath = const "/"
instance ToQuery BatchMeterUsage where
toQuery = const mempty
data BatchMeterUsageResponse = BatchMeterUsageResponse'
{ _bmursResults :: !(Maybe [UsageRecordResult])
, _bmursUnprocessedRecords :: !(Maybe [UsageRecord])
, _bmursResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
batchMeterUsageResponse
:: Int
-> BatchMeterUsageResponse
batchMeterUsageResponse pResponseStatus_ =
BatchMeterUsageResponse'
{ _bmursResults = Nothing
, _bmursUnprocessedRecords = Nothing
, _bmursResponseStatus = pResponseStatus_
}
bmursResults :: Lens' BatchMeterUsageResponse [UsageRecordResult]
bmursResults = lens _bmursResults (\ s a -> s{_bmursResults = a}) . _Default . _Coerce
bmursUnprocessedRecords :: Lens' BatchMeterUsageResponse [UsageRecord]
bmursUnprocessedRecords = lens _bmursUnprocessedRecords (\ s a -> s{_bmursUnprocessedRecords = a}) . _Default . _Coerce
bmursResponseStatus :: Lens' BatchMeterUsageResponse Int
bmursResponseStatus = lens _bmursResponseStatus (\ s a -> s{_bmursResponseStatus = a})
instance NFData BatchMeterUsageResponse where