amazonka-guardduty-1.6.0: gen/Network/AWS/GuardDuty/CreateThreatIntelSet.hs
{-# 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.GuardDuty.CreateThreatIntelSet
-- Copyright : (c) 2013-2018 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Create a new ThreatIntelSet. ThreatIntelSets consist of known malicious IP addresses. GuardDuty generates findings based on ThreatIntelSets.
module Network.AWS.GuardDuty.CreateThreatIntelSet
(
-- * Creating a Request
createThreatIntelSet
, CreateThreatIntelSet
-- * Request Lenses
, ctisLocation
, ctisFormat
, ctisActivate
, ctisName
, ctisDetectorId
-- * Destructuring the Response
, createThreatIntelSetResponse
, CreateThreatIntelSetResponse
-- * Response Lenses
, ctisrsThreatIntelSetId
, ctisrsResponseStatus
) 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
-- | CreateThreatIntelSet request body.
--
-- /See:/ 'createThreatIntelSet' smart constructor.
data CreateThreatIntelSet = CreateThreatIntelSet'
{ _ctisLocation :: !(Maybe Text)
, _ctisFormat :: !(Maybe ThreatIntelSetFormat)
, _ctisActivate :: !(Maybe Bool)
, _ctisName :: !(Maybe Text)
, _ctisDetectorId :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateThreatIntelSet' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ctisLocation' - The URI of the file that contains the ThreatIntelSet. For example (https://s3.us-west-2.amazonaws.com/my-bucket/my-object-key).
--
-- * 'ctisFormat' - The format of the file that contains the ThreatIntelSet.
--
-- * 'ctisActivate' - A boolean value that indicates whether GuardDuty is to start using the uploaded ThreatIntelSet.
--
-- * 'ctisName' - A user-friendly ThreatIntelSet name that is displayed in all finding generated by activity that involves IP addresses included in this ThreatIntelSet.
--
-- * 'ctisDetectorId' - The unique ID of the detector that you want to update.
createThreatIntelSet
:: Text -- ^ 'ctisDetectorId'
-> CreateThreatIntelSet
createThreatIntelSet pDetectorId_ =
CreateThreatIntelSet'
{ _ctisLocation = Nothing
, _ctisFormat = Nothing
, _ctisActivate = Nothing
, _ctisName = Nothing
, _ctisDetectorId = pDetectorId_
}
-- | The URI of the file that contains the ThreatIntelSet. For example (https://s3.us-west-2.amazonaws.com/my-bucket/my-object-key).
ctisLocation :: Lens' CreateThreatIntelSet (Maybe Text)
ctisLocation = lens _ctisLocation (\ s a -> s{_ctisLocation = a})
-- | The format of the file that contains the ThreatIntelSet.
ctisFormat :: Lens' CreateThreatIntelSet (Maybe ThreatIntelSetFormat)
ctisFormat = lens _ctisFormat (\ s a -> s{_ctisFormat = a})
-- | A boolean value that indicates whether GuardDuty is to start using the uploaded ThreatIntelSet.
ctisActivate :: Lens' CreateThreatIntelSet (Maybe Bool)
ctisActivate = lens _ctisActivate (\ s a -> s{_ctisActivate = a})
-- | A user-friendly ThreatIntelSet name that is displayed in all finding generated by activity that involves IP addresses included in this ThreatIntelSet.
ctisName :: Lens' CreateThreatIntelSet (Maybe Text)
ctisName = lens _ctisName (\ s a -> s{_ctisName = a})
-- | The unique ID of the detector that you want to update.
ctisDetectorId :: Lens' CreateThreatIntelSet Text
ctisDetectorId = lens _ctisDetectorId (\ s a -> s{_ctisDetectorId = a})
instance AWSRequest CreateThreatIntelSet where
type Rs CreateThreatIntelSet =
CreateThreatIntelSetResponse
request = postJSON guardDuty
response
= receiveJSON
(\ s h x ->
CreateThreatIntelSetResponse' <$>
(x .?> "threatIntelSetId") <*> (pure (fromEnum s)))
instance Hashable CreateThreatIntelSet where
instance NFData CreateThreatIntelSet where
instance ToHeaders CreateThreatIntelSet where
toHeaders
= const
(mconcat
["Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateThreatIntelSet where
toJSON CreateThreatIntelSet'{..}
= object
(catMaybes
[("location" .=) <$> _ctisLocation,
("format" .=) <$> _ctisFormat,
("activate" .=) <$> _ctisActivate,
("name" .=) <$> _ctisName])
instance ToPath CreateThreatIntelSet where
toPath CreateThreatIntelSet'{..}
= mconcat
["/detector/", toBS _ctisDetectorId,
"/threatintelset"]
instance ToQuery CreateThreatIntelSet where
toQuery = const mempty
-- | /See:/ 'createThreatIntelSetResponse' smart constructor.
data CreateThreatIntelSetResponse = CreateThreatIntelSetResponse'
{ _ctisrsThreatIntelSetId :: !(Maybe Text)
, _ctisrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateThreatIntelSetResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ctisrsThreatIntelSetId' - Undocumented member.
--
-- * 'ctisrsResponseStatus' - -- | The response status code.
createThreatIntelSetResponse
:: Int -- ^ 'ctisrsResponseStatus'
-> CreateThreatIntelSetResponse
createThreatIntelSetResponse pResponseStatus_ =
CreateThreatIntelSetResponse'
{ _ctisrsThreatIntelSetId = Nothing
, _ctisrsResponseStatus = pResponseStatus_
}
-- | Undocumented member.
ctisrsThreatIntelSetId :: Lens' CreateThreatIntelSetResponse (Maybe Text)
ctisrsThreatIntelSetId = lens _ctisrsThreatIntelSetId (\ s a -> s{_ctisrsThreatIntelSetId = a})
-- | -- | The response status code.
ctisrsResponseStatus :: Lens' CreateThreatIntelSetResponse Int
ctisrsResponseStatus = lens _ctisrsResponseStatus (\ s a -> s{_ctisrsResponseStatus = a})
instance NFData CreateThreatIntelSetResponse where