{-# 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.GuardDuty.CreateFilter
(
createFilter
, CreateFilter
, cfClientToken
, cfFindingCriteria
, cfAction
, cfName
, cfDescription
, cfRank
, cfDetectorId
, createFilterResponse
, CreateFilterResponse
, cfrsName
, cfrsResponseStatus
) where
import Network.AWS.GuardDuty.Types
import Network.AWS.GuardDuty.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateFilter = CreateFilter'
{ _cfClientToken :: !(Maybe Text)
, _cfFindingCriteria :: !(Maybe FindingCriteria)
, _cfAction :: !(Maybe FilterAction)
, _cfName :: !(Maybe Text)
, _cfDescription :: !(Maybe Text)
, _cfRank :: !(Maybe Int)
, _cfDetectorId :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createFilter
:: Text
-> CreateFilter
createFilter pDetectorId_ =
CreateFilter'
{ _cfClientToken = Nothing
, _cfFindingCriteria = Nothing
, _cfAction = Nothing
, _cfName = Nothing
, _cfDescription = Nothing
, _cfRank = Nothing
, _cfDetectorId = pDetectorId_
}
cfClientToken :: Lens' CreateFilter (Maybe Text)
cfClientToken = lens _cfClientToken (\ s a -> s{_cfClientToken = a})
cfFindingCriteria :: Lens' CreateFilter (Maybe FindingCriteria)
cfFindingCriteria = lens _cfFindingCriteria (\ s a -> s{_cfFindingCriteria = a})
cfAction :: Lens' CreateFilter (Maybe FilterAction)
cfAction = lens _cfAction (\ s a -> s{_cfAction = a})
cfName :: Lens' CreateFilter (Maybe Text)
cfName = lens _cfName (\ s a -> s{_cfName = a})
cfDescription :: Lens' CreateFilter (Maybe Text)
cfDescription = lens _cfDescription (\ s a -> s{_cfDescription = a})
cfRank :: Lens' CreateFilter (Maybe Int)
cfRank = lens _cfRank (\ s a -> s{_cfRank = a})
cfDetectorId :: Lens' CreateFilter Text
cfDetectorId = lens _cfDetectorId (\ s a -> s{_cfDetectorId = a})
instance AWSRequest CreateFilter where
type Rs CreateFilter = CreateFilterResponse
request = postJSON guardDuty
response
= receiveJSON
(\ s h x ->
CreateFilterResponse' <$>
(x .?> "name") <*> (pure (fromEnum s)))
instance Hashable CreateFilter where
instance NFData CreateFilter where
instance ToHeaders CreateFilter where
toHeaders
= const
(mconcat
["Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateFilter where
toJSON CreateFilter'{..}
= object
(catMaybes
[("clientToken" .=) <$> _cfClientToken,
("findingCriteria" .=) <$> _cfFindingCriteria,
("action" .=) <$> _cfAction, ("name" .=) <$> _cfName,
("description" .=) <$> _cfDescription,
("rank" .=) <$> _cfRank])
instance ToPath CreateFilter where
toPath CreateFilter'{..}
= mconcat
["/detector/", toBS _cfDetectorId, "/filter"]
instance ToQuery CreateFilter where
toQuery = const mempty
data CreateFilterResponse = CreateFilterResponse'
{ _cfrsName :: !(Maybe Text)
, _cfrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createFilterResponse
:: Int
-> CreateFilterResponse
createFilterResponse pResponseStatus_ =
CreateFilterResponse'
{_cfrsName = Nothing, _cfrsResponseStatus = pResponseStatus_}
cfrsName :: Lens' CreateFilterResponse (Maybe Text)
cfrsName = lens _cfrsName (\ s a -> s{_cfrsName = a})
cfrsResponseStatus :: Lens' CreateFilterResponse Int
cfrsResponseStatus = lens _cfrsResponseStatus (\ s a -> s{_cfrsResponseStatus = a})
instance NFData CreateFilterResponse where