{-# 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.EC2.PurchaseHostReservation
(
purchaseHostReservation
, PurchaseHostReservation
, phrCurrencyCode
, phrClientToken
, phrLimitPrice
, phrOfferingId
, phrHostIdSet
, purchaseHostReservationResponse
, PurchaseHostReservationResponse
, phrrsCurrencyCode
, phrrsClientToken
, phrrsTotalHourlyPrice
, phrrsTotalUpfrontPrice
, phrrsPurchase
, phrrsResponseStatus
) where
import Network.AWS.EC2.Types
import Network.AWS.EC2.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data PurchaseHostReservation = PurchaseHostReservation'
{ _phrCurrencyCode :: !(Maybe CurrencyCodeValues)
, _phrClientToken :: !(Maybe Text)
, _phrLimitPrice :: !(Maybe Text)
, _phrOfferingId :: !Text
, _phrHostIdSet :: ![Text]
} deriving (Eq,Read,Show,Data,Typeable,Generic)
purchaseHostReservation
:: Text
-> PurchaseHostReservation
purchaseHostReservation pOfferingId_ =
PurchaseHostReservation'
{ _phrCurrencyCode = Nothing
, _phrClientToken = Nothing
, _phrLimitPrice = Nothing
, _phrOfferingId = pOfferingId_
, _phrHostIdSet = mempty
}
phrCurrencyCode :: Lens' PurchaseHostReservation (Maybe CurrencyCodeValues)
phrCurrencyCode = lens _phrCurrencyCode (\ s a -> s{_phrCurrencyCode = a});
phrClientToken :: Lens' PurchaseHostReservation (Maybe Text)
phrClientToken = lens _phrClientToken (\ s a -> s{_phrClientToken = a});
phrLimitPrice :: Lens' PurchaseHostReservation (Maybe Text)
phrLimitPrice = lens _phrLimitPrice (\ s a -> s{_phrLimitPrice = a});
phrOfferingId :: Lens' PurchaseHostReservation Text
phrOfferingId = lens _phrOfferingId (\ s a -> s{_phrOfferingId = a});
phrHostIdSet :: Lens' PurchaseHostReservation [Text]
phrHostIdSet = lens _phrHostIdSet (\ s a -> s{_phrHostIdSet = a}) . _Coerce;
instance AWSRequest PurchaseHostReservation where
type Rs PurchaseHostReservation =
PurchaseHostReservationResponse
request = postQuery ec2
response
= receiveXML
(\ s h x ->
PurchaseHostReservationResponse' <$>
(x .@? "currencyCode") <*> (x .@? "clientToken") <*>
(x .@? "totalHourlyPrice")
<*> (x .@? "totalUpfrontPrice")
<*>
(x .@? "purchase" .!@ mempty >>=
may (parseXMLList "member"))
<*> (pure (fromEnum s)))
instance Hashable PurchaseHostReservation
instance NFData PurchaseHostReservation
instance ToHeaders PurchaseHostReservation where
toHeaders = const mempty
instance ToPath PurchaseHostReservation where
toPath = const "/"
instance ToQuery PurchaseHostReservation where
toQuery PurchaseHostReservation'{..}
= mconcat
["Action" =:
("PurchaseHostReservation" :: ByteString),
"Version" =: ("2016-04-01" :: ByteString),
"CurrencyCode" =: _phrCurrencyCode,
"ClientToken" =: _phrClientToken,
"LimitPrice" =: _phrLimitPrice,
"OfferingId" =: _phrOfferingId,
toQueryList "HostIdSet" _phrHostIdSet]
data PurchaseHostReservationResponse = PurchaseHostReservationResponse'
{ _phrrsCurrencyCode :: !(Maybe CurrencyCodeValues)
, _phrrsClientToken :: !(Maybe Text)
, _phrrsTotalHourlyPrice :: !(Maybe Text)
, _phrrsTotalUpfrontPrice :: !(Maybe Text)
, _phrrsPurchase :: !(Maybe [Purchase])
, _phrrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
purchaseHostReservationResponse
:: Int
-> PurchaseHostReservationResponse
purchaseHostReservationResponse pResponseStatus_ =
PurchaseHostReservationResponse'
{ _phrrsCurrencyCode = Nothing
, _phrrsClientToken = Nothing
, _phrrsTotalHourlyPrice = Nothing
, _phrrsTotalUpfrontPrice = Nothing
, _phrrsPurchase = Nothing
, _phrrsResponseStatus = pResponseStatus_
}
phrrsCurrencyCode :: Lens' PurchaseHostReservationResponse (Maybe CurrencyCodeValues)
phrrsCurrencyCode = lens _phrrsCurrencyCode (\ s a -> s{_phrrsCurrencyCode = a});
phrrsClientToken :: Lens' PurchaseHostReservationResponse (Maybe Text)
phrrsClientToken = lens _phrrsClientToken (\ s a -> s{_phrrsClientToken = a});
phrrsTotalHourlyPrice :: Lens' PurchaseHostReservationResponse (Maybe Text)
phrrsTotalHourlyPrice = lens _phrrsTotalHourlyPrice (\ s a -> s{_phrrsTotalHourlyPrice = a});
phrrsTotalUpfrontPrice :: Lens' PurchaseHostReservationResponse (Maybe Text)
phrrsTotalUpfrontPrice = lens _phrrsTotalUpfrontPrice (\ s a -> s{_phrrsTotalUpfrontPrice = a});
phrrsPurchase :: Lens' PurchaseHostReservationResponse [Purchase]
phrrsPurchase = lens _phrrsPurchase (\ s a -> s{_phrrsPurchase = a}) . _Default . _Coerce;
phrrsResponseStatus :: Lens' PurchaseHostReservationResponse Int
phrrsResponseStatus = lens _phrrsResponseStatus (\ s a -> s{_phrrsResponseStatus = a});
instance NFData PurchaseHostReservationResponse