{-# 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 #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.DeviceFarm.PurchaseOffering -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Immediately purchases offerings for an AWS account. Offerings renew with -- the latest total purchased quantity for an offering, unless the renewal -- was overridden. The API returns a 'NotEligible' error if the user is not -- permitted to invoke the operation. Please contact -- -- if you believe that you should be able to invoke this operation. module Network.AWS.DeviceFarm.PurchaseOffering ( -- * Creating a Request purchaseOffering , PurchaseOffering -- * Request Lenses , poQuantity , poOfferingId -- * Destructuring the Response , purchaseOfferingResponse , PurchaseOfferingResponse -- * Response Lenses , porsOfferingTransaction , porsResponseStatus ) where import Network.AWS.DeviceFarm.Types import Network.AWS.DeviceFarm.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | Represents a request for a purchase offering. -- -- /See:/ 'purchaseOffering' smart constructor. data PurchaseOffering = PurchaseOffering' { _poQuantity :: !(Maybe Int) , _poOfferingId :: !(Maybe Text) } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'PurchaseOffering' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'poQuantity' -- -- * 'poOfferingId' purchaseOffering :: PurchaseOffering purchaseOffering = PurchaseOffering' { _poQuantity = Nothing , _poOfferingId = Nothing } -- | The number of device slots you wish to purchase in an offering request. poQuantity :: Lens' PurchaseOffering (Maybe Int) poQuantity = lens _poQuantity (\ s a -> s{_poQuantity = a}); -- | The ID of the offering. poOfferingId :: Lens' PurchaseOffering (Maybe Text) poOfferingId = lens _poOfferingId (\ s a -> s{_poOfferingId = a}); instance AWSRequest PurchaseOffering where type Rs PurchaseOffering = PurchaseOfferingResponse request = postJSON deviceFarm response = receiveJSON (\ s h x -> PurchaseOfferingResponse' <$> (x .?> "offeringTransaction") <*> (pure (fromEnum s))) instance Hashable PurchaseOffering instance NFData PurchaseOffering instance ToHeaders PurchaseOffering where toHeaders = const (mconcat ["X-Amz-Target" =# ("DeviceFarm_20150623.PurchaseOffering" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON PurchaseOffering where toJSON PurchaseOffering'{..} = object (catMaybes [("quantity" .=) <$> _poQuantity, ("offeringId" .=) <$> _poOfferingId]) instance ToPath PurchaseOffering where toPath = const "/" instance ToQuery PurchaseOffering where toQuery = const mempty -- | The result of the purchase offering (e.g., success or failure). -- -- /See:/ 'purchaseOfferingResponse' smart constructor. data PurchaseOfferingResponse = PurchaseOfferingResponse' { _porsOfferingTransaction :: !(Maybe OfferingTransaction) , _porsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'PurchaseOfferingResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'porsOfferingTransaction' -- -- * 'porsResponseStatus' purchaseOfferingResponse :: Int -- ^ 'porsResponseStatus' -> PurchaseOfferingResponse purchaseOfferingResponse pResponseStatus_ = PurchaseOfferingResponse' { _porsOfferingTransaction = Nothing , _porsResponseStatus = pResponseStatus_ } -- | Represents the offering transaction for the purchase result. porsOfferingTransaction :: Lens' PurchaseOfferingResponse (Maybe OfferingTransaction) porsOfferingTransaction = lens _porsOfferingTransaction (\ s a -> s{_porsOfferingTransaction = a}); -- | The response status code. porsResponseStatus :: Lens' PurchaseOfferingResponse Int porsResponseStatus = lens _porsResponseStatus (\ s a -> s{_porsResponseStatus = a}); instance NFData PurchaseOfferingResponse