{-# 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.WAF.GetSampledRequests
(
getSampledRequests
, GetSampledRequests
, gsrWebACLId
, gsrRuleId
, gsrTimeWindow
, gsrMaxItems
, getSampledRequestsResponse
, GetSampledRequestsResponse
, gsrrsSampledRequests
, gsrrsPopulationSize
, gsrrsTimeWindow
, gsrrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.WAF.Types
import Network.AWS.WAF.Types.Product
data GetSampledRequests = GetSampledRequests'
{ _gsrWebACLId :: !Text
, _gsrRuleId :: !Text
, _gsrTimeWindow :: !TimeWindow
, _gsrMaxItems :: !Nat
} deriving (Eq,Read,Show,Data,Typeable,Generic)
getSampledRequests
:: Text
-> Text
-> TimeWindow
-> Natural
-> GetSampledRequests
getSampledRequests pWebACLId_ pRuleId_ pTimeWindow_ pMaxItems_ =
GetSampledRequests'
{ _gsrWebACLId = pWebACLId_
, _gsrRuleId = pRuleId_
, _gsrTimeWindow = pTimeWindow_
, _gsrMaxItems = _Nat # pMaxItems_
}
gsrWebACLId :: Lens' GetSampledRequests Text
gsrWebACLId = lens _gsrWebACLId (\ s a -> s{_gsrWebACLId = a});
gsrRuleId :: Lens' GetSampledRequests Text
gsrRuleId = lens _gsrRuleId (\ s a -> s{_gsrRuleId = a});
gsrTimeWindow :: Lens' GetSampledRequests TimeWindow
gsrTimeWindow = lens _gsrTimeWindow (\ s a -> s{_gsrTimeWindow = a});
gsrMaxItems :: Lens' GetSampledRequests Natural
gsrMaxItems = lens _gsrMaxItems (\ s a -> s{_gsrMaxItems = a}) . _Nat;
instance AWSRequest GetSampledRequests where
type Rs GetSampledRequests =
GetSampledRequestsResponse
request = postJSON waf
response
= receiveJSON
(\ s h x ->
GetSampledRequestsResponse' <$>
(x .?> "SampledRequests" .!@ mempty) <*>
(x .?> "PopulationSize")
<*> (x .?> "TimeWindow")
<*> (pure (fromEnum s)))
instance Hashable GetSampledRequests
instance NFData GetSampledRequests
instance ToHeaders GetSampledRequests where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSWAF_20150824.GetSampledRequests" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON GetSampledRequests where
toJSON GetSampledRequests'{..}
= object
(catMaybes
[Just ("WebAclId" .= _gsrWebACLId),
Just ("RuleId" .= _gsrRuleId),
Just ("TimeWindow" .= _gsrTimeWindow),
Just ("MaxItems" .= _gsrMaxItems)])
instance ToPath GetSampledRequests where
toPath = const "/"
instance ToQuery GetSampledRequests where
toQuery = const mempty
data GetSampledRequestsResponse = GetSampledRequestsResponse'
{ _gsrrsSampledRequests :: !(Maybe [SampledHTTPRequest])
, _gsrrsPopulationSize :: !(Maybe Integer)
, _gsrrsTimeWindow :: !(Maybe TimeWindow)
, _gsrrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
getSampledRequestsResponse
:: Int
-> GetSampledRequestsResponse
getSampledRequestsResponse pResponseStatus_ =
GetSampledRequestsResponse'
{ _gsrrsSampledRequests = Nothing
, _gsrrsPopulationSize = Nothing
, _gsrrsTimeWindow = Nothing
, _gsrrsResponseStatus = pResponseStatus_
}
gsrrsSampledRequests :: Lens' GetSampledRequestsResponse [SampledHTTPRequest]
gsrrsSampledRequests = lens _gsrrsSampledRequests (\ s a -> s{_gsrrsSampledRequests = a}) . _Default . _Coerce;
gsrrsPopulationSize :: Lens' GetSampledRequestsResponse (Maybe Integer)
gsrrsPopulationSize = lens _gsrrsPopulationSize (\ s a -> s{_gsrrsPopulationSize = a});
gsrrsTimeWindow :: Lens' GetSampledRequestsResponse (Maybe TimeWindow)
gsrrsTimeWindow = lens _gsrrsTimeWindow (\ s a -> s{_gsrrsTimeWindow = a});
gsrrsResponseStatus :: Lens' GetSampledRequestsResponse Int
gsrrsResponseStatus = lens _gsrrsResponseStatus (\ s a -> s{_gsrrsResponseStatus = a});
instance NFData GetSampledRequestsResponse