{-# 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.WAF.UpdateRegexPatternSet -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Inserts or deletes @RegexPatternString@ objects in a 'RegexPatternSet' . For each @RegexPatternString@ object, you specify the following values: -- -- -- * Whether to insert or delete the @RegexPatternString@ . -- -- * The regular expression pattern that you want to insert or delete. For more information, see 'RegexPatternSet' . -- -- -- -- For example, you can create a @RegexPatternString@ such as @B[a@]dB[o0]t@ . AWS WAF will match this @RegexPatternString@ to: -- -- * BadBot -- -- * BadB0t -- -- * B@dBot -- -- * B@dB0t -- -- -- -- To create and configure a @RegexPatternSet@ , perform the following steps: -- -- * Create a @RegexPatternSet.@ For more information, see 'CreateRegexPatternSet' . -- -- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of an @UpdateRegexPatternSet@ request. -- -- * Submit an @UpdateRegexPatternSet@ request to specify the regular expression pattern that you want AWS WAF to watch for. -- -- -- -- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the . -- module Network.AWS.WAF.UpdateRegexPatternSet ( -- * Creating a Request updateRegexPatternSet , UpdateRegexPatternSet -- * Request Lenses , urpsRegexPatternSetId , urpsUpdates , urpsChangeToken -- * Destructuring the Response , updateRegexPatternSetResponse , UpdateRegexPatternSetResponse -- * Response Lenses , urpsrsChangeToken , urpsrsResponseStatus ) 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 -- | /See:/ 'updateRegexPatternSet' smart constructor. data UpdateRegexPatternSet = UpdateRegexPatternSet' { _urpsRegexPatternSetId :: !Text , _urpsUpdates :: !(List1 RegexPatternSetUpdate) , _urpsChangeToken :: !Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'UpdateRegexPatternSet' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'urpsRegexPatternSetId' - The @RegexPatternSetId@ of the 'RegexPatternSet' that you want to update. @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' . -- -- * 'urpsUpdates' - An array of @RegexPatternSetUpdate@ objects that you want to insert into or delete from a 'RegexPatternSet' . -- -- * 'urpsChangeToken' - The value returned by the most recent call to 'GetChangeToken' . updateRegexPatternSet :: Text -- ^ 'urpsRegexPatternSetId' -> NonEmpty RegexPatternSetUpdate -- ^ 'urpsUpdates' -> Text -- ^ 'urpsChangeToken' -> UpdateRegexPatternSet updateRegexPatternSet pRegexPatternSetId_ pUpdates_ pChangeToken_ = UpdateRegexPatternSet' { _urpsRegexPatternSetId = pRegexPatternSetId_ , _urpsUpdates = _List1 # pUpdates_ , _urpsChangeToken = pChangeToken_ } -- | The @RegexPatternSetId@ of the 'RegexPatternSet' that you want to update. @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' . urpsRegexPatternSetId :: Lens' UpdateRegexPatternSet Text urpsRegexPatternSetId = lens _urpsRegexPatternSetId (\ s a -> s{_urpsRegexPatternSetId = a}) -- | An array of @RegexPatternSetUpdate@ objects that you want to insert into or delete from a 'RegexPatternSet' . urpsUpdates :: Lens' UpdateRegexPatternSet (NonEmpty RegexPatternSetUpdate) urpsUpdates = lens _urpsUpdates (\ s a -> s{_urpsUpdates = a}) . _List1 -- | The value returned by the most recent call to 'GetChangeToken' . urpsChangeToken :: Lens' UpdateRegexPatternSet Text urpsChangeToken = lens _urpsChangeToken (\ s a -> s{_urpsChangeToken = a}) instance AWSRequest UpdateRegexPatternSet where type Rs UpdateRegexPatternSet = UpdateRegexPatternSetResponse request = postJSON waf response = receiveJSON (\ s h x -> UpdateRegexPatternSetResponse' <$> (x .?> "ChangeToken") <*> (pure (fromEnum s))) instance Hashable UpdateRegexPatternSet where instance NFData UpdateRegexPatternSet where instance ToHeaders UpdateRegexPatternSet where toHeaders = const (mconcat ["X-Amz-Target" =# ("AWSWAF_20150824.UpdateRegexPatternSet" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON UpdateRegexPatternSet where toJSON UpdateRegexPatternSet'{..} = object (catMaybes [Just ("RegexPatternSetId" .= _urpsRegexPatternSetId), Just ("Updates" .= _urpsUpdates), Just ("ChangeToken" .= _urpsChangeToken)]) instance ToPath UpdateRegexPatternSet where toPath = const "/" instance ToQuery UpdateRegexPatternSet where toQuery = const mempty -- | /See:/ 'updateRegexPatternSetResponse' smart constructor. data UpdateRegexPatternSetResponse = UpdateRegexPatternSetResponse' { _urpsrsChangeToken :: !(Maybe Text) , _urpsrsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'UpdateRegexPatternSetResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'urpsrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateRegexPatternSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' . -- -- * 'urpsrsResponseStatus' - -- | The response status code. updateRegexPatternSetResponse :: Int -- ^ 'urpsrsResponseStatus' -> UpdateRegexPatternSetResponse updateRegexPatternSetResponse pResponseStatus_ = UpdateRegexPatternSetResponse' {_urpsrsChangeToken = Nothing, _urpsrsResponseStatus = pResponseStatus_} -- | The @ChangeToken@ that you used to submit the @UpdateRegexPatternSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' . urpsrsChangeToken :: Lens' UpdateRegexPatternSetResponse (Maybe Text) urpsrsChangeToken = lens _urpsrsChangeToken (\ s a -> s{_urpsrsChangeToken = a}) -- | -- | The response status code. urpsrsResponseStatus :: Lens' UpdateRegexPatternSetResponse Int urpsrsResponseStatus = lens _urpsrsResponseStatus (\ s a -> s{_urpsrsResponseStatus = a}) instance NFData UpdateRegexPatternSetResponse where