amazonka-waf-regional (empty) → 1.5.0
raw patch · 203 files changed
+17664/−0 lines, 203 filesdep +amazonka-coredep +amazonka-testdep +amazonka-waf-regionalsetup-changed
Dependencies added: amazonka-core, amazonka-test, amazonka-waf-regional, base, bytestring, tasty, tasty-hunit, text, time, unordered-containers
Files
- LICENSE +367/−0
- README.md +45/−0
- Setup.hs +2/−0
- amazonka-waf-regional.cabal +148/−0
- fixture/AssociateWebACL.yaml +10/−0
- fixture/AssociateWebACLResponse.proto +0/−0
- fixture/CreateByteMatchSet.yaml +10/−0
- fixture/CreateByteMatchSetResponse.proto +0/−0
- fixture/CreateGeoMatchSet.yaml +10/−0
- fixture/CreateGeoMatchSetResponse.proto +0/−0
- fixture/CreateIPSet.yaml +10/−0
- fixture/CreateIPSetResponse.proto +0/−0
- fixture/CreateRateBasedRule.yaml +10/−0
- fixture/CreateRateBasedRuleResponse.proto +0/−0
- fixture/CreateRegexMatchSet.yaml +10/−0
- fixture/CreateRegexMatchSetResponse.proto +0/−0
- fixture/CreateRegexPatternSet.yaml +10/−0
- fixture/CreateRegexPatternSetResponse.proto +0/−0
- fixture/CreateRule.yaml +10/−0
- fixture/CreateRuleResponse.proto +0/−0
- fixture/CreateSizeConstraintSet.yaml +10/−0
- fixture/CreateSizeConstraintSetResponse.proto +0/−0
- fixture/CreateSqlInjectionMatchSet.yaml +10/−0
- fixture/CreateSqlInjectionMatchSetResponse.proto +0/−0
- fixture/CreateWebACL.yaml +10/−0
- fixture/CreateWebACLResponse.proto +0/−0
- fixture/CreateXSSMatchSet.yaml +10/−0
- fixture/CreateXSSMatchSetResponse.proto +0/−0
- fixture/DeleteByteMatchSet.yaml +10/−0
- fixture/DeleteByteMatchSetResponse.proto +0/−0
- fixture/DeleteGeoMatchSet.yaml +10/−0
- fixture/DeleteGeoMatchSetResponse.proto +0/−0
- fixture/DeleteIPSet.yaml +10/−0
- fixture/DeleteIPSetResponse.proto +0/−0
- fixture/DeleteRateBasedRule.yaml +10/−0
- fixture/DeleteRateBasedRuleResponse.proto +0/−0
- fixture/DeleteRegexMatchSet.yaml +10/−0
- fixture/DeleteRegexMatchSetResponse.proto +0/−0
- fixture/DeleteRegexPatternSet.yaml +10/−0
- fixture/DeleteRegexPatternSetResponse.proto +0/−0
- fixture/DeleteRule.yaml +10/−0
- fixture/DeleteRuleResponse.proto +0/−0
- fixture/DeleteSizeConstraintSet.yaml +10/−0
- fixture/DeleteSizeConstraintSetResponse.proto +0/−0
- fixture/DeleteSqlInjectionMatchSet.yaml +10/−0
- fixture/DeleteSqlInjectionMatchSetResponse.proto +0/−0
- fixture/DeleteWebACL.yaml +10/−0
- fixture/DeleteWebACLResponse.proto +0/−0
- fixture/DeleteXSSMatchSet.yaml +10/−0
- fixture/DeleteXSSMatchSetResponse.proto +0/−0
- fixture/DisassociateWebACL.yaml +10/−0
- fixture/DisassociateWebACLResponse.proto +0/−0
- fixture/GetByteMatchSet.yaml +10/−0
- fixture/GetByteMatchSetResponse.proto +0/−0
- fixture/GetChangeToken.yaml +10/−0
- fixture/GetChangeTokenResponse.proto +0/−0
- fixture/GetChangeTokenStatus.yaml +10/−0
- fixture/GetChangeTokenStatusResponse.proto +0/−0
- fixture/GetGeoMatchSet.yaml +10/−0
- fixture/GetGeoMatchSetResponse.proto +0/−0
- fixture/GetIPSet.yaml +10/−0
- fixture/GetIPSetResponse.proto +0/−0
- fixture/GetRateBasedRule.yaml +10/−0
- fixture/GetRateBasedRuleManagedKeys.yaml +10/−0
- fixture/GetRateBasedRuleManagedKeysResponse.proto +0/−0
- fixture/GetRateBasedRuleResponse.proto +0/−0
- fixture/GetRegexMatchSet.yaml +10/−0
- fixture/GetRegexMatchSetResponse.proto +0/−0
- fixture/GetRegexPatternSet.yaml +10/−0
- fixture/GetRegexPatternSetResponse.proto +0/−0
- fixture/GetRule.yaml +10/−0
- fixture/GetRuleResponse.proto +0/−0
- fixture/GetSampledRequests.yaml +10/−0
- fixture/GetSampledRequestsResponse.proto +0/−0
- fixture/GetSizeConstraintSet.yaml +10/−0
- fixture/GetSizeConstraintSetResponse.proto +0/−0
- fixture/GetSqlInjectionMatchSet.yaml +10/−0
- fixture/GetSqlInjectionMatchSetResponse.proto +0/−0
- fixture/GetWebACL.yaml +10/−0
- fixture/GetWebACLForResource.yaml +10/−0
- fixture/GetWebACLForResourceResponse.proto +0/−0
- fixture/GetWebACLResponse.proto +0/−0
- fixture/GetXSSMatchSet.yaml +10/−0
- fixture/GetXSSMatchSetResponse.proto +0/−0
- fixture/ListByteMatchSets.yaml +10/−0
- fixture/ListByteMatchSetsResponse.proto +0/−0
- fixture/ListGeoMatchSets.yaml +10/−0
- fixture/ListGeoMatchSetsResponse.proto +0/−0
- fixture/ListIPSets.yaml +10/−0
- fixture/ListIPSetsResponse.proto +0/−0
- fixture/ListRateBasedRules.yaml +10/−0
- fixture/ListRateBasedRulesResponse.proto +0/−0
- fixture/ListRegexMatchSets.yaml +10/−0
- fixture/ListRegexMatchSetsResponse.proto +0/−0
- fixture/ListRegexPatternSets.yaml +10/−0
- fixture/ListRegexPatternSetsResponse.proto +0/−0
- fixture/ListResourcesForWebACL.yaml +10/−0
- fixture/ListResourcesForWebACLResponse.proto +0/−0
- fixture/ListRules.yaml +10/−0
- fixture/ListRulesResponse.proto +0/−0
- fixture/ListSizeConstraintSets.yaml +10/−0
- fixture/ListSizeConstraintSetsResponse.proto +0/−0
- fixture/ListSqlInjectionMatchSets.yaml +10/−0
- fixture/ListSqlInjectionMatchSetsResponse.proto +0/−0
- fixture/ListWebACLs.yaml +10/−0
- fixture/ListWebACLsResponse.proto +0/−0
- fixture/ListXSSMatchSets.yaml +10/−0
- fixture/ListXSSMatchSetsResponse.proto +0/−0
- fixture/UpdateByteMatchSet.yaml +10/−0
- fixture/UpdateByteMatchSetResponse.proto +0/−0
- fixture/UpdateGeoMatchSet.yaml +10/−0
- fixture/UpdateGeoMatchSetResponse.proto +0/−0
- fixture/UpdateIPSet.yaml +10/−0
- fixture/UpdateIPSetResponse.proto +0/−0
- fixture/UpdateRateBasedRule.yaml +10/−0
- fixture/UpdateRateBasedRuleResponse.proto +0/−0
- fixture/UpdateRegexMatchSet.yaml +10/−0
- fixture/UpdateRegexMatchSetResponse.proto +0/−0
- fixture/UpdateRegexPatternSet.yaml +10/−0
- fixture/UpdateRegexPatternSetResponse.proto +0/−0
- fixture/UpdateRule.yaml +10/−0
- fixture/UpdateRuleResponse.proto +0/−0
- fixture/UpdateSizeConstraintSet.yaml +10/−0
- fixture/UpdateSizeConstraintSetResponse.proto +0/−0
- fixture/UpdateSqlInjectionMatchSet.yaml +10/−0
- fixture/UpdateSqlInjectionMatchSetResponse.proto +0/−0
- fixture/UpdateWebACL.yaml +10/−0
- fixture/UpdateWebACLResponse.proto +0/−0
- fixture/UpdateXSSMatchSet.yaml +10/−0
- fixture/UpdateXSSMatchSetResponse.proto +0/−0
- gen/Network/AWS/WAFRegional.hs +701/−0
- gen/Network/AWS/WAFRegional/AssociateWebACL.hs +134/−0
- gen/Network/AWS/WAFRegional/CreateByteMatchSet.hs +171/−0
- gen/Network/AWS/WAFRegional/CreateGeoMatchSet.hs +170/−0
- gen/Network/AWS/WAFRegional/CreateIPSet.hs +170/−0
- gen/Network/AWS/WAFRegional/CreateRateBasedRule.hs +237/−0
- gen/Network/AWS/WAFRegional/CreateRegexMatchSet.hs +171/−0
- gen/Network/AWS/WAFRegional/CreateRegexPatternSet.hs +171/−0
- gen/Network/AWS/WAFRegional/CreateRule.hs +196/−0
- gen/Network/AWS/WAFRegional/CreateSizeConstraintSet.hs +172/−0
- gen/Network/AWS/WAFRegional/CreateSqlInjectionMatchSet.hs +182/−0
- gen/Network/AWS/WAFRegional/CreateWebACL.hs +201/−0
- gen/Network/AWS/WAFRegional/CreateXSSMatchSet.hs +178/−0
- gen/Network/AWS/WAFRegional/DeleteByteMatchSet.hs +158/−0
- gen/Network/AWS/WAFRegional/DeleteGeoMatchSet.hs +157/−0
- gen/Network/AWS/WAFRegional/DeleteIPSet.hs +156/−0
- gen/Network/AWS/WAFRegional/DeleteRateBasedRule.hs +158/−0
- gen/Network/AWS/WAFRegional/DeleteRegexMatchSet.hs +158/−0
- gen/Network/AWS/WAFRegional/DeleteRegexPatternSet.hs +149/−0
- gen/Network/AWS/WAFRegional/DeleteRule.hs +156/−0
- gen/Network/AWS/WAFRegional/DeleteSizeConstraintSet.hs +161/−0
- gen/Network/AWS/WAFRegional/DeleteSqlInjectionMatchSet.hs +171/−0
- gen/Network/AWS/WAFRegional/DeleteWebACL.hs +154/−0
- gen/Network/AWS/WAFRegional/DeleteXSSMatchSet.hs +165/−0
- gen/Network/AWS/WAFRegional/DisassociateWebACL.hs +124/−0
- gen/Network/AWS/WAFRegional/GetByteMatchSet.hs +134/−0
- gen/Network/AWS/WAFRegional/GetChangeToken.hs +124/−0
- gen/Network/AWS/WAFRegional/GetChangeTokenStatus.hs +143/−0
- gen/Network/AWS/WAFRegional/GetGeoMatchSet.hs +134/−0
- gen/Network/AWS/WAFRegional/GetIPSet.hs +131/−0
- gen/Network/AWS/WAFRegional/GetRateBasedRule.hs +131/−0
- gen/Network/AWS/WAFRegional/GetRateBasedRuleManagedKeys.hs +159/−0
- gen/Network/AWS/WAFRegional/GetRegexMatchSet.hs +134/−0
- gen/Network/AWS/WAFRegional/GetRegexPatternSet.hs +136/−0
- gen/Network/AWS/WAFRegional/GetRule.hs +129/−0
- gen/Network/AWS/WAFRegional/GetSampledRequests.hs +195/−0
- gen/Network/AWS/WAFRegional/GetSizeConstraintSet.hs +136/−0
- gen/Network/AWS/WAFRegional/GetSqlInjectionMatchSet.hs +149/−0
- gen/Network/AWS/WAFRegional/GetWebACL.hs +131/−0
- gen/Network/AWS/WAFRegional/GetWebACLForResource.hs +135/−0
- gen/Network/AWS/WAFRegional/GetXSSMatchSet.hs +142/−0
- gen/Network/AWS/WAFRegional/ListByteMatchSets.hs +155/−0
- gen/Network/AWS/WAFRegional/ListGeoMatchSets.hs +155/−0
- gen/Network/AWS/WAFRegional/ListIPSets.hs +153/−0
- gen/Network/AWS/WAFRegional/ListRateBasedRules.hs +155/−0
- gen/Network/AWS/WAFRegional/ListRegexMatchSets.hs +156/−0
- gen/Network/AWS/WAFRegional/ListRegexPatternSets.hs +156/−0
- gen/Network/AWS/WAFRegional/ListResourcesForWebACL.hs +135/−0
- gen/Network/AWS/WAFRegional/ListRules.hs +152/−0
- gen/Network/AWS/WAFRegional/ListSizeConstraintSets.hs +156/−0
- gen/Network/AWS/WAFRegional/ListSqlInjectionMatchSets.hs +165/−0
- gen/Network/AWS/WAFRegional/ListWebACLs.hs +153/−0
- gen/Network/AWS/WAFRegional/ListXSSMatchSets.hs +163/−0
- gen/Network/AWS/WAFRegional/Types.hs +583/−0
- gen/Network/AWS/WAFRegional/Types/Product.hs +2553/−0
- gen/Network/AWS/WAFRegional/Types/Sum.hs +1202/−0
- gen/Network/AWS/WAFRegional/UpdateByteMatchSet.hs +185/−0
- gen/Network/AWS/WAFRegional/UpdateGeoMatchSet.hs +180/−0
- gen/Network/AWS/WAFRegional/UpdateIPSet.hs +196/−0
- gen/Network/AWS/WAFRegional/UpdateRateBasedRule.hs +197/−0
- gen/Network/AWS/WAFRegional/UpdateRegexMatchSet.hs +183/−0
- gen/Network/AWS/WAFRegional/UpdateRegexPatternSet.hs +190/−0
- gen/Network/AWS/WAFRegional/UpdateRule.hs +180/−0
- gen/Network/AWS/WAFRegional/UpdateSizeConstraintSet.hs +186/−0
- gen/Network/AWS/WAFRegional/UpdateSqlInjectionMatchSet.hs +192/−0
- gen/Network/AWS/WAFRegional/UpdateWebACL.hs +195/−0
- gen/Network/AWS/WAFRegional/UpdateXSSMatchSet.hs +188/−0
- gen/Network/AWS/WAFRegional/Waiters.hs +21/−0
- src/.gitkeep +0/−0
- test/Main.hs +21/−0
- test/Test/AWS/Gen/WAFRegional.hs +1173/−0
- test/Test/AWS/WAFRegional.hs +20/−0
- test/Test/AWS/WAFRegional/Internal.hs +9/−0
+ LICENSE view
@@ -0,0 +1,367 @@+Mozilla Public License Version 2.0+==================================++1. Definitions+--------------++1.1. "Contributor"+ means each individual or legal entity that creates, contributes to+ the creation of, or owns Covered Software.++1.2. "Contributor Version"+ means the combination of the Contributions of others (if any) used+ by a Contributor and that particular Contributor's Contribution.++1.3. "Contribution"+ means Covered Software of a particular Contributor.++1.4. "Covered Software"+ means Source Code Form to which the initial Contributor has attached+ the notice in Exhibit A, the Executable Form of such Source Code+ Form, and Modifications of such Source Code Form, in each case+ including portions thereof.++1.5. "Incompatible With Secondary Licenses"+ means++ (a) that the initial Contributor has attached the notice described+ in Exhibit B to the Covered Software; or++ (b) that the Covered Software was made available under the terms of+ version 1.1 or earlier of the License, but not also under the+ terms of a Secondary License.++1.6. "Executable Form"+ means any form of the work other than Source Code Form.++1.7. "Larger Work"+ means a work that combines Covered Software with other material, in+ a separate file or files, that is not Covered Software.++1.8. "License"+ means this document.++1.9. "Licensable"+ means having the right to grant, to the maximum extent possible,+ whether at the time of the initial grant or subsequently, any and+ all of the rights conveyed by this License.++1.10. "Modifications"+ means any of the following:++ (a) any file in Source Code Form that results from an addition to,+ deletion from, or modification of the contents of Covered+ Software; or++ (b) any new file in Source Code Form that contains any Covered+ Software.++1.11. "Patent Claims" of a Contributor+ means any patent claim(s), including without limitation, method,+ process, and apparatus claims, in any patent Licensable by such+ Contributor that would be infringed, but for the grant of the+ License, by the making, using, selling, offering for sale, having+ made, import, or transfer of either its Contributions or its+ Contributor Version.++1.12. "Secondary License"+ means either the GNU General Public License, Version 2.0, the GNU+ Lesser General Public License, Version 2.1, the GNU Affero General+ Public License, Version 3.0, or any later versions of those+ licenses.++1.13. "Source Code Form"+ means the form of the work preferred for making modifications.++1.14. "You" (or "Your")+ means an individual or a legal entity exercising rights under this+ License. For legal entities, "You" includes any entity that+ controls, is controlled by, or is under common control with You. For+ purposes of this definition, "control" means (a) the power, direct+ or indirect, to cause the direction or management of such entity,+ whether by contract or otherwise, or (b) ownership of more than+ fifty percent (50%) of the outstanding shares or beneficial+ ownership of such entity.++2. License Grants and Conditions+--------------------------------++2.1. Grants++Each Contributor hereby grants You a world-wide, royalty-free,+non-exclusive license:++(a) under intellectual property rights (other than patent or trademark)+ Licensable by such Contributor to use, reproduce, make available,+ modify, display, perform, distribute, and otherwise exploit its+ Contributions, either on an unmodified basis, with Modifications, or+ as part of a Larger Work; and++(b) under Patent Claims of such Contributor to make, use, sell, offer+ for sale, have made, import, and otherwise transfer either its+ Contributions or its Contributor Version.++2.2. Effective Date++The licenses granted in Section 2.1 with respect to any Contribution+become effective for each Contribution on the date the Contributor first+distributes such Contribution.++2.3. Limitations on Grant Scope++The licenses granted in this Section 2 are the only rights granted under+this License. No additional rights or licenses will be implied from the+distribution or licensing of Covered Software under this License.+Notwithstanding Section 2.1(b) above, no patent license is granted by a+Contributor:++(a) for any code that a Contributor has removed from Covered Software;+ or++(b) for infringements caused by: (i) Your and any other third party's+ modifications of Covered Software, or (ii) the combination of its+ Contributions with other software (except as part of its Contributor+ Version); or++(c) under Patent Claims infringed by Covered Software in the absence of+ its Contributions.++This License does not grant any rights in the trademarks, service marks,+or logos of any Contributor (except as may be necessary to comply with+the notice requirements in Section 3.4).++2.4. Subsequent Licenses++No Contributor makes additional grants as a result of Your choice to+distribute the Covered Software under a subsequent version of this+License (see Section 10.2) or under the terms of a Secondary License (if+permitted under the terms of Section 3.3).++2.5. Representation++Each Contributor represents that the Contributor believes its+Contributions are its original creation(s) or it has sufficient rights+to grant the rights to its Contributions conveyed by this License.++2.6. Fair Use++This License is not intended to limit any rights You have under+applicable copyright doctrines of fair use, fair dealing, or other+equivalents.++2.7. Conditions++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted+in Section 2.1.++3. Responsibilities+-------------------++3.1. Distribution of Source Form++All distribution of Covered Software in Source Code Form, including any+Modifications that You create or to which You contribute, must be under+the terms of this License. You must inform recipients that the Source+Code Form of the Covered Software is governed by the terms of this+License, and how they can obtain a copy of this License. You may not+attempt to alter or restrict the recipients' rights in the Source Code+Form.++3.2. Distribution of Executable Form++If You distribute Covered Software in Executable Form then:++(a) such Covered Software must also be made available in Source Code+ Form, as described in Section 3.1, and You must inform recipients of+ the Executable Form how they can obtain a copy of such Source Code+ Form by reasonable means in a timely manner, at a charge no more+ than the cost of distribution to the recipient; and++(b) You may distribute such Executable Form under the terms of this+ License, or sublicense it under different terms, provided that the+ license for the Executable Form does not attempt to limit or alter+ the recipients' rights in the Source Code Form under this License.++3.3. Distribution of a Larger Work++You may create and distribute a Larger Work under terms of Your choice,+provided that You also comply with the requirements of this License for+the Covered Software. If the Larger Work is a combination of Covered+Software with a work governed by one or more Secondary Licenses, and the+Covered Software is not Incompatible With Secondary Licenses, this+License permits You to additionally distribute such Covered Software+under the terms of such Secondary License(s), so that the recipient of+the Larger Work may, at their option, further distribute the Covered+Software under the terms of either this License or such Secondary+License(s).++3.4. Notices++You may not remove or alter the substance of any license notices+(including copyright notices, patent notices, disclaimers of warranty,+or limitations of liability) contained within the Source Code Form of+the Covered Software, except that You may alter any license notices to+the extent required to remedy known factual inaccuracies.++3.5. Application of Additional Terms++You may choose to offer, and to charge a fee for, warranty, support,+indemnity or liability obligations to one or more recipients of Covered+Software. However, You may do so only on Your own behalf, and not on+behalf of any Contributor. You must make it absolutely clear that any+such warranty, support, indemnity, or liability obligation is offered by+You alone, and You hereby agree to indemnify every Contributor for any+liability incurred by such Contributor as a result of warranty, support,+indemnity or liability terms You offer. You may include additional+disclaimers of warranty and limitations of liability specific to any+jurisdiction.++4. Inability to Comply Due to Statute or Regulation+---------------------------------------------------++If it is impossible for You to comply with any of the terms of this+License with respect to some or all of the Covered Software due to+statute, judicial order, or regulation then You must: (a) comply with+the terms of this License to the maximum extent possible; and (b)+describe the limitations and the code they affect. Such description must+be placed in a text file included with all distributions of the Covered+Software under this License. Except to the extent prohibited by statute+or regulation, such description must be sufficiently detailed for a+recipient of ordinary skill to be able to understand it.++5. Termination+--------------++5.1. The rights granted under this License will terminate automatically+if You fail to comply with any of its terms. However, if You become+compliant, then the rights granted under this License from a particular+Contributor are reinstated (a) provisionally, unless and until such+Contributor explicitly and finally terminates Your grants, and (b) on an+ongoing basis, if such Contributor fails to notify You of the+non-compliance by some reasonable means prior to 60 days after You have+come back into compliance. Moreover, Your grants from a particular+Contributor are reinstated on an ongoing basis if such Contributor+notifies You of the non-compliance by some reasonable means, this is the+first time You have received notice of non-compliance with this License+from such Contributor, and You become compliant prior to 30 days after+Your receipt of the notice.++5.2. If You initiate litigation against any entity by asserting a patent+infringement claim (excluding declaratory judgment actions,+counter-claims, and cross-claims) alleging that a Contributor Version+directly or indirectly infringes any patent, then the rights granted to+You by any and all Contributors for the Covered Software under Section+2.1 of this License shall terminate.++5.3. In the event of termination under Sections 5.1 or 5.2 above, all+end user license agreements (excluding distributors and resellers) which+have been validly granted by You or Your distributors under this License+prior to termination shall survive termination.++************************************************************************+* *+* 6. Disclaimer of Warranty *+* ------------------------- *+* *+* Covered Software is provided under this License on an "as is" *+* basis, without warranty of any kind, either expressed, implied, or *+* statutory, including, without limitation, warranties that the *+* Covered Software is free of defects, merchantable, fit for a *+* particular purpose or non-infringing. The entire risk as to the *+* quality and performance of the Covered Software is with You. *+* Should any Covered Software prove defective in any respect, You *+* (not any Contributor) assume the cost of any necessary servicing, *+* repair, or correction. This disclaimer of warranty constitutes an *+* essential part of this License. No use of any Covered Software is *+* authorized under this License except under this disclaimer. *+* *+************************************************************************++************************************************************************+* *+* 7. Limitation of Liability *+* -------------------------- *+* *+* Under no circumstances and under no legal theory, whether tort *+* (including negligence), contract, or otherwise, shall any *+* Contributor, or anyone who distributes Covered Software as *+* permitted above, be liable to You for any direct, indirect, *+* special, incidental, or consequential damages of any character *+* including, without limitation, damages for lost profits, loss of *+* goodwill, work stoppage, computer failure or malfunction, or any *+* and all other commercial damages or losses, even if such party *+* shall have been informed of the possibility of such damages. This *+* limitation of liability shall not apply to liability for death or *+* personal injury resulting from such party's negligence to the *+* extent applicable law prohibits such limitation. Some *+* jurisdictions do not allow the exclusion or limitation of *+* incidental or consequential damages, so this exclusion and *+* limitation may not apply to You. *+* *+************************************************************************++8. Litigation+-------------++Any litigation relating to this License may be brought only in the+courts of a jurisdiction where the defendant maintains its principal+place of business and such litigation shall be governed by laws of that+jurisdiction, without reference to its conflict-of-law provisions.+Nothing in this Section shall prevent a party's ability to bring+cross-claims or counter-claims.++9. Miscellaneous+----------------++This License represents the complete agreement concerning the subject+matter hereof. If any provision of this License is held to be+unenforceable, such provision shall be reformed only to the extent+necessary to make it enforceable. Any law or regulation which provides+that the language of a contract shall be construed against the drafter+shall not be used to construe this License against a Contributor.++10. Versions of the License+---------------------------++10.1. New Versions++Mozilla Foundation is the license steward. Except as provided in Section+10.3, no one other than the license steward has the right to modify or+publish new versions of this License. Each version will be given a+distinguishing version number.++10.2. Effect of New Versions++You may distribute the Covered Software under the terms of the version+of the License under which You originally received the Covered Software,+or under the terms of any subsequent version published by the license+steward.++10.3. Modified Versions++If you create software not governed by this License, and you want to+create a new license for such software, you may create and use a+modified version of this License if you rename the license and remove+any references to the name of the license steward (except to note that+such modified license differs from this License).++10.4. Distributing Source Code Form that is Incompatible With Secondary+Licenses++If You choose to distribute Source Code Form that is Incompatible With+Secondary Licenses under the terms of this version of the License, the+notice described in Exhibit B of this License must be attached.++Exhibit A - Source Code Form License Notice+-------------------------------------------++ This Source Code Form is subject to the terms of the Mozilla Public+ License, v. 2.0. If a copy of the MPL was not distributed with this+ file, You can obtain one at http://mozilla.org/MPL/2.0/.++If it is not possible or desirable to put the notice in a particular+file, then You may include the notice in a location (such as a LICENSE+file in a relevant directory) where a recipient would be likely to look+for such a notice.++You may add additional accurate notices of copyright ownership.
+ README.md view
@@ -0,0 +1,45 @@+# Amazon WAF Regional SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version++`1.5.0`+++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-waf-regional)+and the [AWS API Reference](https://aws.amazon.com/documentation/).++The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),+which provides mechanisms for specifying AuthN/AuthZ information, sending requests,+and receiving responses.++Lenses are used for constructing and manipulating types,+due to the depth of nesting of AWS types and transparency regarding+de/serialisation into more palatable Haskell values.+The provided lenses should be compatible with any of the major lens libraries+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).++See [Network.AWS.WAFRegional](http://hackage.haskell.org/package/amazonka-waf-regional/docs/Network-AWS-WAFRegional.html)+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.+++## Licence++`amazonka-waf-regional` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).++Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.+Source files subject to this contain an additional licensing clause in their header.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ amazonka-waf-regional.cabal view
@@ -0,0 +1,148 @@+name: amazonka-waf-regional+version: 1.5.0+synopsis: Amazon WAF Regional SDK.+homepage: https://github.com/brendanhay/amazonka+bug-reports: https://github.com/brendanhay/amazonka/issues+license: MPL-2.0+license-file: LICENSE+author: Brendan Hay+maintainer: Brendan Hay <brendan.g.hay+amazonka@gmail.com>+copyright: Copyright (c) 2013-2017 Brendan Hay+category: Network, AWS, Cloud, Distributed Computing+build-type: Simple+cabal-version: >= 1.10+extra-source-files: README.md fixture/*.yaml fixture/*.proto src/.gitkeep+description:+ The types from this library are intended to be used with+ <http://hackage.haskell.org/package/amazonka amazonka>, which provides+ mechanisms for specifying AuthN/AuthZ information, sending requests,+ and receiving responses.+ .+ Lenses are used for constructing and manipulating types,+ due to the depth of nesting of AWS types and transparency regarding+ de/serialisation into more palatable Haskell values.+ The provided lenses should be compatible with any of the major lens libraries+ such as <http://hackage.haskell.org/package/lens lens> or+ <http://hackage.haskell.org/package/lens-family-core lens-family-core>.+ .+ See "Network.AWS.WAFRegional" or <https://aws.amazon.com/documentation/ the AWS documentation>+ to get started.++source-repository head+ type: git+ location: git://github.com/brendanhay/amazonka.git+ subdir: amazonka-waf-regional++library+ default-language: Haskell2010+ hs-source-dirs: src gen++ ghc-options:+ -Wall+ -fwarn-incomplete-uni-patterns+ -fwarn-incomplete-record-updates+ -funbox-strict-fields++ exposed-modules:+ Network.AWS.WAFRegional+ , Network.AWS.WAFRegional.AssociateWebACL+ , Network.AWS.WAFRegional.CreateByteMatchSet+ , Network.AWS.WAFRegional.CreateGeoMatchSet+ , Network.AWS.WAFRegional.CreateIPSet+ , Network.AWS.WAFRegional.CreateRateBasedRule+ , Network.AWS.WAFRegional.CreateRegexMatchSet+ , Network.AWS.WAFRegional.CreateRegexPatternSet+ , Network.AWS.WAFRegional.CreateRule+ , Network.AWS.WAFRegional.CreateSizeConstraintSet+ , Network.AWS.WAFRegional.CreateSqlInjectionMatchSet+ , Network.AWS.WAFRegional.CreateWebACL+ , Network.AWS.WAFRegional.CreateXSSMatchSet+ , Network.AWS.WAFRegional.DeleteByteMatchSet+ , Network.AWS.WAFRegional.DeleteGeoMatchSet+ , Network.AWS.WAFRegional.DeleteIPSet+ , Network.AWS.WAFRegional.DeleteRateBasedRule+ , Network.AWS.WAFRegional.DeleteRegexMatchSet+ , Network.AWS.WAFRegional.DeleteRegexPatternSet+ , Network.AWS.WAFRegional.DeleteRule+ , Network.AWS.WAFRegional.DeleteSizeConstraintSet+ , Network.AWS.WAFRegional.DeleteSqlInjectionMatchSet+ , Network.AWS.WAFRegional.DeleteWebACL+ , Network.AWS.WAFRegional.DeleteXSSMatchSet+ , Network.AWS.WAFRegional.DisassociateWebACL+ , Network.AWS.WAFRegional.GetByteMatchSet+ , Network.AWS.WAFRegional.GetChangeToken+ , Network.AWS.WAFRegional.GetChangeTokenStatus+ , Network.AWS.WAFRegional.GetGeoMatchSet+ , Network.AWS.WAFRegional.GetIPSet+ , Network.AWS.WAFRegional.GetRateBasedRule+ , Network.AWS.WAFRegional.GetRateBasedRuleManagedKeys+ , Network.AWS.WAFRegional.GetRegexMatchSet+ , Network.AWS.WAFRegional.GetRegexPatternSet+ , Network.AWS.WAFRegional.GetRule+ , Network.AWS.WAFRegional.GetSampledRequests+ , Network.AWS.WAFRegional.GetSizeConstraintSet+ , Network.AWS.WAFRegional.GetSqlInjectionMatchSet+ , Network.AWS.WAFRegional.GetWebACL+ , Network.AWS.WAFRegional.GetWebACLForResource+ , Network.AWS.WAFRegional.GetXSSMatchSet+ , Network.AWS.WAFRegional.ListByteMatchSets+ , Network.AWS.WAFRegional.ListGeoMatchSets+ , Network.AWS.WAFRegional.ListIPSets+ , Network.AWS.WAFRegional.ListRateBasedRules+ , Network.AWS.WAFRegional.ListRegexMatchSets+ , Network.AWS.WAFRegional.ListRegexPatternSets+ , Network.AWS.WAFRegional.ListResourcesForWebACL+ , Network.AWS.WAFRegional.ListRules+ , Network.AWS.WAFRegional.ListSizeConstraintSets+ , Network.AWS.WAFRegional.ListSqlInjectionMatchSets+ , Network.AWS.WAFRegional.ListWebACLs+ , Network.AWS.WAFRegional.ListXSSMatchSets+ , Network.AWS.WAFRegional.Types+ , Network.AWS.WAFRegional.UpdateByteMatchSet+ , Network.AWS.WAFRegional.UpdateGeoMatchSet+ , Network.AWS.WAFRegional.UpdateIPSet+ , Network.AWS.WAFRegional.UpdateRateBasedRule+ , Network.AWS.WAFRegional.UpdateRegexMatchSet+ , Network.AWS.WAFRegional.UpdateRegexPatternSet+ , Network.AWS.WAFRegional.UpdateRule+ , Network.AWS.WAFRegional.UpdateSizeConstraintSet+ , Network.AWS.WAFRegional.UpdateSqlInjectionMatchSet+ , Network.AWS.WAFRegional.UpdateWebACL+ , Network.AWS.WAFRegional.UpdateXSSMatchSet+ , Network.AWS.WAFRegional.Waiters++ other-modules:+ Network.AWS.WAFRegional.Types.Product+ , Network.AWS.WAFRegional.Types.Sum++ build-depends:+ amazonka-core == 1.5.0.*+ , base >= 4.7 && < 5++test-suite amazonka-waf-regional-test+ type: exitcode-stdio-1.0+ default-language: Haskell2010+ hs-source-dirs: test+ main-is: Main.hs++ ghc-options: -Wall -threaded++ -- This section is encoded by the template and any modules added by+ -- hand outside these namespaces will not correctly be added to the+ -- distribution package.+ other-modules:+ Test.AWS.WAFRegional+ , Test.AWS.Gen.WAFRegional+ , Test.AWS.WAFRegional.Internal++ build-depends:+ amazonka-core == 1.5.0.*+ , amazonka-test == 1.5.0.*+ , amazonka-waf-regional+ , base+ , bytestring+ , tasty+ , tasty-hunit+ , text+ , time+ , unordered-containers
+ fixture/AssociateWebACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/AssociateWebACLResponse.proto view
+ fixture/CreateByteMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateByteMatchSetResponse.proto view
+ fixture/CreateGeoMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateGeoMatchSetResponse.proto view
+ fixture/CreateIPSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateIPSetResponse.proto view
+ fixture/CreateRateBasedRule.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateRateBasedRuleResponse.proto view
+ fixture/CreateRegexMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateRegexMatchSetResponse.proto view
+ fixture/CreateRegexPatternSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateRegexPatternSetResponse.proto view
+ fixture/CreateRule.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateRuleResponse.proto view
+ fixture/CreateSizeConstraintSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateSizeConstraintSetResponse.proto view
+ fixture/CreateSqlInjectionMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateSqlInjectionMatchSetResponse.proto view
+ fixture/CreateWebACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateWebACLResponse.proto view
+ fixture/CreateXSSMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/CreateXSSMatchSetResponse.proto view
+ fixture/DeleteByteMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteByteMatchSetResponse.proto view
+ fixture/DeleteGeoMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteGeoMatchSetResponse.proto view
+ fixture/DeleteIPSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteIPSetResponse.proto view
+ fixture/DeleteRateBasedRule.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteRateBasedRuleResponse.proto view
+ fixture/DeleteRegexMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteRegexMatchSetResponse.proto view
+ fixture/DeleteRegexPatternSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteRegexPatternSetResponse.proto view
+ fixture/DeleteRule.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteRuleResponse.proto view
+ fixture/DeleteSizeConstraintSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteSizeConstraintSetResponse.proto view
+ fixture/DeleteSqlInjectionMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteSqlInjectionMatchSetResponse.proto view
+ fixture/DeleteWebACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteWebACLResponse.proto view
+ fixture/DeleteXSSMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DeleteXSSMatchSetResponse.proto view
+ fixture/DisassociateWebACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/DisassociateWebACLResponse.proto view
+ fixture/GetByteMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetByteMatchSetResponse.proto view
+ fixture/GetChangeToken.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetChangeTokenResponse.proto view
+ fixture/GetChangeTokenStatus.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetChangeTokenStatusResponse.proto view
+ fixture/GetGeoMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetGeoMatchSetResponse.proto view
+ fixture/GetIPSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetIPSetResponse.proto view
+ fixture/GetRateBasedRule.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetRateBasedRuleManagedKeys.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetRateBasedRuleManagedKeysResponse.proto view
+ fixture/GetRateBasedRuleResponse.proto view
+ fixture/GetRegexMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetRegexMatchSetResponse.proto view
+ fixture/GetRegexPatternSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetRegexPatternSetResponse.proto view
+ fixture/GetRule.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetRuleResponse.proto view
+ fixture/GetSampledRequests.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetSampledRequestsResponse.proto view
+ fixture/GetSizeConstraintSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetSizeConstraintSetResponse.proto view
+ fixture/GetSqlInjectionMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetSqlInjectionMatchSetResponse.proto view
+ fixture/GetWebACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetWebACLForResource.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetWebACLForResourceResponse.proto view
+ fixture/GetWebACLResponse.proto view
+ fixture/GetXSSMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/GetXSSMatchSetResponse.proto view
+ fixture/ListByteMatchSets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListByteMatchSetsResponse.proto view
+ fixture/ListGeoMatchSets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListGeoMatchSetsResponse.proto view
+ fixture/ListIPSets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListIPSetsResponse.proto view
+ fixture/ListRateBasedRules.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListRateBasedRulesResponse.proto view
+ fixture/ListRegexMatchSets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListRegexMatchSetsResponse.proto view
+ fixture/ListRegexPatternSets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListRegexPatternSetsResponse.proto view
+ fixture/ListResourcesForWebACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListResourcesForWebACLResponse.proto view
+ fixture/ListRules.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListRulesResponse.proto view
+ fixture/ListSizeConstraintSets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListSizeConstraintSetsResponse.proto view
+ fixture/ListSqlInjectionMatchSets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListSqlInjectionMatchSetsResponse.proto view
+ fixture/ListWebACLs.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListWebACLsResponse.proto view
+ fixture/ListXSSMatchSets.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/ListXSSMatchSetsResponse.proto view
+ fixture/UpdateByteMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateByteMatchSetResponse.proto view
+ fixture/UpdateGeoMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateGeoMatchSetResponse.proto view
+ fixture/UpdateIPSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateIPSetResponse.proto view
+ fixture/UpdateRateBasedRule.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateRateBasedRuleResponse.proto view
+ fixture/UpdateRegexMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateRegexMatchSetResponse.proto view
+ fixture/UpdateRegexPatternSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateRegexPatternSetResponse.proto view
+ fixture/UpdateRule.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateRuleResponse.proto view
+ fixture/UpdateSizeConstraintSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateSizeConstraintSetResponse.proto view
+ fixture/UpdateSqlInjectionMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateSqlInjectionMatchSetResponse.proto view
+ fixture/UpdateWebACL.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateWebACLResponse.proto view
+ fixture/UpdateXSSMatchSet.yaml view
@@ -0,0 +1,10 @@+---+method: POST+headers:+ Authorization: AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/waf-regional/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?+ Host: waf-regional.us-east-1.amazonaws.com+ Content-Type: application/x-www-form-urlencoded; charset=utf-8+ X-Amz-Content-SHA256: abcdef+ X-Amz-Date: 20091028T223200Z+body:+ ''
+ fixture/UpdateXSSMatchSetResponse.proto view
+ gen/Network/AWS/WAFRegional.hs view
@@ -0,0 +1,701 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.WAFRegional+-- Copyright : (c) 2013-2017 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)+--+-- This is the /AWS WAF Regional API Reference/ for using AWS WAF with Elastic Load Balancing (ELB) Application Load Balancers. The AWS WAF actions and data types listed in the reference are available for protecting Application Load Balancers. You can use these actions and data types by means of the endpoints listed in <http://docs.aws.amazon.com/general/latest/gr/rande.html#waf_region AWS Regions and Endpoints> . This guide is for developers who need detailed information about the AWS WAF API actions, data types, and errors. For detailed information about AWS WAF features and an overview of how to use the AWS WAF API, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+--+module Network.AWS.WAFRegional+ (+ -- * Service Configuration+ wAFRegional++ -- * Errors+ -- $errors++ -- ** WAFInvalidAccountException+ , _WAFInvalidAccountException++ -- ** WAFReferencedItemException+ , _WAFReferencedItemException++ -- ** WAFInvalidRegexPatternException+ , _WAFInvalidRegexPatternException++ -- ** WAFInvalidOperationException+ , _WAFInvalidOperationException++ -- ** WAFNonexistentItemException+ , _WAFNonexistentItemException++ -- ** WAFInvalidParameterException+ , _WAFInvalidParameterException++ -- ** WAFLimitsExceededException+ , _WAFLimitsExceededException++ -- ** WAFStaleDataException+ , _WAFStaleDataException++ -- ** WAFInternalErrorException+ , _WAFInternalErrorException++ -- ** WAFNonexistentContainerException+ , _WAFNonexistentContainerException++ -- ** WAFUnavailableEntityException+ , _WAFUnavailableEntityException++ -- ** WAFDisallowedNameException+ , _WAFDisallowedNameException++ -- ** WAFNonEmptyEntityException+ , _WAFNonEmptyEntityException++ -- * Waiters+ -- $waiters++ -- * Operations+ -- $operations++ -- ** ListRateBasedRules+ , module Network.AWS.WAFRegional.ListRateBasedRules++ -- ** GetSizeConstraintSet+ , module Network.AWS.WAFRegional.GetSizeConstraintSet++ -- ** DeleteRateBasedRule+ , module Network.AWS.WAFRegional.DeleteRateBasedRule++ -- ** UpdateRateBasedRule+ , module Network.AWS.WAFRegional.UpdateRateBasedRule++ -- ** UpdateRule+ , module Network.AWS.WAFRegional.UpdateRule++ -- ** DeleteRule+ , module Network.AWS.WAFRegional.DeleteRule++ -- ** CreateIPSet+ , module Network.AWS.WAFRegional.CreateIPSet++ -- ** GetChangeTokenStatus+ , module Network.AWS.WAFRegional.GetChangeTokenStatus++ -- ** DeleteWebACL+ , module Network.AWS.WAFRegional.DeleteWebACL++ -- ** UpdateWebACL+ , module Network.AWS.WAFRegional.UpdateWebACL++ -- ** ListWebACLs+ , module Network.AWS.WAFRegional.ListWebACLs++ -- ** ListRules+ , module Network.AWS.WAFRegional.ListRules++ -- ** CreateRule+ , module Network.AWS.WAFRegional.CreateRule++ -- ** CreateWebACL+ , module Network.AWS.WAFRegional.CreateWebACL++ -- ** GetGeoMatchSet+ , module Network.AWS.WAFRegional.GetGeoMatchSet++ -- ** ListByteMatchSets+ , module Network.AWS.WAFRegional.ListByteMatchSets++ -- ** ListGeoMatchSets+ , module Network.AWS.WAFRegional.ListGeoMatchSets++ -- ** DeleteRegexMatchSet+ , module Network.AWS.WAFRegional.DeleteRegexMatchSet++ -- ** UpdateRegexMatchSet+ , module Network.AWS.WAFRegional.UpdateRegexMatchSet++ -- ** GetIPSet+ , module Network.AWS.WAFRegional.GetIPSet++ -- ** GetWebACL+ , module Network.AWS.WAFRegional.GetWebACL++ -- ** GetRule+ , module Network.AWS.WAFRegional.GetRule++ -- ** DeleteXSSMatchSet+ , module Network.AWS.WAFRegional.DeleteXSSMatchSet++ -- ** UpdateXSSMatchSet+ , module Network.AWS.WAFRegional.UpdateXSSMatchSet++ -- ** ListXSSMatchSets+ , module Network.AWS.WAFRegional.ListXSSMatchSets++ -- ** CreateGeoMatchSet+ , module Network.AWS.WAFRegional.CreateGeoMatchSet++ -- ** GetChangeToken+ , module Network.AWS.WAFRegional.GetChangeToken++ -- ** ListSizeConstraintSets+ , module Network.AWS.WAFRegional.ListSizeConstraintSets++ -- ** ListResourcesForWebACL+ , module Network.AWS.WAFRegional.ListResourcesForWebACL++ -- ** GetSampledRequests+ , module Network.AWS.WAFRegional.GetSampledRequests++ -- ** GetSqlInjectionMatchSet+ , module Network.AWS.WAFRegional.GetSqlInjectionMatchSet++ -- ** GetWebACLForResource+ , module Network.AWS.WAFRegional.GetWebACLForResource++ -- ** DisassociateWebACL+ , module Network.AWS.WAFRegional.DisassociateWebACL++ -- ** CreateSqlInjectionMatchSet+ , module Network.AWS.WAFRegional.CreateSqlInjectionMatchSet++ -- ** GetXSSMatchSet+ , module Network.AWS.WAFRegional.GetXSSMatchSet++ -- ** CreateByteMatchSet+ , module Network.AWS.WAFRegional.CreateByteMatchSet++ -- ** UpdateByteMatchSet+ , module Network.AWS.WAFRegional.UpdateByteMatchSet++ -- ** DeleteByteMatchSet+ , module Network.AWS.WAFRegional.DeleteByteMatchSet++ -- ** GetRateBasedRuleManagedKeys+ , module Network.AWS.WAFRegional.GetRateBasedRuleManagedKeys++ -- ** AssociateWebACL+ , module Network.AWS.WAFRegional.AssociateWebACL++ -- ** GetRegexMatchSet+ , module Network.AWS.WAFRegional.GetRegexMatchSet++ -- ** DeleteIPSet+ , module Network.AWS.WAFRegional.DeleteIPSet++ -- ** UpdateIPSet+ , module Network.AWS.WAFRegional.UpdateIPSet++ -- ** ListIPSets+ , module Network.AWS.WAFRegional.ListIPSets++ -- ** ListRegexMatchSets+ , module Network.AWS.WAFRegional.ListRegexMatchSets++ -- ** CreateXSSMatchSet+ , module Network.AWS.WAFRegional.CreateXSSMatchSet++ -- ** DeleteGeoMatchSet+ , module Network.AWS.WAFRegional.DeleteGeoMatchSet++ -- ** UpdateGeoMatchSet+ , module Network.AWS.WAFRegional.UpdateGeoMatchSet++ -- ** GetByteMatchSet+ , module Network.AWS.WAFRegional.GetByteMatchSet++ -- ** CreateRegexMatchSet+ , module Network.AWS.WAFRegional.CreateRegexMatchSet++ -- ** GetRateBasedRule+ , module Network.AWS.WAFRegional.GetRateBasedRule++ -- ** CreateRegexPatternSet+ , module Network.AWS.WAFRegional.CreateRegexPatternSet++ -- ** DeleteSizeConstraintSet+ , module Network.AWS.WAFRegional.DeleteSizeConstraintSet++ -- ** UpdateSizeConstraintSet+ , module Network.AWS.WAFRegional.UpdateSizeConstraintSet++ -- ** DeleteRegexPatternSet+ , module Network.AWS.WAFRegional.DeleteRegexPatternSet++ -- ** UpdateRegexPatternSet+ , module Network.AWS.WAFRegional.UpdateRegexPatternSet++ -- ** CreateSizeConstraintSet+ , module Network.AWS.WAFRegional.CreateSizeConstraintSet++ -- ** ListRegexPatternSets+ , module Network.AWS.WAFRegional.ListRegexPatternSets++ -- ** ListSqlInjectionMatchSets+ , module Network.AWS.WAFRegional.ListSqlInjectionMatchSets++ -- ** GetRegexPatternSet+ , module Network.AWS.WAFRegional.GetRegexPatternSet++ -- ** CreateRateBasedRule+ , module Network.AWS.WAFRegional.CreateRateBasedRule++ -- ** DeleteSqlInjectionMatchSet+ , module Network.AWS.WAFRegional.DeleteSqlInjectionMatchSet++ -- ** UpdateSqlInjectionMatchSet+ , module Network.AWS.WAFRegional.UpdateSqlInjectionMatchSet++ -- * Types++ -- ** ChangeAction+ , ChangeAction (..)++ -- ** ChangeTokenStatus+ , ChangeTokenStatus (..)++ -- ** ComparisonOperator+ , ComparisonOperator (..)++ -- ** GeoMatchConstraintType+ , GeoMatchConstraintType (..)++ -- ** GeoMatchConstraintValue+ , GeoMatchConstraintValue (..)++ -- ** IPSetDescriptorType+ , IPSetDescriptorType (..)++ -- ** MatchFieldType+ , MatchFieldType (..)++ -- ** PositionalConstraint+ , PositionalConstraint (..)++ -- ** PredicateType+ , PredicateType (..)++ -- ** RateKey+ , RateKey (..)++ -- ** TextTransformation+ , TextTransformation (..)++ -- ** WafActionType+ , WafActionType (..)++ -- ** WafRuleType+ , WafRuleType (..)++ -- ** ActivatedRule+ , ActivatedRule+ , activatedRule+ , arType+ , arPriority+ , arRuleId+ , arAction++ -- ** ByteMatchSet+ , ByteMatchSet+ , byteMatchSet+ , bmsName+ , bmsByteMatchSetId+ , bmsByteMatchTuples++ -- ** ByteMatchSetSummary+ , ByteMatchSetSummary+ , byteMatchSetSummary+ , bmssByteMatchSetId+ , bmssName++ -- ** ByteMatchSetUpdate+ , ByteMatchSetUpdate+ , byteMatchSetUpdate+ , bmsuAction+ , bmsuByteMatchTuple++ -- ** ByteMatchTuple+ , ByteMatchTuple+ , byteMatchTuple+ , bmtFieldToMatch+ , bmtTargetString+ , bmtTextTransformation+ , bmtPositionalConstraint++ -- ** FieldToMatch+ , FieldToMatch+ , fieldToMatch+ , ftmData+ , ftmType++ -- ** GeoMatchConstraint+ , GeoMatchConstraint+ , geoMatchConstraint+ , gmcType+ , gmcValue++ -- ** GeoMatchSet+ , GeoMatchSet+ , geoMatchSet+ , gmsName+ , gmsGeoMatchSetId+ , gmsGeoMatchConstraints++ -- ** GeoMatchSetSummary+ , GeoMatchSetSummary+ , geoMatchSetSummary+ , gmssGeoMatchSetId+ , gmssName++ -- ** GeoMatchSetUpdate+ , GeoMatchSetUpdate+ , geoMatchSetUpdate+ , gmsuAction+ , gmsuGeoMatchConstraint++ -- ** HTTPHeader+ , HTTPHeader+ , hTTPHeader+ , httphValue+ , httphName++ -- ** HTTPRequest+ , HTTPRequest+ , hTTPRequest+ , httprHTTPVersion+ , httprCountry+ , httprURI+ , httprHeaders+ , httprMethod+ , httprClientIP++ -- ** IPSet+ , IPSet+ , ipSet+ , isName+ , isIPSetId+ , isIPSetDescriptors++ -- ** IPSetDescriptor+ , IPSetDescriptor+ , ipSetDescriptor+ , isdType+ , isdValue++ -- ** IPSetSummary+ , IPSetSummary+ , ipSetSummary+ , issIPSetId+ , issName++ -- ** IPSetUpdate+ , IPSetUpdate+ , ipSetUpdate+ , isuAction+ , isuIPSetDescriptor++ -- ** Predicate+ , Predicate+ , predicate+ , pNegated+ , pType+ , pDataId++ -- ** RateBasedRule+ , RateBasedRule+ , rateBasedRule+ , rbrMetricName+ , rbrName+ , rbrRuleId+ , rbrMatchPredicates+ , rbrRateKey+ , rbrRateLimit++ -- ** RegexMatchSet+ , RegexMatchSet+ , regexMatchSet+ , rmsName+ , rmsRegexMatchTuples+ , rmsRegexMatchSetId++ -- ** RegexMatchSetSummary+ , RegexMatchSetSummary+ , regexMatchSetSummary+ , rmssRegexMatchSetId+ , rmssName++ -- ** RegexMatchSetUpdate+ , RegexMatchSetUpdate+ , regexMatchSetUpdate+ , rmsuAction+ , rmsuRegexMatchTuple++ -- ** RegexMatchTuple+ , RegexMatchTuple+ , regexMatchTuple+ , rmtFieldToMatch+ , rmtTextTransformation+ , rmtRegexPatternSetId++ -- ** RegexPatternSet+ , RegexPatternSet+ , regexPatternSet+ , rpsName+ , rpsRegexPatternSetId+ , rpsRegexPatternStrings++ -- ** RegexPatternSetSummary+ , RegexPatternSetSummary+ , regexPatternSetSummary+ , rpssRegexPatternSetId+ , rpssName++ -- ** RegexPatternSetUpdate+ , RegexPatternSetUpdate+ , regexPatternSetUpdate+ , rpsuAction+ , rpsuRegexPatternString++ -- ** Rule+ , Rule+ , rule+ , rMetricName+ , rName+ , rRuleId+ , rPredicates++ -- ** RuleSummary+ , RuleSummary+ , ruleSummary+ , rsRuleId+ , rsName++ -- ** RuleUpdate+ , RuleUpdate+ , ruleUpdate+ , ruAction+ , ruPredicate++ -- ** SampledHTTPRequest+ , SampledHTTPRequest+ , sampledHTTPRequest+ , shttprAction+ , shttprTimestamp+ , shttprRequest+ , shttprWeight++ -- ** SizeConstraint+ , SizeConstraint+ , sizeConstraint+ , scFieldToMatch+ , scTextTransformation+ , scComparisonOperator+ , scSize++ -- ** SizeConstraintSet+ , SizeConstraintSet+ , sizeConstraintSet+ , scsName+ , scsSizeConstraintSetId+ , scsSizeConstraints++ -- ** SizeConstraintSetSummary+ , SizeConstraintSetSummary+ , sizeConstraintSetSummary+ , scssSizeConstraintSetId+ , scssName++ -- ** SizeConstraintSetUpdate+ , SizeConstraintSetUpdate+ , sizeConstraintSetUpdate+ , scsuAction+ , scsuSizeConstraint++ -- ** SqlInjectionMatchSet+ , SqlInjectionMatchSet+ , sqlInjectionMatchSet+ , simsName+ , simsSqlInjectionMatchSetId+ , simsSqlInjectionMatchTuples++ -- ** SqlInjectionMatchSetSummary+ , SqlInjectionMatchSetSummary+ , sqlInjectionMatchSetSummary+ , simssSqlInjectionMatchSetId+ , simssName++ -- ** SqlInjectionMatchSetUpdate+ , SqlInjectionMatchSetUpdate+ , sqlInjectionMatchSetUpdate+ , simsuAction+ , simsuSqlInjectionMatchTuple++ -- ** SqlInjectionMatchTuple+ , SqlInjectionMatchTuple+ , sqlInjectionMatchTuple+ , simtFieldToMatch+ , simtTextTransformation++ -- ** TimeWindow+ , TimeWindow+ , timeWindow+ , twStartTime+ , twEndTime++ -- ** WafAction+ , WafAction+ , wafAction+ , waType++ -- ** WebACL+ , WebACL+ , webACL+ , waMetricName+ , waName+ , waWebACLId+ , waDefaultAction+ , waRules++ -- ** WebACLSummary+ , WebACLSummary+ , webACLSummary+ , wasWebACLId+ , wasName++ -- ** WebACLUpdate+ , WebACLUpdate+ , webACLUpdate+ , wauAction+ , wauActivatedRule++ -- ** XSSMatchSet+ , XSSMatchSet+ , xssMatchSet+ , xmsName+ , xmsXSSMatchSetId+ , xmsXSSMatchTuples++ -- ** XSSMatchSetSummary+ , XSSMatchSetSummary+ , xssMatchSetSummary+ , xmssXSSMatchSetId+ , xmssName++ -- ** XSSMatchSetUpdate+ , XSSMatchSetUpdate+ , xssMatchSetUpdate+ , xmsuAction+ , xmsuXSSMatchTuple++ -- ** XSSMatchTuple+ , XSSMatchTuple+ , xssMatchTuple+ , xmtFieldToMatch+ , xmtTextTransformation+ ) where++import Network.AWS.WAFRegional.AssociateWebACL+import Network.AWS.WAFRegional.CreateByteMatchSet+import Network.AWS.WAFRegional.CreateGeoMatchSet+import Network.AWS.WAFRegional.CreateIPSet+import Network.AWS.WAFRegional.CreateRateBasedRule+import Network.AWS.WAFRegional.CreateRegexMatchSet+import Network.AWS.WAFRegional.CreateRegexPatternSet+import Network.AWS.WAFRegional.CreateRule+import Network.AWS.WAFRegional.CreateSizeConstraintSet+import Network.AWS.WAFRegional.CreateSqlInjectionMatchSet+import Network.AWS.WAFRegional.CreateWebACL+import Network.AWS.WAFRegional.CreateXSSMatchSet+import Network.AWS.WAFRegional.DeleteByteMatchSet+import Network.AWS.WAFRegional.DeleteGeoMatchSet+import Network.AWS.WAFRegional.DeleteIPSet+import Network.AWS.WAFRegional.DeleteRateBasedRule+import Network.AWS.WAFRegional.DeleteRegexMatchSet+import Network.AWS.WAFRegional.DeleteRegexPatternSet+import Network.AWS.WAFRegional.DeleteRule+import Network.AWS.WAFRegional.DeleteSizeConstraintSet+import Network.AWS.WAFRegional.DeleteSqlInjectionMatchSet+import Network.AWS.WAFRegional.DeleteWebACL+import Network.AWS.WAFRegional.DeleteXSSMatchSet+import Network.AWS.WAFRegional.DisassociateWebACL+import Network.AWS.WAFRegional.GetByteMatchSet+import Network.AWS.WAFRegional.GetChangeToken+import Network.AWS.WAFRegional.GetChangeTokenStatus+import Network.AWS.WAFRegional.GetGeoMatchSet+import Network.AWS.WAFRegional.GetIPSet+import Network.AWS.WAFRegional.GetRateBasedRule+import Network.AWS.WAFRegional.GetRateBasedRuleManagedKeys+import Network.AWS.WAFRegional.GetRegexMatchSet+import Network.AWS.WAFRegional.GetRegexPatternSet+import Network.AWS.WAFRegional.GetRule+import Network.AWS.WAFRegional.GetSampledRequests+import Network.AWS.WAFRegional.GetSizeConstraintSet+import Network.AWS.WAFRegional.GetSqlInjectionMatchSet+import Network.AWS.WAFRegional.GetWebACL+import Network.AWS.WAFRegional.GetWebACLForResource+import Network.AWS.WAFRegional.GetXSSMatchSet+import Network.AWS.WAFRegional.ListByteMatchSets+import Network.AWS.WAFRegional.ListGeoMatchSets+import Network.AWS.WAFRegional.ListIPSets+import Network.AWS.WAFRegional.ListRateBasedRules+import Network.AWS.WAFRegional.ListRegexMatchSets+import Network.AWS.WAFRegional.ListRegexPatternSets+import Network.AWS.WAFRegional.ListResourcesForWebACL+import Network.AWS.WAFRegional.ListRules+import Network.AWS.WAFRegional.ListSizeConstraintSets+import Network.AWS.WAFRegional.ListSqlInjectionMatchSets+import Network.AWS.WAFRegional.ListWebACLs+import Network.AWS.WAFRegional.ListXSSMatchSets+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.UpdateByteMatchSet+import Network.AWS.WAFRegional.UpdateGeoMatchSet+import Network.AWS.WAFRegional.UpdateIPSet+import Network.AWS.WAFRegional.UpdateRateBasedRule+import Network.AWS.WAFRegional.UpdateRegexMatchSet+import Network.AWS.WAFRegional.UpdateRegexPatternSet+import Network.AWS.WAFRegional.UpdateRule+import Network.AWS.WAFRegional.UpdateSizeConstraintSet+import Network.AWS.WAFRegional.UpdateSqlInjectionMatchSet+import Network.AWS.WAFRegional.UpdateWebACL+import Network.AWS.WAFRegional.UpdateXSSMatchSet+import Network.AWS.WAFRegional.Waiters++{- $errors+Error matchers are designed for use with the functions provided by+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.+This allows catching (and rethrowing) service specific errors returned+by 'WAFRegional'.+-}++{- $operations+Some AWS operations return results that are incomplete and require subsequent+requests in order to obtain the entire result set. The process of sending+subsequent requests to continue where a previous request left off is called+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to+1000 objects at a time, and you must send subsequent requests with the+appropriate Marker in order to retrieve the next page of results.++Operations that have an 'AWSPager' instance can transparently perform subsequent+requests, correctly setting Markers and other request facets to iterate through+the entire result set of a truncated API operation. Operations which support+this have an additional note in the documentation.++Many operations have the ability to filter results on the server side. See the+individual operation parameters for details.+-}++{- $waiters+Waiters poll by repeatedly sending a request until some remote success condition+configured by the 'Wait' specification is fulfilled. The 'Wait' specification+determines how many attempts should be made, in addition to delay and retry strategies.+-}
+ gen/Network/AWS/WAFRegional/AssociateWebACL.hs view
@@ -0,0 +1,134 @@+{-# 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.WAFRegional.AssociateWebACL+-- Copyright : (c) 2013-2017 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)+--+-- Associates a web ACL with a resource.+--+--+module Network.AWS.WAFRegional.AssociateWebACL+ (+ -- * Creating a Request+ associateWebACL+ , AssociateWebACL+ -- * Request Lenses+ , awaWebACLId+ , awaResourceARN++ -- * Destructuring the Response+ , associateWebACLResponse+ , AssociateWebACLResponse+ -- * Response Lenses+ , awarsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'associateWebACL' smart constructor.+data AssociateWebACL = AssociateWebACL'+ { _awaWebACLId :: !Text+ , _awaResourceARN :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AssociateWebACL' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'awaWebACLId' - A unique identifier (ID) for the web ACL.+--+-- * 'awaResourceARN' - The ARN (Amazon Resource Name) of the resource to be protected.+associateWebACL+ :: Text -- ^ 'awaWebACLId'+ -> Text -- ^ 'awaResourceARN'+ -> AssociateWebACL+associateWebACL pWebACLId_ pResourceARN_ =+ AssociateWebACL' {_awaWebACLId = pWebACLId_, _awaResourceARN = pResourceARN_}+++-- | A unique identifier (ID) for the web ACL.+awaWebACLId :: Lens' AssociateWebACL Text+awaWebACLId = lens _awaWebACLId (\ s a -> s{_awaWebACLId = a});++-- | The ARN (Amazon Resource Name) of the resource to be protected.+awaResourceARN :: Lens' AssociateWebACL Text+awaResourceARN = lens _awaResourceARN (\ s a -> s{_awaResourceARN = a});++instance AWSRequest AssociateWebACL where+ type Rs AssociateWebACL = AssociateWebACLResponse+ request = postJSON wAFRegional+ response+ = receiveEmpty+ (\ s h x ->+ AssociateWebACLResponse' <$> (pure (fromEnum s)))++instance Hashable AssociateWebACL where++instance NFData AssociateWebACL where++instance ToHeaders AssociateWebACL where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.AssociateWebACL" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON AssociateWebACL where+ toJSON AssociateWebACL'{..}+ = object+ (catMaybes+ [Just ("WebACLId" .= _awaWebACLId),+ Just ("ResourceArn" .= _awaResourceARN)])++instance ToPath AssociateWebACL where+ toPath = const "/"++instance ToQuery AssociateWebACL where+ toQuery = const mempty++-- | /See:/ 'associateWebACLResponse' smart constructor.+newtype AssociateWebACLResponse = AssociateWebACLResponse'+ { _awarsResponseStatus :: Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'AssociateWebACLResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'awarsResponseStatus' - -- | The response status code.+associateWebACLResponse+ :: Int -- ^ 'awarsResponseStatus'+ -> AssociateWebACLResponse+associateWebACLResponse pResponseStatus_ =+ AssociateWebACLResponse' {_awarsResponseStatus = pResponseStatus_}+++-- | -- | The response status code.+awarsResponseStatus :: Lens' AssociateWebACLResponse Int+awarsResponseStatus = lens _awarsResponseStatus (\ s a -> s{_awarsResponseStatus = a});++instance NFData AssociateWebACLResponse where
+ gen/Network/AWS/WAFRegional/CreateByteMatchSet.hs view
@@ -0,0 +1,171 @@+{-# 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.WAFRegional.CreateByteMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Creates a @ByteMatchSet@ . You then use 'UpdateByteMatchSet' to identify the part of a web request that you want AWS WAF to inspect, such as the values of the @User-Agent@ header or the query string. For example, you can create a @ByteMatchSet@ that matches any requests with @User-Agent@ headers that contain the string @BadBot@ . You can then configure AWS WAF to reject those requests.+--+--+-- To create and configure a @ByteMatchSet@ , perform the following steps:+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateByteMatchSet@ request.+--+-- * Submit a @CreateByteMatchSet@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an @UpdateByteMatchSet@ request.+--+-- * Submit an 'UpdateByteMatchSet' request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateByteMatchSet+ (+ -- * Creating a Request+ createByteMatchSet+ , CreateByteMatchSet+ -- * Request Lenses+ , cbmsName+ , cbmsChangeToken++ -- * Destructuring the Response+ , createByteMatchSetResponse+ , CreateByteMatchSetResponse+ -- * Response Lenses+ , cbmsrsByteMatchSet+ , cbmsrsChangeToken+ , cbmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'createByteMatchSet' smart constructor.+data CreateByteMatchSet = CreateByteMatchSet'+ { _cbmsName :: !Text+ , _cbmsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateByteMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cbmsName' - A friendly name or description of the 'ByteMatchSet' . You can't change @Name@ after you create a @ByteMatchSet@ .+--+-- * 'cbmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createByteMatchSet+ :: Text -- ^ 'cbmsName'+ -> Text -- ^ 'cbmsChangeToken'+ -> CreateByteMatchSet+createByteMatchSet pName_ pChangeToken_ =+ CreateByteMatchSet' {_cbmsName = pName_, _cbmsChangeToken = pChangeToken_}+++-- | A friendly name or description of the 'ByteMatchSet' . You can't change @Name@ after you create a @ByteMatchSet@ .+cbmsName :: Lens' CreateByteMatchSet Text+cbmsName = lens _cbmsName (\ s a -> s{_cbmsName = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+cbmsChangeToken :: Lens' CreateByteMatchSet Text+cbmsChangeToken = lens _cbmsChangeToken (\ s a -> s{_cbmsChangeToken = a});++instance AWSRequest CreateByteMatchSet where+ type Rs CreateByteMatchSet =+ CreateByteMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateByteMatchSetResponse' <$>+ (x .?> "ByteMatchSet") <*> (x .?> "ChangeToken") <*>+ (pure (fromEnum s)))++instance Hashable CreateByteMatchSet where++instance NFData CreateByteMatchSet where++instance ToHeaders CreateByteMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateByteMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateByteMatchSet where+ toJSON CreateByteMatchSet'{..}+ = object+ (catMaybes+ [Just ("Name" .= _cbmsName),+ Just ("ChangeToken" .= _cbmsChangeToken)])++instance ToPath CreateByteMatchSet where+ toPath = const "/"++instance ToQuery CreateByteMatchSet where+ toQuery = const mempty++-- | /See:/ 'createByteMatchSetResponse' smart constructor.+data CreateByteMatchSetResponse = CreateByteMatchSetResponse'+ { _cbmsrsByteMatchSet :: !(Maybe ByteMatchSet)+ , _cbmsrsChangeToken :: !(Maybe Text)+ , _cbmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateByteMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cbmsrsByteMatchSet' - A 'ByteMatchSet' that contains no @ByteMatchTuple@ objects.+--+-- * 'cbmsrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateByteMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'cbmsrsResponseStatus' - -- | The response status code.+createByteMatchSetResponse+ :: Int -- ^ 'cbmsrsResponseStatus'+ -> CreateByteMatchSetResponse+createByteMatchSetResponse pResponseStatus_ =+ CreateByteMatchSetResponse'+ { _cbmsrsByteMatchSet = Nothing+ , _cbmsrsChangeToken = Nothing+ , _cbmsrsResponseStatus = pResponseStatus_+ }+++-- | A 'ByteMatchSet' that contains no @ByteMatchTuple@ objects.+cbmsrsByteMatchSet :: Lens' CreateByteMatchSetResponse (Maybe ByteMatchSet)+cbmsrsByteMatchSet = lens _cbmsrsByteMatchSet (\ s a -> s{_cbmsrsByteMatchSet = a});++-- | The @ChangeToken@ that you used to submit the @CreateByteMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+cbmsrsChangeToken :: Lens' CreateByteMatchSetResponse (Maybe Text)+cbmsrsChangeToken = lens _cbmsrsChangeToken (\ s a -> s{_cbmsrsChangeToken = a});++-- | -- | The response status code.+cbmsrsResponseStatus :: Lens' CreateByteMatchSetResponse Int+cbmsrsResponseStatus = lens _cbmsrsResponseStatus (\ s a -> s{_cbmsrsResponseStatus = a});++instance NFData CreateByteMatchSetResponse where
+ gen/Network/AWS/WAFRegional/CreateGeoMatchSet.hs view
@@ -0,0 +1,170 @@+{-# 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.WAFRegional.CreateGeoMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Creates an 'GeoMatchSet' , which you use to specify which web requests you want to allow or block based on the country that the requests originate from. For example, if you're receiving a lot of requests from one or more countries and you want to block the requests, you can create an @GeoMatchSet@ that contains those countries and then configure AWS WAF to block the requests.+--+--+-- To create and configure a @GeoMatchSet@ , perform the following steps:+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateGeoMatchSet@ request.+--+-- * Submit a @CreateGeoMatchSet@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateGeoMatchSet' request.+--+-- * Submit an @UpdateGeoMatchSetSet@ request to specify the countries 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateGeoMatchSet+ (+ -- * Creating a Request+ createGeoMatchSet+ , CreateGeoMatchSet+ -- * Request Lenses+ , cgmsName+ , cgmsChangeToken++ -- * Destructuring the Response+ , createGeoMatchSetResponse+ , CreateGeoMatchSetResponse+ -- * Response Lenses+ , cgmsrsGeoMatchSet+ , cgmsrsChangeToken+ , cgmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'createGeoMatchSet' smart constructor.+data CreateGeoMatchSet = CreateGeoMatchSet'+ { _cgmsName :: !Text+ , _cgmsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateGeoMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cgmsName' - A friendly name or description of the 'GeoMatchSet' . You can't change @Name@ after you create the @GeoMatchSet@ .+--+-- * 'cgmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createGeoMatchSet+ :: Text -- ^ 'cgmsName'+ -> Text -- ^ 'cgmsChangeToken'+ -> CreateGeoMatchSet+createGeoMatchSet pName_ pChangeToken_ =+ CreateGeoMatchSet' {_cgmsName = pName_, _cgmsChangeToken = pChangeToken_}+++-- | A friendly name or description of the 'GeoMatchSet' . You can't change @Name@ after you create the @GeoMatchSet@ .+cgmsName :: Lens' CreateGeoMatchSet Text+cgmsName = lens _cgmsName (\ s a -> s{_cgmsName = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+cgmsChangeToken :: Lens' CreateGeoMatchSet Text+cgmsChangeToken = lens _cgmsChangeToken (\ s a -> s{_cgmsChangeToken = a});++instance AWSRequest CreateGeoMatchSet where+ type Rs CreateGeoMatchSet = CreateGeoMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateGeoMatchSetResponse' <$>+ (x .?> "GeoMatchSet") <*> (x .?> "ChangeToken") <*>+ (pure (fromEnum s)))++instance Hashable CreateGeoMatchSet where++instance NFData CreateGeoMatchSet where++instance ToHeaders CreateGeoMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateGeoMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateGeoMatchSet where+ toJSON CreateGeoMatchSet'{..}+ = object+ (catMaybes+ [Just ("Name" .= _cgmsName),+ Just ("ChangeToken" .= _cgmsChangeToken)])++instance ToPath CreateGeoMatchSet where+ toPath = const "/"++instance ToQuery CreateGeoMatchSet where+ toQuery = const mempty++-- | /See:/ 'createGeoMatchSetResponse' smart constructor.+data CreateGeoMatchSetResponse = CreateGeoMatchSetResponse'+ { _cgmsrsGeoMatchSet :: !(Maybe GeoMatchSet)+ , _cgmsrsChangeToken :: !(Maybe Text)+ , _cgmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateGeoMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cgmsrsGeoMatchSet' - The 'GeoMatchSet' returned in the @CreateGeoMatchSet@ response. The @GeoMatchSet@ contains no @GeoMatchConstraints@ .+--+-- * 'cgmsrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateGeoMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'cgmsrsResponseStatus' - -- | The response status code.+createGeoMatchSetResponse+ :: Int -- ^ 'cgmsrsResponseStatus'+ -> CreateGeoMatchSetResponse+createGeoMatchSetResponse pResponseStatus_ =+ CreateGeoMatchSetResponse'+ { _cgmsrsGeoMatchSet = Nothing+ , _cgmsrsChangeToken = Nothing+ , _cgmsrsResponseStatus = pResponseStatus_+ }+++-- | The 'GeoMatchSet' returned in the @CreateGeoMatchSet@ response. The @GeoMatchSet@ contains no @GeoMatchConstraints@ .+cgmsrsGeoMatchSet :: Lens' CreateGeoMatchSetResponse (Maybe GeoMatchSet)+cgmsrsGeoMatchSet = lens _cgmsrsGeoMatchSet (\ s a -> s{_cgmsrsGeoMatchSet = a});++-- | The @ChangeToken@ that you used to submit the @CreateGeoMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+cgmsrsChangeToken :: Lens' CreateGeoMatchSetResponse (Maybe Text)+cgmsrsChangeToken = lens _cgmsrsChangeToken (\ s a -> s{_cgmsrsChangeToken = a});++-- | -- | The response status code.+cgmsrsResponseStatus :: Lens' CreateGeoMatchSetResponse Int+cgmsrsResponseStatus = lens _cgmsrsResponseStatus (\ s a -> s{_cgmsrsResponseStatus = a});++instance NFData CreateGeoMatchSetResponse where
+ gen/Network/AWS/WAFRegional/CreateIPSet.hs view
@@ -0,0 +1,170 @@+{-# 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.WAFRegional.CreateIPSet+-- Copyright : (c) 2013-2017 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)+--+-- Creates an 'IPSet' , which you use to specify which web requests you want to allow or block based on the IP addresses that the requests originate from. For example, if you're receiving a lot of requests from one or more individual IP addresses or one or more ranges of IP addresses and you want to block the requests, you can create an @IPSet@ that contains those IP addresses and then configure AWS WAF to block the requests.+--+--+-- To create and configure an @IPSet@ , perform the following steps:+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateIPSet@ request.+--+-- * Submit a @CreateIPSet@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateIPSet' request.+--+-- * Submit an @UpdateIPSet@ request to specify the IP addresses 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateIPSet+ (+ -- * Creating a Request+ createIPSet+ , CreateIPSet+ -- * Request Lenses+ , cisName+ , cisChangeToken++ -- * Destructuring the Response+ , createIPSetResponse+ , CreateIPSetResponse+ -- * Response Lenses+ , cisrsChangeToken+ , cisrsIPSet+ , cisrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'createIPSet' smart constructor.+data CreateIPSet = CreateIPSet'+ { _cisName :: !Text+ , _cisChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateIPSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cisName' - A friendly name or description of the 'IPSet' . You can't change @Name@ after you create the @IPSet@ .+--+-- * 'cisChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createIPSet+ :: Text -- ^ 'cisName'+ -> Text -- ^ 'cisChangeToken'+ -> CreateIPSet+createIPSet pName_ pChangeToken_ =+ CreateIPSet' {_cisName = pName_, _cisChangeToken = pChangeToken_}+++-- | A friendly name or description of the 'IPSet' . You can't change @Name@ after you create the @IPSet@ .+cisName :: Lens' CreateIPSet Text+cisName = lens _cisName (\ s a -> s{_cisName = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+cisChangeToken :: Lens' CreateIPSet Text+cisChangeToken = lens _cisChangeToken (\ s a -> s{_cisChangeToken = a});++instance AWSRequest CreateIPSet where+ type Rs CreateIPSet = CreateIPSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateIPSetResponse' <$>+ (x .?> "ChangeToken") <*> (x .?> "IPSet") <*>+ (pure (fromEnum s)))++instance Hashable CreateIPSet where++instance NFData CreateIPSet where++instance ToHeaders CreateIPSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateIPSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateIPSet where+ toJSON CreateIPSet'{..}+ = object+ (catMaybes+ [Just ("Name" .= _cisName),+ Just ("ChangeToken" .= _cisChangeToken)])++instance ToPath CreateIPSet where+ toPath = const "/"++instance ToQuery CreateIPSet where+ toQuery = const mempty++-- | /See:/ 'createIPSetResponse' smart constructor.+data CreateIPSetResponse = CreateIPSetResponse'+ { _cisrsChangeToken :: !(Maybe Text)+ , _cisrsIPSet :: !(Maybe IPSet)+ , _cisrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateIPSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cisrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateIPSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'cisrsIPSet' - The 'IPSet' returned in the @CreateIPSet@ response.+--+-- * 'cisrsResponseStatus' - -- | The response status code.+createIPSetResponse+ :: Int -- ^ 'cisrsResponseStatus'+ -> CreateIPSetResponse+createIPSetResponse pResponseStatus_ =+ CreateIPSetResponse'+ { _cisrsChangeToken = Nothing+ , _cisrsIPSet = Nothing+ , _cisrsResponseStatus = pResponseStatus_+ }+++-- | The @ChangeToken@ that you used to submit the @CreateIPSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+cisrsChangeToken :: Lens' CreateIPSetResponse (Maybe Text)+cisrsChangeToken = lens _cisrsChangeToken (\ s a -> s{_cisrsChangeToken = a});++-- | The 'IPSet' returned in the @CreateIPSet@ response.+cisrsIPSet :: Lens' CreateIPSetResponse (Maybe IPSet)+cisrsIPSet = lens _cisrsIPSet (\ s a -> s{_cisrsIPSet = a});++-- | -- | The response status code.+cisrsResponseStatus :: Lens' CreateIPSetResponse Int+cisrsResponseStatus = lens _cisrsResponseStatus (\ s a -> s{_cisrsResponseStatus = a});++instance NFData CreateIPSetResponse where
+ gen/Network/AWS/WAFRegional/CreateRateBasedRule.hs view
@@ -0,0 +1,237 @@+{-# 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.WAFRegional.CreateRateBasedRule+-- Copyright : (c) 2013-2017 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)+--+-- Creates a 'RateBasedRule' . The @RateBasedRule@ contains a @RateLimit@ , which specifies the maximum number of requests that AWS WAF allows from a specified IP address in a five-minute period. The @RateBasedRule@ also contains the @IPSet@ objects, @ByteMatchSet@ objects, and other predicates that identify the requests that you want to count or block if these requests exceed the @RateLimit@ .+--+--+-- If you add more than one predicate to a @RateBasedRule@ , a request not only must exceed the @RateLimit@ , but it also must match all the specifications to be counted or blocked. For example, suppose you add the following to a @RateBasedRule@ :+--+-- * An @IPSet@ that matches the IP address @192.0.2.44/32@+--+-- * A @ByteMatchSet@ that matches @BadBot@ in the @User-Agent@ header+--+--+--+-- Further, you specify a @RateLimit@ of 15,000.+--+-- You then add the @RateBasedRule@ to a @WebACL@ and specify that you want to block requests that meet the conditions in the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 /and/ the @User-Agent@ header in the request must contain the value @BadBot@ . Further, requests that match these two conditions must be received at a rate of more than 15,000 requests every five minutes. If both conditions are met and the rate is exceeded, AWS WAF blocks the requests. If the rate drops below 15,000 for a five-minute period, AWS WAF no longer blocks the requests.+--+-- As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a @RateBasedRule@ :+--+-- * A @ByteMatchSet@ with @FieldToMatch@ of @URI@+--+-- * A @PositionalConstraint@ of @STARTS_WITH@+--+-- * A @TargetString@ of @login@+--+--+--+-- Further, you specify a @RateLimit@ of 15,000.+--+-- By adding this @RateBasedRule@ to a @WebACL@ , you could limit requests to your login page without affecting the rest of your site.+--+-- To create and configure a @RateBasedRule@ , perform the following steps:+--+-- * Create and update the predicates that you want to include in the rule. For more information, see 'CreateByteMatchSet' , 'CreateIPSet' , and 'CreateSqlInjectionMatchSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateRule@ request.+--+-- * Submit a @CreateRateBasedRule@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateRule' request.+--+-- * Submit an @UpdateRateBasedRule@ request to specify the predicates that you want to include in the rule.+--+-- * Create and update a @WebACL@ that contains the @RateBasedRule@ . For more information, see 'CreateWebACL' .+--+--+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateRateBasedRule+ (+ -- * Creating a Request+ createRateBasedRule+ , CreateRateBasedRule+ -- * Request Lenses+ , crbrName+ , crbrMetricName+ , crbrRateKey+ , crbrRateLimit+ , crbrChangeToken++ -- * Destructuring the Response+ , createRateBasedRuleResponse+ , CreateRateBasedRuleResponse+ -- * Response Lenses+ , crbrrsRule+ , crbrrsChangeToken+ , crbrrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'createRateBasedRule' smart constructor.+data CreateRateBasedRule = CreateRateBasedRule'+ { _crbrName :: !Text+ , _crbrMetricName :: !Text+ , _crbrRateKey :: !RateKey+ , _crbrRateLimit :: !Nat+ , _crbrChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateRateBasedRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'crbrName' - A friendly name or description of the 'RateBasedRule' . You can't change the name of a @RateBasedRule@ after you create it.+--+-- * 'crbrMetricName' - A friendly name or description for the metrics for this @RateBasedRule@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the @RateBasedRule@ .+--+-- * 'crbrRateKey' - The field that AWS WAF uses to determine if requests are likely arriving from a single source and thus subject to rate monitoring. The only valid value for @RateKey@ is @IP@ . @IP@ indicates that requests that arrive from the same IP address are subject to the @RateLimit@ that is specified in the @RateBasedRule@ .+--+-- * 'crbrRateLimit' - The maximum number of requests, which have an identical value in the field that is specified by @RateKey@ , allowed in a five-minute period. If the number of requests exceeds the @RateLimit@ and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule.+--+-- * 'crbrChangeToken' - The @ChangeToken@ that you used to submit the @CreateRateBasedRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+createRateBasedRule+ :: Text -- ^ 'crbrName'+ -> Text -- ^ 'crbrMetricName'+ -> RateKey -- ^ 'crbrRateKey'+ -> Natural -- ^ 'crbrRateLimit'+ -> Text -- ^ 'crbrChangeToken'+ -> CreateRateBasedRule+createRateBasedRule pName_ pMetricName_ pRateKey_ pRateLimit_ pChangeToken_ =+ CreateRateBasedRule'+ { _crbrName = pName_+ , _crbrMetricName = pMetricName_+ , _crbrRateKey = pRateKey_+ , _crbrRateLimit = _Nat # pRateLimit_+ , _crbrChangeToken = pChangeToken_+ }+++-- | A friendly name or description of the 'RateBasedRule' . You can't change the name of a @RateBasedRule@ after you create it.+crbrName :: Lens' CreateRateBasedRule Text+crbrName = lens _crbrName (\ s a -> s{_crbrName = a});++-- | A friendly name or description for the metrics for this @RateBasedRule@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the @RateBasedRule@ .+crbrMetricName :: Lens' CreateRateBasedRule Text+crbrMetricName = lens _crbrMetricName (\ s a -> s{_crbrMetricName = a});++-- | The field that AWS WAF uses to determine if requests are likely arriving from a single source and thus subject to rate monitoring. The only valid value for @RateKey@ is @IP@ . @IP@ indicates that requests that arrive from the same IP address are subject to the @RateLimit@ that is specified in the @RateBasedRule@ .+crbrRateKey :: Lens' CreateRateBasedRule RateKey+crbrRateKey = lens _crbrRateKey (\ s a -> s{_crbrRateKey = a});++-- | The maximum number of requests, which have an identical value in the field that is specified by @RateKey@ , allowed in a five-minute period. If the number of requests exceeds the @RateLimit@ and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule.+crbrRateLimit :: Lens' CreateRateBasedRule Natural+crbrRateLimit = lens _crbrRateLimit (\ s a -> s{_crbrRateLimit = a}) . _Nat;++-- | The @ChangeToken@ that you used to submit the @CreateRateBasedRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+crbrChangeToken :: Lens' CreateRateBasedRule Text+crbrChangeToken = lens _crbrChangeToken (\ s a -> s{_crbrChangeToken = a});++instance AWSRequest CreateRateBasedRule where+ type Rs CreateRateBasedRule =+ CreateRateBasedRuleResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateRateBasedRuleResponse' <$>+ (x .?> "Rule") <*> (x .?> "ChangeToken") <*>+ (pure (fromEnum s)))++instance Hashable CreateRateBasedRule where++instance NFData CreateRateBasedRule where++instance ToHeaders CreateRateBasedRule where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateRateBasedRule" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateRateBasedRule where+ toJSON CreateRateBasedRule'{..}+ = object+ (catMaybes+ [Just ("Name" .= _crbrName),+ Just ("MetricName" .= _crbrMetricName),+ Just ("RateKey" .= _crbrRateKey),+ Just ("RateLimit" .= _crbrRateLimit),+ Just ("ChangeToken" .= _crbrChangeToken)])++instance ToPath CreateRateBasedRule where+ toPath = const "/"++instance ToQuery CreateRateBasedRule where+ toQuery = const mempty++-- | /See:/ 'createRateBasedRuleResponse' smart constructor.+data CreateRateBasedRuleResponse = CreateRateBasedRuleResponse'+ { _crbrrsRule :: !(Maybe RateBasedRule)+ , _crbrrsChangeToken :: !(Maybe Text)+ , _crbrrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateRateBasedRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'crbrrsRule' - The 'RateBasedRule' that is returned in the @CreateRateBasedRule@ response.+--+-- * 'crbrrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateRateBasedRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'crbrrsResponseStatus' - -- | The response status code.+createRateBasedRuleResponse+ :: Int -- ^ 'crbrrsResponseStatus'+ -> CreateRateBasedRuleResponse+createRateBasedRuleResponse pResponseStatus_ =+ CreateRateBasedRuleResponse'+ { _crbrrsRule = Nothing+ , _crbrrsChangeToken = Nothing+ , _crbrrsResponseStatus = pResponseStatus_+ }+++-- | The 'RateBasedRule' that is returned in the @CreateRateBasedRule@ response.+crbrrsRule :: Lens' CreateRateBasedRuleResponse (Maybe RateBasedRule)+crbrrsRule = lens _crbrrsRule (\ s a -> s{_crbrrsRule = a});++-- | The @ChangeToken@ that you used to submit the @CreateRateBasedRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+crbrrsChangeToken :: Lens' CreateRateBasedRuleResponse (Maybe Text)+crbrrsChangeToken = lens _crbrrsChangeToken (\ s a -> s{_crbrrsChangeToken = a});++-- | -- | The response status code.+crbrrsResponseStatus :: Lens' CreateRateBasedRuleResponse Int+crbrrsResponseStatus = lens _crbrrsResponseStatus (\ s a -> s{_crbrrsResponseStatus = a});++instance NFData CreateRateBasedRuleResponse where
+ gen/Network/AWS/WAFRegional/CreateRegexMatchSet.hs view
@@ -0,0 +1,171 @@+{-# 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.WAFRegional.CreateRegexMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Creates a 'RegexMatchSet' . You then use 'UpdateRegexMatchSet' to identify the part of a web request that you want AWS WAF to inspect, such as the values of the @User-Agent@ header or the query string. For example, you can create a @RegexMatchSet@ that contains a @RegexMatchTuple@ that looks for any requests with @User-Agent@ headers that match a @RegexPatternSet@ with pattern @B[a@]dB[o0]t@ . You can then configure AWS WAF to reject those requests.+--+--+-- To create and configure a @RegexMatchSet@ , perform the following steps:+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateRegexMatchSet@ request.+--+-- * Submit a @CreateRegexMatchSet@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an @UpdateRegexMatchSet@ request.+--+-- * Submit an 'UpdateRegexMatchSet' request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value, using a @RegexPatternSet@ , 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateRegexMatchSet+ (+ -- * Creating a Request+ createRegexMatchSet+ , CreateRegexMatchSet+ -- * Request Lenses+ , crmsName+ , crmsChangeToken++ -- * Destructuring the Response+ , createRegexMatchSetResponse+ , CreateRegexMatchSetResponse+ -- * Response Lenses+ , crmsrsRegexMatchSet+ , crmsrsChangeToken+ , crmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'createRegexMatchSet' smart constructor.+data CreateRegexMatchSet = CreateRegexMatchSet'+ { _crmsName :: !Text+ , _crmsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateRegexMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'crmsName' - A friendly name or description of the 'RegexMatchSet' . You can't change @Name@ after you create a @RegexMatchSet@ .+--+-- * 'crmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createRegexMatchSet+ :: Text -- ^ 'crmsName'+ -> Text -- ^ 'crmsChangeToken'+ -> CreateRegexMatchSet+createRegexMatchSet pName_ pChangeToken_ =+ CreateRegexMatchSet' {_crmsName = pName_, _crmsChangeToken = pChangeToken_}+++-- | A friendly name or description of the 'RegexMatchSet' . You can't change @Name@ after you create a @RegexMatchSet@ .+crmsName :: Lens' CreateRegexMatchSet Text+crmsName = lens _crmsName (\ s a -> s{_crmsName = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+crmsChangeToken :: Lens' CreateRegexMatchSet Text+crmsChangeToken = lens _crmsChangeToken (\ s a -> s{_crmsChangeToken = a});++instance AWSRequest CreateRegexMatchSet where+ type Rs CreateRegexMatchSet =+ CreateRegexMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateRegexMatchSetResponse' <$>+ (x .?> "RegexMatchSet") <*> (x .?> "ChangeToken") <*>+ (pure (fromEnum s)))++instance Hashable CreateRegexMatchSet where++instance NFData CreateRegexMatchSet where++instance ToHeaders CreateRegexMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateRegexMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateRegexMatchSet where+ toJSON CreateRegexMatchSet'{..}+ = object+ (catMaybes+ [Just ("Name" .= _crmsName),+ Just ("ChangeToken" .= _crmsChangeToken)])++instance ToPath CreateRegexMatchSet where+ toPath = const "/"++instance ToQuery CreateRegexMatchSet where+ toQuery = const mempty++-- | /See:/ 'createRegexMatchSetResponse' smart constructor.+data CreateRegexMatchSetResponse = CreateRegexMatchSetResponse'+ { _crmsrsRegexMatchSet :: !(Maybe RegexMatchSet)+ , _crmsrsChangeToken :: !(Maybe Text)+ , _crmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateRegexMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'crmsrsRegexMatchSet' - A 'RegexMatchSet' that contains no @RegexMatchTuple@ objects.+--+-- * 'crmsrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateRegexMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'crmsrsResponseStatus' - -- | The response status code.+createRegexMatchSetResponse+ :: Int -- ^ 'crmsrsResponseStatus'+ -> CreateRegexMatchSetResponse+createRegexMatchSetResponse pResponseStatus_ =+ CreateRegexMatchSetResponse'+ { _crmsrsRegexMatchSet = Nothing+ , _crmsrsChangeToken = Nothing+ , _crmsrsResponseStatus = pResponseStatus_+ }+++-- | A 'RegexMatchSet' that contains no @RegexMatchTuple@ objects.+crmsrsRegexMatchSet :: Lens' CreateRegexMatchSetResponse (Maybe RegexMatchSet)+crmsrsRegexMatchSet = lens _crmsrsRegexMatchSet (\ s a -> s{_crmsrsRegexMatchSet = a});++-- | The @ChangeToken@ that you used to submit the @CreateRegexMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+crmsrsChangeToken :: Lens' CreateRegexMatchSetResponse (Maybe Text)+crmsrsChangeToken = lens _crmsrsChangeToken (\ s a -> s{_crmsrsChangeToken = a});++-- | -- | The response status code.+crmsrsResponseStatus :: Lens' CreateRegexMatchSetResponse Int+crmsrsResponseStatus = lens _crmsrsResponseStatus (\ s a -> s{_crmsrsResponseStatus = a});++instance NFData CreateRegexMatchSetResponse where
+ gen/Network/AWS/WAFRegional/CreateRegexPatternSet.hs view
@@ -0,0 +1,171 @@+{-# 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.WAFRegional.CreateRegexPatternSet+-- Copyright : (c) 2013-2017 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)+--+-- Creates a @RegexPatternSet@ . You then use 'UpdateRegexPatternSet' to specify the regular expression (regex) pattern that you want AWS WAF to search for, such as @B[a@]dB[o0]t@ . You can then configure AWS WAF to reject those requests.+--+--+-- To create and configure a @RegexPatternSet@ , perform the following steps:+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateRegexPatternSet@ request.+--+-- * Submit a @CreateRegexPatternSet@ request.+--+-- * 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 string 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateRegexPatternSet+ (+ -- * Creating a Request+ createRegexPatternSet+ , CreateRegexPatternSet+ -- * Request Lenses+ , crpsName+ , crpsChangeToken++ -- * Destructuring the Response+ , createRegexPatternSetResponse+ , CreateRegexPatternSetResponse+ -- * Response Lenses+ , crpsrsRegexPatternSet+ , crpsrsChangeToken+ , crpsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'createRegexPatternSet' smart constructor.+data CreateRegexPatternSet = CreateRegexPatternSet'+ { _crpsName :: !Text+ , _crpsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateRegexPatternSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'crpsName' - A friendly name or description of the 'RegexPatternSet' . You can't change @Name@ after you create a @RegexPatternSet@ .+--+-- * 'crpsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createRegexPatternSet+ :: Text -- ^ 'crpsName'+ -> Text -- ^ 'crpsChangeToken'+ -> CreateRegexPatternSet+createRegexPatternSet pName_ pChangeToken_ =+ CreateRegexPatternSet' {_crpsName = pName_, _crpsChangeToken = pChangeToken_}+++-- | A friendly name or description of the 'RegexPatternSet' . You can't change @Name@ after you create a @RegexPatternSet@ .+crpsName :: Lens' CreateRegexPatternSet Text+crpsName = lens _crpsName (\ s a -> s{_crpsName = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+crpsChangeToken :: Lens' CreateRegexPatternSet Text+crpsChangeToken = lens _crpsChangeToken (\ s a -> s{_crpsChangeToken = a});++instance AWSRequest CreateRegexPatternSet where+ type Rs CreateRegexPatternSet =+ CreateRegexPatternSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateRegexPatternSetResponse' <$>+ (x .?> "RegexPatternSet") <*> (x .?> "ChangeToken")+ <*> (pure (fromEnum s)))++instance Hashable CreateRegexPatternSet where++instance NFData CreateRegexPatternSet where++instance ToHeaders CreateRegexPatternSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateRegexPatternSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateRegexPatternSet where+ toJSON CreateRegexPatternSet'{..}+ = object+ (catMaybes+ [Just ("Name" .= _crpsName),+ Just ("ChangeToken" .= _crpsChangeToken)])++instance ToPath CreateRegexPatternSet where+ toPath = const "/"++instance ToQuery CreateRegexPatternSet where+ toQuery = const mempty++-- | /See:/ 'createRegexPatternSetResponse' smart constructor.+data CreateRegexPatternSetResponse = CreateRegexPatternSetResponse'+ { _crpsrsRegexPatternSet :: !(Maybe RegexPatternSet)+ , _crpsrsChangeToken :: !(Maybe Text)+ , _crpsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateRegexPatternSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'crpsrsRegexPatternSet' - A 'RegexPatternSet' that contains no objects.+--+-- * 'crpsrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateRegexPatternSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'crpsrsResponseStatus' - -- | The response status code.+createRegexPatternSetResponse+ :: Int -- ^ 'crpsrsResponseStatus'+ -> CreateRegexPatternSetResponse+createRegexPatternSetResponse pResponseStatus_ =+ CreateRegexPatternSetResponse'+ { _crpsrsRegexPatternSet = Nothing+ , _crpsrsChangeToken = Nothing+ , _crpsrsResponseStatus = pResponseStatus_+ }+++-- | A 'RegexPatternSet' that contains no objects.+crpsrsRegexPatternSet :: Lens' CreateRegexPatternSetResponse (Maybe RegexPatternSet)+crpsrsRegexPatternSet = lens _crpsrsRegexPatternSet (\ s a -> s{_crpsrsRegexPatternSet = a});++-- | The @ChangeToken@ that you used to submit the @CreateRegexPatternSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+crpsrsChangeToken :: Lens' CreateRegexPatternSetResponse (Maybe Text)+crpsrsChangeToken = lens _crpsrsChangeToken (\ s a -> s{_crpsrsChangeToken = a});++-- | -- | The response status code.+crpsrsResponseStatus :: Lens' CreateRegexPatternSetResponse Int+crpsrsResponseStatus = lens _crpsrsResponseStatus (\ s a -> s{_crpsrsResponseStatus = a});++instance NFData CreateRegexPatternSetResponse where
+ gen/Network/AWS/WAFRegional/CreateRule.hs view
@@ -0,0 +1,196 @@+{-# 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.WAFRegional.CreateRule+-- Copyright : (c) 2013-2017 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)+--+-- Creates a @Rule@ , which contains the @IPSet@ objects, @ByteMatchSet@ objects, and other predicates that identify the requests that you want to block. If you add more than one predicate to a @Rule@ , a request must match all of the specifications to be allowed or blocked. For example, suppose you add the following to a @Rule@ :+--+--+-- * An @IPSet@ that matches the IP address @192.0.2.44/32@+--+-- * A @ByteMatchSet@ that matches @BadBot@ in the @User-Agent@ header+--+--+--+-- You then add the @Rule@ to a @WebACL@ and specify that you want to blocks requests that satisfy the @Rule@ . For a request to be blocked, it must come from the IP address 192.0.2.44 /and/ the @User-Agent@ header in the request must contain the value @BadBot@ .+--+-- To create and configure a @Rule@ , perform the following steps:+--+-- * Create and update the predicates that you want to include in the @Rule@ . For more information, see 'CreateByteMatchSet' , 'CreateIPSet' , and 'CreateSqlInjectionMatchSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateRule@ request.+--+-- * Submit a @CreateRule@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateRule' request.+--+-- * Submit an @UpdateRule@ request to specify the predicates that you want to include in the @Rule@ .+--+-- * Create and update a @WebACL@ that contains the @Rule@ . For more information, see 'CreateWebACL' .+--+--+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateRule+ (+ -- * Creating a Request+ createRule+ , CreateRule+ -- * Request Lenses+ , crName+ , crMetricName+ , crChangeToken++ -- * Destructuring the Response+ , createRuleResponse+ , CreateRuleResponse+ -- * Response Lenses+ , crrsRule+ , crrsChangeToken+ , crrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'createRule' smart constructor.+data CreateRule = CreateRule'+ { _crName :: !Text+ , _crMetricName :: !Text+ , _crChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'crName' - A friendly name or description of the 'Rule' . You can't change the name of a @Rule@ after you create it.+--+-- * 'crMetricName' - A friendly name or description for the metrics for this @Rule@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the @Rule@ .+--+-- * 'crChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createRule+ :: Text -- ^ 'crName'+ -> Text -- ^ 'crMetricName'+ -> Text -- ^ 'crChangeToken'+ -> CreateRule+createRule pName_ pMetricName_ pChangeToken_ =+ CreateRule'+ { _crName = pName_+ , _crMetricName = pMetricName_+ , _crChangeToken = pChangeToken_+ }+++-- | A friendly name or description of the 'Rule' . You can't change the name of a @Rule@ after you create it.+crName :: Lens' CreateRule Text+crName = lens _crName (\ s a -> s{_crName = a});++-- | A friendly name or description for the metrics for this @Rule@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the @Rule@ .+crMetricName :: Lens' CreateRule Text+crMetricName = lens _crMetricName (\ s a -> s{_crMetricName = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+crChangeToken :: Lens' CreateRule Text+crChangeToken = lens _crChangeToken (\ s a -> s{_crChangeToken = a});++instance AWSRequest CreateRule where+ type Rs CreateRule = CreateRuleResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateRuleResponse' <$>+ (x .?> "Rule") <*> (x .?> "ChangeToken") <*>+ (pure (fromEnum s)))++instance Hashable CreateRule where++instance NFData CreateRule where++instance ToHeaders CreateRule where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateRule" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateRule where+ toJSON CreateRule'{..}+ = object+ (catMaybes+ [Just ("Name" .= _crName),+ Just ("MetricName" .= _crMetricName),+ Just ("ChangeToken" .= _crChangeToken)])++instance ToPath CreateRule where+ toPath = const "/"++instance ToQuery CreateRule where+ toQuery = const mempty++-- | /See:/ 'createRuleResponse' smart constructor.+data CreateRuleResponse = CreateRuleResponse'+ { _crrsRule :: !(Maybe Rule)+ , _crrsChangeToken :: !(Maybe Text)+ , _crrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'crrsRule' - The 'Rule' returned in the @CreateRule@ response.+--+-- * 'crrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'crrsResponseStatus' - -- | The response status code.+createRuleResponse+ :: Int -- ^ 'crrsResponseStatus'+ -> CreateRuleResponse+createRuleResponse pResponseStatus_ =+ CreateRuleResponse'+ { _crrsRule = Nothing+ , _crrsChangeToken = Nothing+ , _crrsResponseStatus = pResponseStatus_+ }+++-- | The 'Rule' returned in the @CreateRule@ response.+crrsRule :: Lens' CreateRuleResponse (Maybe Rule)+crrsRule = lens _crrsRule (\ s a -> s{_crrsRule = a});++-- | The @ChangeToken@ that you used to submit the @CreateRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+crrsChangeToken :: Lens' CreateRuleResponse (Maybe Text)+crrsChangeToken = lens _crrsChangeToken (\ s a -> s{_crrsChangeToken = a});++-- | -- | The response status code.+crrsResponseStatus :: Lens' CreateRuleResponse Int+crrsResponseStatus = lens _crrsResponseStatus (\ s a -> s{_crrsResponseStatus = a});++instance NFData CreateRuleResponse where
+ gen/Network/AWS/WAFRegional/CreateSizeConstraintSet.hs view
@@ -0,0 +1,172 @@+{-# 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.WAFRegional.CreateSizeConstraintSet+-- Copyright : (c) 2013-2017 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)+--+-- Creates a @SizeConstraintSet@ . You then use 'UpdateSizeConstraintSet' to identify the part of a web request that you want AWS WAF to check for length, such as the length of the @User-Agent@ header or the length of the query string. For example, you can create a @SizeConstraintSet@ that matches any requests that have a query string that is longer than 100 bytes. You can then configure AWS WAF to reject those requests.+--+--+-- To create and configure a @SizeConstraintSet@ , perform the following steps:+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateSizeConstraintSet@ request.+--+-- * Submit a @CreateSizeConstraintSet@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an @UpdateSizeConstraintSet@ request.+--+-- * Submit an 'UpdateSizeConstraintSet' request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateSizeConstraintSet+ (+ -- * Creating a Request+ createSizeConstraintSet+ , CreateSizeConstraintSet+ -- * Request Lenses+ , cscsName+ , cscsChangeToken++ -- * Destructuring the Response+ , createSizeConstraintSetResponse+ , CreateSizeConstraintSetResponse+ -- * Response Lenses+ , cscsrsSizeConstraintSet+ , cscsrsChangeToken+ , cscsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'createSizeConstraintSet' smart constructor.+data CreateSizeConstraintSet = CreateSizeConstraintSet'+ { _cscsName :: !Text+ , _cscsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateSizeConstraintSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cscsName' - A friendly name or description of the 'SizeConstraintSet' . You can't change @Name@ after you create a @SizeConstraintSet@ .+--+-- * 'cscsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createSizeConstraintSet+ :: Text -- ^ 'cscsName'+ -> Text -- ^ 'cscsChangeToken'+ -> CreateSizeConstraintSet+createSizeConstraintSet pName_ pChangeToken_ =+ CreateSizeConstraintSet'+ {_cscsName = pName_, _cscsChangeToken = pChangeToken_}+++-- | A friendly name or description of the 'SizeConstraintSet' . You can't change @Name@ after you create a @SizeConstraintSet@ .+cscsName :: Lens' CreateSizeConstraintSet Text+cscsName = lens _cscsName (\ s a -> s{_cscsName = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+cscsChangeToken :: Lens' CreateSizeConstraintSet Text+cscsChangeToken = lens _cscsChangeToken (\ s a -> s{_cscsChangeToken = a});++instance AWSRequest CreateSizeConstraintSet where+ type Rs CreateSizeConstraintSet =+ CreateSizeConstraintSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateSizeConstraintSetResponse' <$>+ (x .?> "SizeConstraintSet") <*> (x .?> "ChangeToken")+ <*> (pure (fromEnum s)))++instance Hashable CreateSizeConstraintSet where++instance NFData CreateSizeConstraintSet where++instance ToHeaders CreateSizeConstraintSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateSizeConstraintSet"+ :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateSizeConstraintSet where+ toJSON CreateSizeConstraintSet'{..}+ = object+ (catMaybes+ [Just ("Name" .= _cscsName),+ Just ("ChangeToken" .= _cscsChangeToken)])++instance ToPath CreateSizeConstraintSet where+ toPath = const "/"++instance ToQuery CreateSizeConstraintSet where+ toQuery = const mempty++-- | /See:/ 'createSizeConstraintSetResponse' smart constructor.+data CreateSizeConstraintSetResponse = CreateSizeConstraintSetResponse'+ { _cscsrsSizeConstraintSet :: !(Maybe SizeConstraintSet)+ , _cscsrsChangeToken :: !(Maybe Text)+ , _cscsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateSizeConstraintSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cscsrsSizeConstraintSet' - A 'SizeConstraintSet' that contains no @SizeConstraint@ objects.+--+-- * 'cscsrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateSizeConstraintSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'cscsrsResponseStatus' - -- | The response status code.+createSizeConstraintSetResponse+ :: Int -- ^ 'cscsrsResponseStatus'+ -> CreateSizeConstraintSetResponse+createSizeConstraintSetResponse pResponseStatus_ =+ CreateSizeConstraintSetResponse'+ { _cscsrsSizeConstraintSet = Nothing+ , _cscsrsChangeToken = Nothing+ , _cscsrsResponseStatus = pResponseStatus_+ }+++-- | A 'SizeConstraintSet' that contains no @SizeConstraint@ objects.+cscsrsSizeConstraintSet :: Lens' CreateSizeConstraintSetResponse (Maybe SizeConstraintSet)+cscsrsSizeConstraintSet = lens _cscsrsSizeConstraintSet (\ s a -> s{_cscsrsSizeConstraintSet = a});++-- | The @ChangeToken@ that you used to submit the @CreateSizeConstraintSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+cscsrsChangeToken :: Lens' CreateSizeConstraintSetResponse (Maybe Text)+cscsrsChangeToken = lens _cscsrsChangeToken (\ s a -> s{_cscsrsChangeToken = a});++-- | -- | The response status code.+cscsrsResponseStatus :: Lens' CreateSizeConstraintSetResponse Int+cscsrsResponseStatus = lens _cscsrsResponseStatus (\ s a -> s{_cscsrsResponseStatus = a});++instance NFData CreateSizeConstraintSetResponse where
+ gen/Network/AWS/WAFRegional/CreateSqlInjectionMatchSet.hs view
@@ -0,0 +1,182 @@+{-# 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.WAFRegional.CreateSqlInjectionMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Creates a 'SqlInjectionMatchSet' , which you use to allow, block, or count requests that contain snippets of SQL code in a specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings.+--+--+-- To create and configure a @SqlInjectionMatchSet@ , perform the following steps:+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateSqlInjectionMatchSet@ request.+--+-- * Submit a @CreateSqlInjectionMatchSet@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateSqlInjectionMatchSet' request.+--+-- * Submit an 'UpdateSqlInjectionMatchSet' request to specify the parts of web requests in which you want to allow, block, or count malicious SQL code.+--+--+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateSqlInjectionMatchSet+ (+ -- * Creating a Request+ createSqlInjectionMatchSet+ , CreateSqlInjectionMatchSet+ -- * Request Lenses+ , csimsName+ , csimsChangeToken++ -- * Destructuring the Response+ , createSqlInjectionMatchSetResponse+ , CreateSqlInjectionMatchSetResponse+ -- * Response Lenses+ , csimsrsSqlInjectionMatchSet+ , csimsrsChangeToken+ , csimsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to create a 'SqlInjectionMatchSet' .+--+--+--+-- /See:/ 'createSqlInjectionMatchSet' smart constructor.+data CreateSqlInjectionMatchSet = CreateSqlInjectionMatchSet'+ { _csimsName :: !Text+ , _csimsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateSqlInjectionMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csimsName' - A friendly name or description for the 'SqlInjectionMatchSet' that you're creating. You can't change @Name@ after you create the @SqlInjectionMatchSet@ .+--+-- * 'csimsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createSqlInjectionMatchSet+ :: Text -- ^ 'csimsName'+ -> Text -- ^ 'csimsChangeToken'+ -> CreateSqlInjectionMatchSet+createSqlInjectionMatchSet pName_ pChangeToken_ =+ CreateSqlInjectionMatchSet'+ {_csimsName = pName_, _csimsChangeToken = pChangeToken_}+++-- | A friendly name or description for the 'SqlInjectionMatchSet' that you're creating. You can't change @Name@ after you create the @SqlInjectionMatchSet@ .+csimsName :: Lens' CreateSqlInjectionMatchSet Text+csimsName = lens _csimsName (\ s a -> s{_csimsName = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+csimsChangeToken :: Lens' CreateSqlInjectionMatchSet Text+csimsChangeToken = lens _csimsChangeToken (\ s a -> s{_csimsChangeToken = a});++instance AWSRequest CreateSqlInjectionMatchSet where+ type Rs CreateSqlInjectionMatchSet =+ CreateSqlInjectionMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateSqlInjectionMatchSetResponse' <$>+ (x .?> "SqlInjectionMatchSet") <*>+ (x .?> "ChangeToken")+ <*> (pure (fromEnum s)))++instance Hashable CreateSqlInjectionMatchSet where++instance NFData CreateSqlInjectionMatchSet where++instance ToHeaders CreateSqlInjectionMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateSqlInjectionMatchSet"+ :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateSqlInjectionMatchSet where+ toJSON CreateSqlInjectionMatchSet'{..}+ = object+ (catMaybes+ [Just ("Name" .= _csimsName),+ Just ("ChangeToken" .= _csimsChangeToken)])++instance ToPath CreateSqlInjectionMatchSet where+ toPath = const "/"++instance ToQuery CreateSqlInjectionMatchSet where+ toQuery = const mempty++-- | The response to a @CreateSqlInjectionMatchSet@ request.+--+--+--+-- /See:/ 'createSqlInjectionMatchSetResponse' smart constructor.+data CreateSqlInjectionMatchSetResponse = CreateSqlInjectionMatchSetResponse'+ { _csimsrsSqlInjectionMatchSet :: !(Maybe SqlInjectionMatchSet)+ , _csimsrsChangeToken :: !(Maybe Text)+ , _csimsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateSqlInjectionMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'csimsrsSqlInjectionMatchSet' - A 'SqlInjectionMatchSet' .+--+-- * 'csimsrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateSqlInjectionMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'csimsrsResponseStatus' - -- | The response status code.+createSqlInjectionMatchSetResponse+ :: Int -- ^ 'csimsrsResponseStatus'+ -> CreateSqlInjectionMatchSetResponse+createSqlInjectionMatchSetResponse pResponseStatus_ =+ CreateSqlInjectionMatchSetResponse'+ { _csimsrsSqlInjectionMatchSet = Nothing+ , _csimsrsChangeToken = Nothing+ , _csimsrsResponseStatus = pResponseStatus_+ }+++-- | A 'SqlInjectionMatchSet' .+csimsrsSqlInjectionMatchSet :: Lens' CreateSqlInjectionMatchSetResponse (Maybe SqlInjectionMatchSet)+csimsrsSqlInjectionMatchSet = lens _csimsrsSqlInjectionMatchSet (\ s a -> s{_csimsrsSqlInjectionMatchSet = a});++-- | The @ChangeToken@ that you used to submit the @CreateSqlInjectionMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+csimsrsChangeToken :: Lens' CreateSqlInjectionMatchSetResponse (Maybe Text)+csimsrsChangeToken = lens _csimsrsChangeToken (\ s a -> s{_csimsrsChangeToken = a});++-- | -- | The response status code.+csimsrsResponseStatus :: Lens' CreateSqlInjectionMatchSetResponse Int+csimsrsResponseStatus = lens _csimsrsResponseStatus (\ s a -> s{_csimsrsResponseStatus = a});++instance NFData CreateSqlInjectionMatchSetResponse+ where
+ gen/Network/AWS/WAFRegional/CreateWebACL.hs view
@@ -0,0 +1,201 @@+{-# 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.WAFRegional.CreateWebACL+-- Copyright : (c) 2013-2017 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)+--+-- Creates a @WebACL@ , which contains the @Rules@ that identify the CloudFront web requests that you want to allow, block, or count. AWS WAF evaluates @Rules@ in order based on the value of @Priority@ for each @Rule@ .+--+--+-- You also specify a default action, either @ALLOW@ or @BLOCK@ . If a web request doesn't match any of the @Rules@ in a @WebACL@ , AWS WAF responds to the request with the default action.+--+-- To create and configure a @WebACL@ , perform the following steps:+--+-- * Create and update the @ByteMatchSet@ objects and other predicates that you want to include in @Rules@ . For more information, see 'CreateByteMatchSet' , 'UpdateByteMatchSet' , 'CreateIPSet' , 'UpdateIPSet' , 'CreateSqlInjectionMatchSet' , and 'UpdateSqlInjectionMatchSet' .+--+-- * Create and update the @Rules@ that you want to include in the @WebACL@ . For more information, see 'CreateRule' and 'UpdateRule' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateWebACL@ request.+--+-- * Submit a @CreateWebACL@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateWebACL' request.+--+-- * Submit an 'UpdateWebACL' request to specify the @Rules@ that you want to include in the @WebACL@ , to specify the default action, and to associate the @WebACL@ with a CloudFront distribution.+--+--+--+-- For more information about how to use the AWS WAF API, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateWebACL+ (+ -- * Creating a Request+ createWebACL+ , CreateWebACL+ -- * Request Lenses+ , cwaName+ , cwaMetricName+ , cwaDefaultAction+ , cwaChangeToken++ -- * Destructuring the Response+ , createWebACLResponse+ , CreateWebACLResponse+ -- * Response Lenses+ , cwarsWebACL+ , cwarsChangeToken+ , cwarsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'createWebACL' smart constructor.+data CreateWebACL = CreateWebACL'+ { _cwaName :: !Text+ , _cwaMetricName :: !Text+ , _cwaDefaultAction :: !WafAction+ , _cwaChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateWebACL' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cwaName' - A friendly name or description of the 'WebACL' . You can't change @Name@ after you create the @WebACL@ .+--+-- * 'cwaMetricName' - A friendly name or description for the metrics for this @WebACL@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change @MetricName@ after you create the @WebACL@ .+--+-- * 'cwaDefaultAction' - The action that you want AWS WAF to take when a request doesn't match the criteria specified in any of the @Rule@ objects that are associated with the @WebACL@ .+--+-- * 'cwaChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createWebACL+ :: Text -- ^ 'cwaName'+ -> Text -- ^ 'cwaMetricName'+ -> WafAction -- ^ 'cwaDefaultAction'+ -> Text -- ^ 'cwaChangeToken'+ -> CreateWebACL+createWebACL pName_ pMetricName_ pDefaultAction_ pChangeToken_ =+ CreateWebACL'+ { _cwaName = pName_+ , _cwaMetricName = pMetricName_+ , _cwaDefaultAction = pDefaultAction_+ , _cwaChangeToken = pChangeToken_+ }+++-- | A friendly name or description of the 'WebACL' . You can't change @Name@ after you create the @WebACL@ .+cwaName :: Lens' CreateWebACL Text+cwaName = lens _cwaName (\ s a -> s{_cwaName = a});++-- | A friendly name or description for the metrics for this @WebACL@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change @MetricName@ after you create the @WebACL@ .+cwaMetricName :: Lens' CreateWebACL Text+cwaMetricName = lens _cwaMetricName (\ s a -> s{_cwaMetricName = a});++-- | The action that you want AWS WAF to take when a request doesn't match the criteria specified in any of the @Rule@ objects that are associated with the @WebACL@ .+cwaDefaultAction :: Lens' CreateWebACL WafAction+cwaDefaultAction = lens _cwaDefaultAction (\ s a -> s{_cwaDefaultAction = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+cwaChangeToken :: Lens' CreateWebACL Text+cwaChangeToken = lens _cwaChangeToken (\ s a -> s{_cwaChangeToken = a});++instance AWSRequest CreateWebACL where+ type Rs CreateWebACL = CreateWebACLResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateWebACLResponse' <$>+ (x .?> "WebACL") <*> (x .?> "ChangeToken") <*>+ (pure (fromEnum s)))++instance Hashable CreateWebACL where++instance NFData CreateWebACL where++instance ToHeaders CreateWebACL where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateWebACL" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateWebACL where+ toJSON CreateWebACL'{..}+ = object+ (catMaybes+ [Just ("Name" .= _cwaName),+ Just ("MetricName" .= _cwaMetricName),+ Just ("DefaultAction" .= _cwaDefaultAction),+ Just ("ChangeToken" .= _cwaChangeToken)])++instance ToPath CreateWebACL where+ toPath = const "/"++instance ToQuery CreateWebACL where+ toQuery = const mempty++-- | /See:/ 'createWebACLResponse' smart constructor.+data CreateWebACLResponse = CreateWebACLResponse'+ { _cwarsWebACL :: !(Maybe WebACL)+ , _cwarsChangeToken :: !(Maybe Text)+ , _cwarsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateWebACLResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cwarsWebACL' - The 'WebACL' returned in the @CreateWebACL@ response.+--+-- * 'cwarsChangeToken' - The @ChangeToken@ that you used to submit the @CreateWebACL@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'cwarsResponseStatus' - -- | The response status code.+createWebACLResponse+ :: Int -- ^ 'cwarsResponseStatus'+ -> CreateWebACLResponse+createWebACLResponse pResponseStatus_ =+ CreateWebACLResponse'+ { _cwarsWebACL = Nothing+ , _cwarsChangeToken = Nothing+ , _cwarsResponseStatus = pResponseStatus_+ }+++-- | The 'WebACL' returned in the @CreateWebACL@ response.+cwarsWebACL :: Lens' CreateWebACLResponse (Maybe WebACL)+cwarsWebACL = lens _cwarsWebACL (\ s a -> s{_cwarsWebACL = a});++-- | The @ChangeToken@ that you used to submit the @CreateWebACL@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+cwarsChangeToken :: Lens' CreateWebACLResponse (Maybe Text)+cwarsChangeToken = lens _cwarsChangeToken (\ s a -> s{_cwarsChangeToken = a});++-- | -- | The response status code.+cwarsResponseStatus :: Lens' CreateWebACLResponse Int+cwarsResponseStatus = lens _cwarsResponseStatus (\ s a -> s{_cwarsResponseStatus = a});++instance NFData CreateWebACLResponse where
+ gen/Network/AWS/WAFRegional/CreateXSSMatchSet.hs view
@@ -0,0 +1,178 @@+{-# 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.WAFRegional.CreateXSSMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Creates an 'XssMatchSet' , which you use to allow, block, or count requests that contain cross-site scripting attacks in the specified part of web requests. AWS WAF searches for character sequences that are likely to be malicious strings.+--+--+-- To create and configure an @XssMatchSet@ , perform the following steps:+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @CreateXssMatchSet@ request.+--+-- * Submit a @CreateXssMatchSet@ request.+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateXssMatchSet' request.+--+-- * Submit an 'UpdateXssMatchSet' request to specify the parts of web requests in which you want to allow, block, or count cross-site scripting attacks.+--+--+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.CreateXSSMatchSet+ (+ -- * Creating a Request+ createXSSMatchSet+ , CreateXSSMatchSet+ -- * Request Lenses+ , cxmsName+ , cxmsChangeToken++ -- * Destructuring the Response+ , createXSSMatchSetResponse+ , CreateXSSMatchSetResponse+ -- * Response Lenses+ , cxmsrsXSSMatchSet+ , cxmsrsChangeToken+ , cxmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to create an 'XssMatchSet' .+--+--+--+-- /See:/ 'createXSSMatchSet' smart constructor.+data CreateXSSMatchSet = CreateXSSMatchSet'+ { _cxmsName :: !Text+ , _cxmsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateXSSMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cxmsName' - A friendly name or description for the 'XssMatchSet' that you're creating. You can't change @Name@ after you create the @XssMatchSet@ .+--+-- * 'cxmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+createXSSMatchSet+ :: Text -- ^ 'cxmsName'+ -> Text -- ^ 'cxmsChangeToken'+ -> CreateXSSMatchSet+createXSSMatchSet pName_ pChangeToken_ =+ CreateXSSMatchSet' {_cxmsName = pName_, _cxmsChangeToken = pChangeToken_}+++-- | A friendly name or description for the 'XssMatchSet' that you're creating. You can't change @Name@ after you create the @XssMatchSet@ .+cxmsName :: Lens' CreateXSSMatchSet Text+cxmsName = lens _cxmsName (\ s a -> s{_cxmsName = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+cxmsChangeToken :: Lens' CreateXSSMatchSet Text+cxmsChangeToken = lens _cxmsChangeToken (\ s a -> s{_cxmsChangeToken = a});++instance AWSRequest CreateXSSMatchSet where+ type Rs CreateXSSMatchSet = CreateXSSMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ CreateXSSMatchSetResponse' <$>+ (x .?> "XssMatchSet") <*> (x .?> "ChangeToken") <*>+ (pure (fromEnum s)))++instance Hashable CreateXSSMatchSet where++instance NFData CreateXSSMatchSet where++instance ToHeaders CreateXSSMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.CreateXssMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON CreateXSSMatchSet where+ toJSON CreateXSSMatchSet'{..}+ = object+ (catMaybes+ [Just ("Name" .= _cxmsName),+ Just ("ChangeToken" .= _cxmsChangeToken)])++instance ToPath CreateXSSMatchSet where+ toPath = const "/"++instance ToQuery CreateXSSMatchSet where+ toQuery = const mempty++-- | The response to a @CreateXssMatchSet@ request.+--+--+--+-- /See:/ 'createXSSMatchSetResponse' smart constructor.+data CreateXSSMatchSetResponse = CreateXSSMatchSetResponse'+ { _cxmsrsXSSMatchSet :: !(Maybe XSSMatchSet)+ , _cxmsrsChangeToken :: !(Maybe Text)+ , _cxmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'CreateXSSMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cxmsrsXSSMatchSet' - An 'XssMatchSet' .+--+-- * 'cxmsrsChangeToken' - The @ChangeToken@ that you used to submit the @CreateXssMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'cxmsrsResponseStatus' - -- | The response status code.+createXSSMatchSetResponse+ :: Int -- ^ 'cxmsrsResponseStatus'+ -> CreateXSSMatchSetResponse+createXSSMatchSetResponse pResponseStatus_ =+ CreateXSSMatchSetResponse'+ { _cxmsrsXSSMatchSet = Nothing+ , _cxmsrsChangeToken = Nothing+ , _cxmsrsResponseStatus = pResponseStatus_+ }+++-- | An 'XssMatchSet' .+cxmsrsXSSMatchSet :: Lens' CreateXSSMatchSetResponse (Maybe XSSMatchSet)+cxmsrsXSSMatchSet = lens _cxmsrsXSSMatchSet (\ s a -> s{_cxmsrsXSSMatchSet = a});++-- | The @ChangeToken@ that you used to submit the @CreateXssMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+cxmsrsChangeToken :: Lens' CreateXSSMatchSetResponse (Maybe Text)+cxmsrsChangeToken = lens _cxmsrsChangeToken (\ s a -> s{_cxmsrsChangeToken = a});++-- | -- | The response status code.+cxmsrsResponseStatus :: Lens' CreateXSSMatchSetResponse Int+cxmsrsResponseStatus = lens _cxmsrsResponseStatus (\ s a -> s{_cxmsrsResponseStatus = a});++instance NFData CreateXSSMatchSetResponse where
+ gen/Network/AWS/WAFRegional/DeleteByteMatchSet.hs view
@@ -0,0 +1,158 @@+{-# 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.WAFRegional.DeleteByteMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes a 'ByteMatchSet' . You can't delete a @ByteMatchSet@ if it's still used in any @Rules@ or if it still includes any 'ByteMatchTuple' objects (any filters).+--+--+-- If you just want to remove a @ByteMatchSet@ from a @Rule@ , use 'UpdateRule' .+--+-- To permanently delete a @ByteMatchSet@ , perform the following steps:+--+-- * Update the @ByteMatchSet@ to remove filters, if any. For more information, see 'UpdateByteMatchSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteByteMatchSet@ request.+--+-- * Submit a @DeleteByteMatchSet@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteByteMatchSet+ (+ -- * Creating a Request+ deleteByteMatchSet+ , DeleteByteMatchSet+ -- * Request Lenses+ , dbmsByteMatchSetId+ , dbmsChangeToken++ -- * Destructuring the Response+ , deleteByteMatchSetResponse+ , DeleteByteMatchSetResponse+ -- * Response Lenses+ , dbmsrsChangeToken+ , dbmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'deleteByteMatchSet' smart constructor.+data DeleteByteMatchSet = DeleteByteMatchSet'+ { _dbmsByteMatchSetId :: !Text+ , _dbmsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteByteMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dbmsByteMatchSetId' - The @ByteMatchSetId@ of the 'ByteMatchSet' that you want to delete. @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+--+-- * 'dbmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteByteMatchSet+ :: Text -- ^ 'dbmsByteMatchSetId'+ -> Text -- ^ 'dbmsChangeToken'+ -> DeleteByteMatchSet+deleteByteMatchSet pByteMatchSetId_ pChangeToken_ =+ DeleteByteMatchSet'+ {_dbmsByteMatchSetId = pByteMatchSetId_, _dbmsChangeToken = pChangeToken_}+++-- | The @ByteMatchSetId@ of the 'ByteMatchSet' that you want to delete. @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+dbmsByteMatchSetId :: Lens' DeleteByteMatchSet Text+dbmsByteMatchSetId = lens _dbmsByteMatchSetId (\ s a -> s{_dbmsByteMatchSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+dbmsChangeToken :: Lens' DeleteByteMatchSet Text+dbmsChangeToken = lens _dbmsChangeToken (\ s a -> s{_dbmsChangeToken = a});++instance AWSRequest DeleteByteMatchSet where+ type Rs DeleteByteMatchSet =+ DeleteByteMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteByteMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteByteMatchSet where++instance NFData DeleteByteMatchSet where++instance ToHeaders DeleteByteMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteByteMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteByteMatchSet where+ toJSON DeleteByteMatchSet'{..}+ = object+ (catMaybes+ [Just ("ByteMatchSetId" .= _dbmsByteMatchSetId),+ Just ("ChangeToken" .= _dbmsChangeToken)])++instance ToPath DeleteByteMatchSet where+ toPath = const "/"++instance ToQuery DeleteByteMatchSet where+ toQuery = const mempty++-- | /See:/ 'deleteByteMatchSetResponse' smart constructor.+data DeleteByteMatchSetResponse = DeleteByteMatchSetResponse'+ { _dbmsrsChangeToken :: !(Maybe Text)+ , _dbmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteByteMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dbmsrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteByteMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'dbmsrsResponseStatus' - -- | The response status code.+deleteByteMatchSetResponse+ :: Int -- ^ 'dbmsrsResponseStatus'+ -> DeleteByteMatchSetResponse+deleteByteMatchSetResponse pResponseStatus_ =+ DeleteByteMatchSetResponse'+ {_dbmsrsChangeToken = Nothing, _dbmsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteByteMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+dbmsrsChangeToken :: Lens' DeleteByteMatchSetResponse (Maybe Text)+dbmsrsChangeToken = lens _dbmsrsChangeToken (\ s a -> s{_dbmsrsChangeToken = a});++-- | -- | The response status code.+dbmsrsResponseStatus :: Lens' DeleteByteMatchSetResponse Int+dbmsrsResponseStatus = lens _dbmsrsResponseStatus (\ s a -> s{_dbmsrsResponseStatus = a});++instance NFData DeleteByteMatchSetResponse where
+ gen/Network/AWS/WAFRegional/DeleteGeoMatchSet.hs view
@@ -0,0 +1,157 @@+{-# 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.WAFRegional.DeleteGeoMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes a 'GeoMatchSet' . You can't delete a @GeoMatchSet@ if it's still used in any @Rules@ or if it still includes any countries.+--+--+-- If you just want to remove a @GeoMatchSet@ from a @Rule@ , use 'UpdateRule' .+--+-- To permanently delete a @GeoMatchSet@ from AWS WAF, perform the following steps:+--+-- * Update the @GeoMatchSet@ to remove any countries. For more information, see 'UpdateGeoMatchSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteGeoMatchSet@ request.+--+-- * Submit a @DeleteGeoMatchSet@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteGeoMatchSet+ (+ -- * Creating a Request+ deleteGeoMatchSet+ , DeleteGeoMatchSet+ -- * Request Lenses+ , dgmsGeoMatchSetId+ , dgmsChangeToken++ -- * Destructuring the Response+ , deleteGeoMatchSetResponse+ , DeleteGeoMatchSetResponse+ -- * Response Lenses+ , dgmsrsChangeToken+ , dgmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'deleteGeoMatchSet' smart constructor.+data DeleteGeoMatchSet = DeleteGeoMatchSet'+ { _dgmsGeoMatchSetId :: !Text+ , _dgmsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteGeoMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dgmsGeoMatchSetId' - The @GeoMatchSetID@ of the 'GeoMatchSet' that you want to delete. @GeoMatchSetId@ is returned by 'CreateGeoMatchSet' and by 'ListGeoMatchSets' .+--+-- * 'dgmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteGeoMatchSet+ :: Text -- ^ 'dgmsGeoMatchSetId'+ -> Text -- ^ 'dgmsChangeToken'+ -> DeleteGeoMatchSet+deleteGeoMatchSet pGeoMatchSetId_ pChangeToken_ =+ DeleteGeoMatchSet'+ {_dgmsGeoMatchSetId = pGeoMatchSetId_, _dgmsChangeToken = pChangeToken_}+++-- | The @GeoMatchSetID@ of the 'GeoMatchSet' that you want to delete. @GeoMatchSetId@ is returned by 'CreateGeoMatchSet' and by 'ListGeoMatchSets' .+dgmsGeoMatchSetId :: Lens' DeleteGeoMatchSet Text+dgmsGeoMatchSetId = lens _dgmsGeoMatchSetId (\ s a -> s{_dgmsGeoMatchSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+dgmsChangeToken :: Lens' DeleteGeoMatchSet Text+dgmsChangeToken = lens _dgmsChangeToken (\ s a -> s{_dgmsChangeToken = a});++instance AWSRequest DeleteGeoMatchSet where+ type Rs DeleteGeoMatchSet = DeleteGeoMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteGeoMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteGeoMatchSet where++instance NFData DeleteGeoMatchSet where++instance ToHeaders DeleteGeoMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteGeoMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteGeoMatchSet where+ toJSON DeleteGeoMatchSet'{..}+ = object+ (catMaybes+ [Just ("GeoMatchSetId" .= _dgmsGeoMatchSetId),+ Just ("ChangeToken" .= _dgmsChangeToken)])++instance ToPath DeleteGeoMatchSet where+ toPath = const "/"++instance ToQuery DeleteGeoMatchSet where+ toQuery = const mempty++-- | /See:/ 'deleteGeoMatchSetResponse' smart constructor.+data DeleteGeoMatchSetResponse = DeleteGeoMatchSetResponse'+ { _dgmsrsChangeToken :: !(Maybe Text)+ , _dgmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteGeoMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dgmsrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteGeoMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'dgmsrsResponseStatus' - -- | The response status code.+deleteGeoMatchSetResponse+ :: Int -- ^ 'dgmsrsResponseStatus'+ -> DeleteGeoMatchSetResponse+deleteGeoMatchSetResponse pResponseStatus_ =+ DeleteGeoMatchSetResponse'+ {_dgmsrsChangeToken = Nothing, _dgmsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteGeoMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+dgmsrsChangeToken :: Lens' DeleteGeoMatchSetResponse (Maybe Text)+dgmsrsChangeToken = lens _dgmsrsChangeToken (\ s a -> s{_dgmsrsChangeToken = a});++-- | -- | The response status code.+dgmsrsResponseStatus :: Lens' DeleteGeoMatchSetResponse Int+dgmsrsResponseStatus = lens _dgmsrsResponseStatus (\ s a -> s{_dgmsrsResponseStatus = a});++instance NFData DeleteGeoMatchSetResponse where
+ gen/Network/AWS/WAFRegional/DeleteIPSet.hs view
@@ -0,0 +1,156 @@+{-# 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.WAFRegional.DeleteIPSet+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes an 'IPSet' . You can't delete an @IPSet@ if it's still used in any @Rules@ or if it still includes any IP addresses.+--+--+-- If you just want to remove an @IPSet@ from a @Rule@ , use 'UpdateRule' .+--+-- To permanently delete an @IPSet@ from AWS WAF, perform the following steps:+--+-- * Update the @IPSet@ to remove IP address ranges, if any. For more information, see 'UpdateIPSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteIPSet@ request.+--+-- * Submit a @DeleteIPSet@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteIPSet+ (+ -- * Creating a Request+ deleteIPSet+ , DeleteIPSet+ -- * Request Lenses+ , disIPSetId+ , disChangeToken++ -- * Destructuring the Response+ , deleteIPSetResponse+ , DeleteIPSetResponse+ -- * Response Lenses+ , disrsChangeToken+ , disrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'deleteIPSet' smart constructor.+data DeleteIPSet = DeleteIPSet'+ { _disIPSetId :: !Text+ , _disChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteIPSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'disIPSetId' - The @IPSetId@ of the 'IPSet' that you want to delete. @IPSetId@ is returned by 'CreateIPSet' and by 'ListIPSets' .+--+-- * 'disChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteIPSet+ :: Text -- ^ 'disIPSetId'+ -> Text -- ^ 'disChangeToken'+ -> DeleteIPSet+deleteIPSet pIPSetId_ pChangeToken_ =+ DeleteIPSet' {_disIPSetId = pIPSetId_, _disChangeToken = pChangeToken_}+++-- | The @IPSetId@ of the 'IPSet' that you want to delete. @IPSetId@ is returned by 'CreateIPSet' and by 'ListIPSets' .+disIPSetId :: Lens' DeleteIPSet Text+disIPSetId = lens _disIPSetId (\ s a -> s{_disIPSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+disChangeToken :: Lens' DeleteIPSet Text+disChangeToken = lens _disChangeToken (\ s a -> s{_disChangeToken = a});++instance AWSRequest DeleteIPSet where+ type Rs DeleteIPSet = DeleteIPSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteIPSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteIPSet where++instance NFData DeleteIPSet where++instance ToHeaders DeleteIPSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteIPSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteIPSet where+ toJSON DeleteIPSet'{..}+ = object+ (catMaybes+ [Just ("IPSetId" .= _disIPSetId),+ Just ("ChangeToken" .= _disChangeToken)])++instance ToPath DeleteIPSet where+ toPath = const "/"++instance ToQuery DeleteIPSet where+ toQuery = const mempty++-- | /See:/ 'deleteIPSetResponse' smart constructor.+data DeleteIPSetResponse = DeleteIPSetResponse'+ { _disrsChangeToken :: !(Maybe Text)+ , _disrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteIPSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'disrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteIPSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'disrsResponseStatus' - -- | The response status code.+deleteIPSetResponse+ :: Int -- ^ 'disrsResponseStatus'+ -> DeleteIPSetResponse+deleteIPSetResponse pResponseStatus_ =+ DeleteIPSetResponse'+ {_disrsChangeToken = Nothing, _disrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteIPSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+disrsChangeToken :: Lens' DeleteIPSetResponse (Maybe Text)+disrsChangeToken = lens _disrsChangeToken (\ s a -> s{_disrsChangeToken = a});++-- | -- | The response status code.+disrsResponseStatus :: Lens' DeleteIPSetResponse Int+disrsResponseStatus = lens _disrsResponseStatus (\ s a -> s{_disrsResponseStatus = a});++instance NFData DeleteIPSetResponse where
+ gen/Network/AWS/WAFRegional/DeleteRateBasedRule.hs view
@@ -0,0 +1,158 @@+{-# 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.WAFRegional.DeleteRateBasedRule+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes a 'RateBasedRule' . You can't delete a rule if it's still used in any @WebACL@ objects or if it still includes any predicates, such as @ByteMatchSet@ objects.+--+--+-- If you just want to remove a rule from a @WebACL@ , use 'UpdateWebACL' .+--+-- To permanently delete a @RateBasedRule@ from AWS WAF, perform the following steps:+--+-- * Update the @RateBasedRule@ to remove predicates, if any. For more information, see 'UpdateRateBasedRule' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteRateBasedRule@ request.+--+-- * Submit a @DeleteRateBasedRule@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteRateBasedRule+ (+ -- * Creating a Request+ deleteRateBasedRule+ , DeleteRateBasedRule+ -- * Request Lenses+ , drbrRuleId+ , drbrChangeToken++ -- * Destructuring the Response+ , deleteRateBasedRuleResponse+ , DeleteRateBasedRuleResponse+ -- * Response Lenses+ , drbrrsChangeToken+ , drbrrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'deleteRateBasedRule' smart constructor.+data DeleteRateBasedRule = DeleteRateBasedRule'+ { _drbrRuleId :: !Text+ , _drbrChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteRateBasedRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drbrRuleId' - The @RuleId@ of the 'RateBasedRule' that you want to delete. @RuleId@ is returned by 'CreateRateBasedRule' and by 'ListRateBasedRules' .+--+-- * 'drbrChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteRateBasedRule+ :: Text -- ^ 'drbrRuleId'+ -> Text -- ^ 'drbrChangeToken'+ -> DeleteRateBasedRule+deleteRateBasedRule pRuleId_ pChangeToken_ =+ DeleteRateBasedRule'+ {_drbrRuleId = pRuleId_, _drbrChangeToken = pChangeToken_}+++-- | The @RuleId@ of the 'RateBasedRule' that you want to delete. @RuleId@ is returned by 'CreateRateBasedRule' and by 'ListRateBasedRules' .+drbrRuleId :: Lens' DeleteRateBasedRule Text+drbrRuleId = lens _drbrRuleId (\ s a -> s{_drbrRuleId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+drbrChangeToken :: Lens' DeleteRateBasedRule Text+drbrChangeToken = lens _drbrChangeToken (\ s a -> s{_drbrChangeToken = a});++instance AWSRequest DeleteRateBasedRule where+ type Rs DeleteRateBasedRule =+ DeleteRateBasedRuleResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteRateBasedRuleResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteRateBasedRule where++instance NFData DeleteRateBasedRule where++instance ToHeaders DeleteRateBasedRule where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteRateBasedRule" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteRateBasedRule where+ toJSON DeleteRateBasedRule'{..}+ = object+ (catMaybes+ [Just ("RuleId" .= _drbrRuleId),+ Just ("ChangeToken" .= _drbrChangeToken)])++instance ToPath DeleteRateBasedRule where+ toPath = const "/"++instance ToQuery DeleteRateBasedRule where+ toQuery = const mempty++-- | /See:/ 'deleteRateBasedRuleResponse' smart constructor.+data DeleteRateBasedRuleResponse = DeleteRateBasedRuleResponse'+ { _drbrrsChangeToken :: !(Maybe Text)+ , _drbrrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteRateBasedRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drbrrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteRateBasedRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'drbrrsResponseStatus' - -- | The response status code.+deleteRateBasedRuleResponse+ :: Int -- ^ 'drbrrsResponseStatus'+ -> DeleteRateBasedRuleResponse+deleteRateBasedRuleResponse pResponseStatus_ =+ DeleteRateBasedRuleResponse'+ {_drbrrsChangeToken = Nothing, _drbrrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteRateBasedRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+drbrrsChangeToken :: Lens' DeleteRateBasedRuleResponse (Maybe Text)+drbrrsChangeToken = lens _drbrrsChangeToken (\ s a -> s{_drbrrsChangeToken = a});++-- | -- | The response status code.+drbrrsResponseStatus :: Lens' DeleteRateBasedRuleResponse Int+drbrrsResponseStatus = lens _drbrrsResponseStatus (\ s a -> s{_drbrrsResponseStatus = a});++instance NFData DeleteRateBasedRuleResponse where
+ gen/Network/AWS/WAFRegional/DeleteRegexMatchSet.hs view
@@ -0,0 +1,158 @@+{-# 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.WAFRegional.DeleteRegexMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes a 'RegexMatchSet' . You can't delete a @RegexMatchSet@ if it's still used in any @Rules@ or if it still includes any @RegexMatchTuples@ objects (any filters).+--+--+-- If you just want to remove a @RegexMatchSet@ from a @Rule@ , use 'UpdateRule' .+--+-- To permanently delete a @RegexMatchSet@ , perform the following steps:+--+-- * Update the @RegexMatchSet@ to remove filters, if any. For more information, see 'UpdateRegexMatchSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteRegexMatchSet@ request.+--+-- * Submit a @DeleteRegexMatchSet@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteRegexMatchSet+ (+ -- * Creating a Request+ deleteRegexMatchSet+ , DeleteRegexMatchSet+ -- * Request Lenses+ , drmsRegexMatchSetId+ , drmsChangeToken++ -- * Destructuring the Response+ , deleteRegexMatchSetResponse+ , DeleteRegexMatchSetResponse+ -- * Response Lenses+ , drmsrsChangeToken+ , drmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'deleteRegexMatchSet' smart constructor.+data DeleteRegexMatchSet = DeleteRegexMatchSet'+ { _drmsRegexMatchSetId :: !Text+ , _drmsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteRegexMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drmsRegexMatchSetId' - The @RegexMatchSetId@ of the 'RegexMatchSet' that you want to delete. @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+--+-- * 'drmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteRegexMatchSet+ :: Text -- ^ 'drmsRegexMatchSetId'+ -> Text -- ^ 'drmsChangeToken'+ -> DeleteRegexMatchSet+deleteRegexMatchSet pRegexMatchSetId_ pChangeToken_ =+ DeleteRegexMatchSet'+ {_drmsRegexMatchSetId = pRegexMatchSetId_, _drmsChangeToken = pChangeToken_}+++-- | The @RegexMatchSetId@ of the 'RegexMatchSet' that you want to delete. @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+drmsRegexMatchSetId :: Lens' DeleteRegexMatchSet Text+drmsRegexMatchSetId = lens _drmsRegexMatchSetId (\ s a -> s{_drmsRegexMatchSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+drmsChangeToken :: Lens' DeleteRegexMatchSet Text+drmsChangeToken = lens _drmsChangeToken (\ s a -> s{_drmsChangeToken = a});++instance AWSRequest DeleteRegexMatchSet where+ type Rs DeleteRegexMatchSet =+ DeleteRegexMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteRegexMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteRegexMatchSet where++instance NFData DeleteRegexMatchSet where++instance ToHeaders DeleteRegexMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteRegexMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteRegexMatchSet where+ toJSON DeleteRegexMatchSet'{..}+ = object+ (catMaybes+ [Just ("RegexMatchSetId" .= _drmsRegexMatchSetId),+ Just ("ChangeToken" .= _drmsChangeToken)])++instance ToPath DeleteRegexMatchSet where+ toPath = const "/"++instance ToQuery DeleteRegexMatchSet where+ toQuery = const mempty++-- | /See:/ 'deleteRegexMatchSetResponse' smart constructor.+data DeleteRegexMatchSetResponse = DeleteRegexMatchSetResponse'+ { _drmsrsChangeToken :: !(Maybe Text)+ , _drmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteRegexMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drmsrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteRegexMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'drmsrsResponseStatus' - -- | The response status code.+deleteRegexMatchSetResponse+ :: Int -- ^ 'drmsrsResponseStatus'+ -> DeleteRegexMatchSetResponse+deleteRegexMatchSetResponse pResponseStatus_ =+ DeleteRegexMatchSetResponse'+ {_drmsrsChangeToken = Nothing, _drmsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteRegexMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+drmsrsChangeToken :: Lens' DeleteRegexMatchSetResponse (Maybe Text)+drmsrsChangeToken = lens _drmsrsChangeToken (\ s a -> s{_drmsrsChangeToken = a});++-- | -- | The response status code.+drmsrsResponseStatus :: Lens' DeleteRegexMatchSetResponse Int+drmsrsResponseStatus = lens _drmsrsResponseStatus (\ s a -> s{_drmsrsResponseStatus = a});++instance NFData DeleteRegexMatchSetResponse where
+ gen/Network/AWS/WAFRegional/DeleteRegexPatternSet.hs view
@@ -0,0 +1,149 @@+{-# 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.WAFRegional.DeleteRegexPatternSet+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes a 'RegexPatternSet' . You can't delete a @RegexPatternSet@ if it's still used in any @RegexMatchSet@ or if the @RegexPatternSet@ is not empty.+--+--+module Network.AWS.WAFRegional.DeleteRegexPatternSet+ (+ -- * Creating a Request+ deleteRegexPatternSet+ , DeleteRegexPatternSet+ -- * Request Lenses+ , drpsRegexPatternSetId+ , drpsChangeToken++ -- * Destructuring the Response+ , deleteRegexPatternSetResponse+ , DeleteRegexPatternSetResponse+ -- * Response Lenses+ , drpsrsChangeToken+ , drpsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'deleteRegexPatternSet' smart constructor.+data DeleteRegexPatternSet = DeleteRegexPatternSet'+ { _drpsRegexPatternSetId :: !Text+ , _drpsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteRegexPatternSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drpsRegexPatternSetId' - The @RegexPatternSetId@ of the 'RegexPatternSet' that you want to delete. @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+--+-- * 'drpsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteRegexPatternSet+ :: Text -- ^ 'drpsRegexPatternSetId'+ -> Text -- ^ 'drpsChangeToken'+ -> DeleteRegexPatternSet+deleteRegexPatternSet pRegexPatternSetId_ pChangeToken_ =+ DeleteRegexPatternSet'+ { _drpsRegexPatternSetId = pRegexPatternSetId_+ , _drpsChangeToken = pChangeToken_+ }+++-- | The @RegexPatternSetId@ of the 'RegexPatternSet' that you want to delete. @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+drpsRegexPatternSetId :: Lens' DeleteRegexPatternSet Text+drpsRegexPatternSetId = lens _drpsRegexPatternSetId (\ s a -> s{_drpsRegexPatternSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+drpsChangeToken :: Lens' DeleteRegexPatternSet Text+drpsChangeToken = lens _drpsChangeToken (\ s a -> s{_drpsChangeToken = a});++instance AWSRequest DeleteRegexPatternSet where+ type Rs DeleteRegexPatternSet =+ DeleteRegexPatternSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteRegexPatternSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteRegexPatternSet where++instance NFData DeleteRegexPatternSet where++instance ToHeaders DeleteRegexPatternSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteRegexPatternSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteRegexPatternSet where+ toJSON DeleteRegexPatternSet'{..}+ = object+ (catMaybes+ [Just+ ("RegexPatternSetId" .= _drpsRegexPatternSetId),+ Just ("ChangeToken" .= _drpsChangeToken)])++instance ToPath DeleteRegexPatternSet where+ toPath = const "/"++instance ToQuery DeleteRegexPatternSet where+ toQuery = const mempty++-- | /See:/ 'deleteRegexPatternSetResponse' smart constructor.+data DeleteRegexPatternSetResponse = DeleteRegexPatternSetResponse'+ { _drpsrsChangeToken :: !(Maybe Text)+ , _drpsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteRegexPatternSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drpsrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteRegexPatternSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'drpsrsResponseStatus' - -- | The response status code.+deleteRegexPatternSetResponse+ :: Int -- ^ 'drpsrsResponseStatus'+ -> DeleteRegexPatternSetResponse+deleteRegexPatternSetResponse pResponseStatus_ =+ DeleteRegexPatternSetResponse'+ {_drpsrsChangeToken = Nothing, _drpsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteRegexPatternSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+drpsrsChangeToken :: Lens' DeleteRegexPatternSetResponse (Maybe Text)+drpsrsChangeToken = lens _drpsrsChangeToken (\ s a -> s{_drpsrsChangeToken = a});++-- | -- | The response status code.+drpsrsResponseStatus :: Lens' DeleteRegexPatternSetResponse Int+drpsrsResponseStatus = lens _drpsrsResponseStatus (\ s a -> s{_drpsrsResponseStatus = a});++instance NFData DeleteRegexPatternSetResponse where
+ gen/Network/AWS/WAFRegional/DeleteRule.hs view
@@ -0,0 +1,156 @@+{-# 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.WAFRegional.DeleteRule+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes a 'Rule' . You can't delete a @Rule@ if it's still used in any @WebACL@ objects or if it still includes any predicates, such as @ByteMatchSet@ objects.+--+--+-- If you just want to remove a @Rule@ from a @WebACL@ , use 'UpdateWebACL' .+--+-- To permanently delete a @Rule@ from AWS WAF, perform the following steps:+--+-- * Update the @Rule@ to remove predicates, if any. For more information, see 'UpdateRule' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteRule@ request.+--+-- * Submit a @DeleteRule@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteRule+ (+ -- * Creating a Request+ deleteRule+ , DeleteRule+ -- * Request Lenses+ , drRuleId+ , drChangeToken++ -- * Destructuring the Response+ , deleteRuleResponse+ , DeleteRuleResponse+ -- * Response Lenses+ , drrsChangeToken+ , drrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'deleteRule' smart constructor.+data DeleteRule = DeleteRule'+ { _drRuleId :: !Text+ , _drChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drRuleId' - The @RuleId@ of the 'Rule' that you want to delete. @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+--+-- * 'drChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteRule+ :: Text -- ^ 'drRuleId'+ -> Text -- ^ 'drChangeToken'+ -> DeleteRule+deleteRule pRuleId_ pChangeToken_ =+ DeleteRule' {_drRuleId = pRuleId_, _drChangeToken = pChangeToken_}+++-- | The @RuleId@ of the 'Rule' that you want to delete. @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+drRuleId :: Lens' DeleteRule Text+drRuleId = lens _drRuleId (\ s a -> s{_drRuleId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+drChangeToken :: Lens' DeleteRule Text+drChangeToken = lens _drChangeToken (\ s a -> s{_drChangeToken = a});++instance AWSRequest DeleteRule where+ type Rs DeleteRule = DeleteRuleResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteRuleResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteRule where++instance NFData DeleteRule where++instance ToHeaders DeleteRule where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteRule" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteRule where+ toJSON DeleteRule'{..}+ = object+ (catMaybes+ [Just ("RuleId" .= _drRuleId),+ Just ("ChangeToken" .= _drChangeToken)])++instance ToPath DeleteRule where+ toPath = const "/"++instance ToQuery DeleteRule where+ toQuery = const mempty++-- | /See:/ 'deleteRuleResponse' smart constructor.+data DeleteRuleResponse = DeleteRuleResponse'+ { _drrsChangeToken :: !(Maybe Text)+ , _drrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'drrsResponseStatus' - -- | The response status code.+deleteRuleResponse+ :: Int -- ^ 'drrsResponseStatus'+ -> DeleteRuleResponse+deleteRuleResponse pResponseStatus_ =+ DeleteRuleResponse'+ {_drrsChangeToken = Nothing, _drrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+drrsChangeToken :: Lens' DeleteRuleResponse (Maybe Text)+drrsChangeToken = lens _drrsChangeToken (\ s a -> s{_drrsChangeToken = a});++-- | -- | The response status code.+drrsResponseStatus :: Lens' DeleteRuleResponse Int+drrsResponseStatus = lens _drrsResponseStatus (\ s a -> s{_drrsResponseStatus = a});++instance NFData DeleteRuleResponse where
+ gen/Network/AWS/WAFRegional/DeleteSizeConstraintSet.hs view
@@ -0,0 +1,161 @@+{-# 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.WAFRegional.DeleteSizeConstraintSet+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes a 'SizeConstraintSet' . You can't delete a @SizeConstraintSet@ if it's still used in any @Rules@ or if it still includes any 'SizeConstraint' objects (any filters).+--+--+-- If you just want to remove a @SizeConstraintSet@ from a @Rule@ , use 'UpdateRule' .+--+-- To permanently delete a @SizeConstraintSet@ , perform the following steps:+--+-- * Update the @SizeConstraintSet@ to remove filters, if any. For more information, see 'UpdateSizeConstraintSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteSizeConstraintSet@ request.+--+-- * Submit a @DeleteSizeConstraintSet@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteSizeConstraintSet+ (+ -- * Creating a Request+ deleteSizeConstraintSet+ , DeleteSizeConstraintSet+ -- * Request Lenses+ , dscsSizeConstraintSetId+ , dscsChangeToken++ -- * Destructuring the Response+ , deleteSizeConstraintSetResponse+ , DeleteSizeConstraintSetResponse+ -- * Response Lenses+ , dscsrsChangeToken+ , dscsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'deleteSizeConstraintSet' smart constructor.+data DeleteSizeConstraintSet = DeleteSizeConstraintSet'+ { _dscsSizeConstraintSetId :: !Text+ , _dscsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteSizeConstraintSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dscsSizeConstraintSetId' - The @SizeConstraintSetId@ of the 'SizeConstraintSet' that you want to delete. @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+--+-- * 'dscsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteSizeConstraintSet+ :: Text -- ^ 'dscsSizeConstraintSetId'+ -> Text -- ^ 'dscsChangeToken'+ -> DeleteSizeConstraintSet+deleteSizeConstraintSet pSizeConstraintSetId_ pChangeToken_ =+ DeleteSizeConstraintSet'+ { _dscsSizeConstraintSetId = pSizeConstraintSetId_+ , _dscsChangeToken = pChangeToken_+ }+++-- | The @SizeConstraintSetId@ of the 'SizeConstraintSet' that you want to delete. @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+dscsSizeConstraintSetId :: Lens' DeleteSizeConstraintSet Text+dscsSizeConstraintSetId = lens _dscsSizeConstraintSetId (\ s a -> s{_dscsSizeConstraintSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+dscsChangeToken :: Lens' DeleteSizeConstraintSet Text+dscsChangeToken = lens _dscsChangeToken (\ s a -> s{_dscsChangeToken = a});++instance AWSRequest DeleteSizeConstraintSet where+ type Rs DeleteSizeConstraintSet =+ DeleteSizeConstraintSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteSizeConstraintSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteSizeConstraintSet where++instance NFData DeleteSizeConstraintSet where++instance ToHeaders DeleteSizeConstraintSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteSizeConstraintSet"+ :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteSizeConstraintSet where+ toJSON DeleteSizeConstraintSet'{..}+ = object+ (catMaybes+ [Just+ ("SizeConstraintSetId" .= _dscsSizeConstraintSetId),+ Just ("ChangeToken" .= _dscsChangeToken)])++instance ToPath DeleteSizeConstraintSet where+ toPath = const "/"++instance ToQuery DeleteSizeConstraintSet where+ toQuery = const mempty++-- | /See:/ 'deleteSizeConstraintSetResponse' smart constructor.+data DeleteSizeConstraintSetResponse = DeleteSizeConstraintSetResponse'+ { _dscsrsChangeToken :: !(Maybe Text)+ , _dscsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteSizeConstraintSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dscsrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteSizeConstraintSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'dscsrsResponseStatus' - -- | The response status code.+deleteSizeConstraintSetResponse+ :: Int -- ^ 'dscsrsResponseStatus'+ -> DeleteSizeConstraintSetResponse+deleteSizeConstraintSetResponse pResponseStatus_ =+ DeleteSizeConstraintSetResponse'+ {_dscsrsChangeToken = Nothing, _dscsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteSizeConstraintSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+dscsrsChangeToken :: Lens' DeleteSizeConstraintSetResponse (Maybe Text)+dscsrsChangeToken = lens _dscsrsChangeToken (\ s a -> s{_dscsrsChangeToken = a});++-- | -- | The response status code.+dscsrsResponseStatus :: Lens' DeleteSizeConstraintSetResponse Int+dscsrsResponseStatus = lens _dscsrsResponseStatus (\ s a -> s{_dscsrsResponseStatus = a});++instance NFData DeleteSizeConstraintSetResponse where
+ gen/Network/AWS/WAFRegional/DeleteSqlInjectionMatchSet.hs view
@@ -0,0 +1,171 @@+{-# 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.WAFRegional.DeleteSqlInjectionMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes a 'SqlInjectionMatchSet' . You can't delete a @SqlInjectionMatchSet@ if it's still used in any @Rules@ or if it still contains any 'SqlInjectionMatchTuple' objects.+--+--+-- If you just want to remove a @SqlInjectionMatchSet@ from a @Rule@ , use 'UpdateRule' .+--+-- To permanently delete a @SqlInjectionMatchSet@ from AWS WAF, perform the following steps:+--+-- * Update the @SqlInjectionMatchSet@ to remove filters, if any. For more information, see 'UpdateSqlInjectionMatchSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteSqlInjectionMatchSet@ request.+--+-- * Submit a @DeleteSqlInjectionMatchSet@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteSqlInjectionMatchSet+ (+ -- * Creating a Request+ deleteSqlInjectionMatchSet+ , DeleteSqlInjectionMatchSet+ -- * Request Lenses+ , dsimsSqlInjectionMatchSetId+ , dsimsChangeToken++ -- * Destructuring the Response+ , deleteSqlInjectionMatchSetResponse+ , DeleteSqlInjectionMatchSetResponse+ -- * Response Lenses+ , dsimsrsChangeToken+ , dsimsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to delete a 'SqlInjectionMatchSet' from AWS WAF.+--+--+--+-- /See:/ 'deleteSqlInjectionMatchSet' smart constructor.+data DeleteSqlInjectionMatchSet = DeleteSqlInjectionMatchSet'+ { _dsimsSqlInjectionMatchSetId :: !Text+ , _dsimsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteSqlInjectionMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dsimsSqlInjectionMatchSetId' - The @SqlInjectionMatchSetId@ of the 'SqlInjectionMatchSet' that you want to delete. @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+--+-- * 'dsimsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteSqlInjectionMatchSet+ :: Text -- ^ 'dsimsSqlInjectionMatchSetId'+ -> Text -- ^ 'dsimsChangeToken'+ -> DeleteSqlInjectionMatchSet+deleteSqlInjectionMatchSet pSqlInjectionMatchSetId_ pChangeToken_ =+ DeleteSqlInjectionMatchSet'+ { _dsimsSqlInjectionMatchSetId = pSqlInjectionMatchSetId_+ , _dsimsChangeToken = pChangeToken_+ }+++-- | The @SqlInjectionMatchSetId@ of the 'SqlInjectionMatchSet' that you want to delete. @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+dsimsSqlInjectionMatchSetId :: Lens' DeleteSqlInjectionMatchSet Text+dsimsSqlInjectionMatchSetId = lens _dsimsSqlInjectionMatchSetId (\ s a -> s{_dsimsSqlInjectionMatchSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+dsimsChangeToken :: Lens' DeleteSqlInjectionMatchSet Text+dsimsChangeToken = lens _dsimsChangeToken (\ s a -> s{_dsimsChangeToken = a});++instance AWSRequest DeleteSqlInjectionMatchSet where+ type Rs DeleteSqlInjectionMatchSet =+ DeleteSqlInjectionMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteSqlInjectionMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteSqlInjectionMatchSet where++instance NFData DeleteSqlInjectionMatchSet where++instance ToHeaders DeleteSqlInjectionMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteSqlInjectionMatchSet"+ :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteSqlInjectionMatchSet where+ toJSON DeleteSqlInjectionMatchSet'{..}+ = object+ (catMaybes+ [Just+ ("SqlInjectionMatchSetId" .=+ _dsimsSqlInjectionMatchSetId),+ Just ("ChangeToken" .= _dsimsChangeToken)])++instance ToPath DeleteSqlInjectionMatchSet where+ toPath = const "/"++instance ToQuery DeleteSqlInjectionMatchSet where+ toQuery = const mempty++-- | The response to a request to delete a 'SqlInjectionMatchSet' from AWS WAF.+--+--+--+-- /See:/ 'deleteSqlInjectionMatchSetResponse' smart constructor.+data DeleteSqlInjectionMatchSetResponse = DeleteSqlInjectionMatchSetResponse'+ { _dsimsrsChangeToken :: !(Maybe Text)+ , _dsimsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteSqlInjectionMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dsimsrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteSqlInjectionMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'dsimsrsResponseStatus' - -- | The response status code.+deleteSqlInjectionMatchSetResponse+ :: Int -- ^ 'dsimsrsResponseStatus'+ -> DeleteSqlInjectionMatchSetResponse+deleteSqlInjectionMatchSetResponse pResponseStatus_ =+ DeleteSqlInjectionMatchSetResponse'+ {_dsimsrsChangeToken = Nothing, _dsimsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteSqlInjectionMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+dsimsrsChangeToken :: Lens' DeleteSqlInjectionMatchSetResponse (Maybe Text)+dsimsrsChangeToken = lens _dsimsrsChangeToken (\ s a -> s{_dsimsrsChangeToken = a});++-- | -- | The response status code.+dsimsrsResponseStatus :: Lens' DeleteSqlInjectionMatchSetResponse Int+dsimsrsResponseStatus = lens _dsimsrsResponseStatus (\ s a -> s{_dsimsrsResponseStatus = a});++instance NFData DeleteSqlInjectionMatchSetResponse+ where
+ gen/Network/AWS/WAFRegional/DeleteWebACL.hs view
@@ -0,0 +1,154 @@+{-# 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.WAFRegional.DeleteWebACL+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes a 'WebACL' . You can't delete a @WebACL@ if it still contains any @Rules@ .+--+--+-- To delete a @WebACL@ , perform the following steps:+--+-- * Update the @WebACL@ to remove @Rules@ , if any. For more information, see 'UpdateWebACL' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteWebACL@ request.+--+-- * Submit a @DeleteWebACL@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteWebACL+ (+ -- * Creating a Request+ deleteWebACL+ , DeleteWebACL+ -- * Request Lenses+ , dwaWebACLId+ , dwaChangeToken++ -- * Destructuring the Response+ , deleteWebACLResponse+ , DeleteWebACLResponse+ -- * Response Lenses+ , dwarsChangeToken+ , dwarsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'deleteWebACL' smart constructor.+data DeleteWebACL = DeleteWebACL'+ { _dwaWebACLId :: !Text+ , _dwaChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteWebACL' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dwaWebACLId' - The @WebACLId@ of the 'WebACL' that you want to delete. @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+--+-- * 'dwaChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteWebACL+ :: Text -- ^ 'dwaWebACLId'+ -> Text -- ^ 'dwaChangeToken'+ -> DeleteWebACL+deleteWebACL pWebACLId_ pChangeToken_ =+ DeleteWebACL' {_dwaWebACLId = pWebACLId_, _dwaChangeToken = pChangeToken_}+++-- | The @WebACLId@ of the 'WebACL' that you want to delete. @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+dwaWebACLId :: Lens' DeleteWebACL Text+dwaWebACLId = lens _dwaWebACLId (\ s a -> s{_dwaWebACLId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+dwaChangeToken :: Lens' DeleteWebACL Text+dwaChangeToken = lens _dwaChangeToken (\ s a -> s{_dwaChangeToken = a});++instance AWSRequest DeleteWebACL where+ type Rs DeleteWebACL = DeleteWebACLResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteWebACLResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteWebACL where++instance NFData DeleteWebACL where++instance ToHeaders DeleteWebACL where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteWebACL" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteWebACL where+ toJSON DeleteWebACL'{..}+ = object+ (catMaybes+ [Just ("WebACLId" .= _dwaWebACLId),+ Just ("ChangeToken" .= _dwaChangeToken)])++instance ToPath DeleteWebACL where+ toPath = const "/"++instance ToQuery DeleteWebACL where+ toQuery = const mempty++-- | /See:/ 'deleteWebACLResponse' smart constructor.+data DeleteWebACLResponse = DeleteWebACLResponse'+ { _dwarsChangeToken :: !(Maybe Text)+ , _dwarsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteWebACLResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dwarsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteWebACL@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'dwarsResponseStatus' - -- | The response status code.+deleteWebACLResponse+ :: Int -- ^ 'dwarsResponseStatus'+ -> DeleteWebACLResponse+deleteWebACLResponse pResponseStatus_ =+ DeleteWebACLResponse'+ {_dwarsChangeToken = Nothing, _dwarsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteWebACL@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+dwarsChangeToken :: Lens' DeleteWebACLResponse (Maybe Text)+dwarsChangeToken = lens _dwarsChangeToken (\ s a -> s{_dwarsChangeToken = a});++-- | -- | The response status code.+dwarsResponseStatus :: Lens' DeleteWebACLResponse Int+dwarsResponseStatus = lens _dwarsResponseStatus (\ s a -> s{_dwarsResponseStatus = a});++instance NFData DeleteWebACLResponse where
+ gen/Network/AWS/WAFRegional/DeleteXSSMatchSet.hs view
@@ -0,0 +1,165 @@+{-# 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.WAFRegional.DeleteXSSMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Permanently deletes an 'XssMatchSet' . You can't delete an @XssMatchSet@ if it's still used in any @Rules@ or if it still contains any 'XssMatchTuple' objects.+--+--+-- If you just want to remove an @XssMatchSet@ from a @Rule@ , use 'UpdateRule' .+--+-- To permanently delete an @XssMatchSet@ from AWS WAF, perform the following steps:+--+-- * Update the @XssMatchSet@ to remove filters, if any. For more information, see 'UpdateXssMatchSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of a @DeleteXssMatchSet@ request.+--+-- * Submit a @DeleteXssMatchSet@ request.+--+--+--+module Network.AWS.WAFRegional.DeleteXSSMatchSet+ (+ -- * Creating a Request+ deleteXSSMatchSet+ , DeleteXSSMatchSet+ -- * Request Lenses+ , dxmsXSSMatchSetId+ , dxmsChangeToken++ -- * Destructuring the Response+ , deleteXSSMatchSetResponse+ , DeleteXSSMatchSetResponse+ -- * Response Lenses+ , dxmsrsChangeToken+ , dxmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to delete an 'XssMatchSet' from AWS WAF.+--+--+--+-- /See:/ 'deleteXSSMatchSet' smart constructor.+data DeleteXSSMatchSet = DeleteXSSMatchSet'+ { _dxmsXSSMatchSetId :: !Text+ , _dxmsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteXSSMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dxmsXSSMatchSetId' - The @XssMatchSetId@ of the 'XssMatchSet' that you want to delete. @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+--+-- * 'dxmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+deleteXSSMatchSet+ :: Text -- ^ 'dxmsXSSMatchSetId'+ -> Text -- ^ 'dxmsChangeToken'+ -> DeleteXSSMatchSet+deleteXSSMatchSet pXSSMatchSetId_ pChangeToken_ =+ DeleteXSSMatchSet'+ {_dxmsXSSMatchSetId = pXSSMatchSetId_, _dxmsChangeToken = pChangeToken_}+++-- | The @XssMatchSetId@ of the 'XssMatchSet' that you want to delete. @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+dxmsXSSMatchSetId :: Lens' DeleteXSSMatchSet Text+dxmsXSSMatchSetId = lens _dxmsXSSMatchSetId (\ s a -> s{_dxmsXSSMatchSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+dxmsChangeToken :: Lens' DeleteXSSMatchSet Text+dxmsChangeToken = lens _dxmsChangeToken (\ s a -> s{_dxmsChangeToken = a});++instance AWSRequest DeleteXSSMatchSet where+ type Rs DeleteXSSMatchSet = DeleteXSSMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ DeleteXSSMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable DeleteXSSMatchSet where++instance NFData DeleteXSSMatchSet where++instance ToHeaders DeleteXSSMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DeleteXssMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DeleteXSSMatchSet where+ toJSON DeleteXSSMatchSet'{..}+ = object+ (catMaybes+ [Just ("XssMatchSetId" .= _dxmsXSSMatchSetId),+ Just ("ChangeToken" .= _dxmsChangeToken)])++instance ToPath DeleteXSSMatchSet where+ toPath = const "/"++instance ToQuery DeleteXSSMatchSet where+ toQuery = const mempty++-- | The response to a request to delete an 'XssMatchSet' from AWS WAF.+--+--+--+-- /See:/ 'deleteXSSMatchSetResponse' smart constructor.+data DeleteXSSMatchSetResponse = DeleteXSSMatchSetResponse'+ { _dxmsrsChangeToken :: !(Maybe Text)+ , _dxmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DeleteXSSMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dxmsrsChangeToken' - The @ChangeToken@ that you used to submit the @DeleteXssMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'dxmsrsResponseStatus' - -- | The response status code.+deleteXSSMatchSetResponse+ :: Int -- ^ 'dxmsrsResponseStatus'+ -> DeleteXSSMatchSetResponse+deleteXSSMatchSetResponse pResponseStatus_ =+ DeleteXSSMatchSetResponse'+ {_dxmsrsChangeToken = Nothing, _dxmsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @DeleteXssMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+dxmsrsChangeToken :: Lens' DeleteXSSMatchSetResponse (Maybe Text)+dxmsrsChangeToken = lens _dxmsrsChangeToken (\ s a -> s{_dxmsrsChangeToken = a});++-- | -- | The response status code.+dxmsrsResponseStatus :: Lens' DeleteXSSMatchSetResponse Int+dxmsrsResponseStatus = lens _dxmsrsResponseStatus (\ s a -> s{_dxmsrsResponseStatus = a});++instance NFData DeleteXSSMatchSetResponse where
+ gen/Network/AWS/WAFRegional/DisassociateWebACL.hs view
@@ -0,0 +1,124 @@+{-# 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.WAFRegional.DisassociateWebACL+-- Copyright : (c) 2013-2017 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)+--+-- Removes a web ACL from the specified resource.+--+--+module Network.AWS.WAFRegional.DisassociateWebACL+ (+ -- * Creating a Request+ disassociateWebACL+ , DisassociateWebACL+ -- * Request Lenses+ , dwaResourceARN++ -- * Destructuring the Response+ , disassociateWebACLResponse+ , DisassociateWebACLResponse+ -- * Response Lenses+ , dwaclrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'disassociateWebACL' smart constructor.+newtype DisassociateWebACL = DisassociateWebACL'+ { _dwaResourceARN :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DisassociateWebACL' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dwaResourceARN' - The ARN (Amazon Resource Name) of the resource from which the web ACL is being removed.+disassociateWebACL+ :: Text -- ^ 'dwaResourceARN'+ -> DisassociateWebACL+disassociateWebACL pResourceARN_ =+ DisassociateWebACL' {_dwaResourceARN = pResourceARN_}+++-- | The ARN (Amazon Resource Name) of the resource from which the web ACL is being removed.+dwaResourceARN :: Lens' DisassociateWebACL Text+dwaResourceARN = lens _dwaResourceARN (\ s a -> s{_dwaResourceARN = a});++instance AWSRequest DisassociateWebACL where+ type Rs DisassociateWebACL =+ DisassociateWebACLResponse+ request = postJSON wAFRegional+ response+ = receiveEmpty+ (\ s h x ->+ DisassociateWebACLResponse' <$> (pure (fromEnum s)))++instance Hashable DisassociateWebACL where++instance NFData DisassociateWebACL where++instance ToHeaders DisassociateWebACL where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.DisassociateWebACL" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON DisassociateWebACL where+ toJSON DisassociateWebACL'{..}+ = object+ (catMaybes [Just ("ResourceArn" .= _dwaResourceARN)])++instance ToPath DisassociateWebACL where+ toPath = const "/"++instance ToQuery DisassociateWebACL where+ toQuery = const mempty++-- | /See:/ 'disassociateWebACLResponse' smart constructor.+newtype DisassociateWebACLResponse = DisassociateWebACLResponse'+ { _dwaclrsResponseStatus :: Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'DisassociateWebACLResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dwaclrsResponseStatus' - -- | The response status code.+disassociateWebACLResponse+ :: Int -- ^ 'dwaclrsResponseStatus'+ -> DisassociateWebACLResponse+disassociateWebACLResponse pResponseStatus_ =+ DisassociateWebACLResponse' {_dwaclrsResponseStatus = pResponseStatus_}+++-- | -- | The response status code.+dwaclrsResponseStatus :: Lens' DisassociateWebACLResponse Int+dwaclrsResponseStatus = lens _dwaclrsResponseStatus (\ s a -> s{_dwaclrsResponseStatus = a});++instance NFData DisassociateWebACLResponse where
+ gen/Network/AWS/WAFRegional/GetByteMatchSet.hs view
@@ -0,0 +1,134 @@+{-# 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.WAFRegional.GetByteMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'ByteMatchSet' specified by @ByteMatchSetId@ .+--+--+module Network.AWS.WAFRegional.GetByteMatchSet+ (+ -- * Creating a Request+ getByteMatchSet+ , GetByteMatchSet+ -- * Request Lenses+ , gbmsByteMatchSetId++ -- * Destructuring the Response+ , getByteMatchSetResponse+ , GetByteMatchSetResponse+ -- * Response Lenses+ , gbmsrsByteMatchSet+ , gbmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getByteMatchSet' smart constructor.+newtype GetByteMatchSet = GetByteMatchSet'+ { _gbmsByteMatchSetId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetByteMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gbmsByteMatchSetId' - The @ByteMatchSetId@ of the 'ByteMatchSet' that you want to get. @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+getByteMatchSet+ :: Text -- ^ 'gbmsByteMatchSetId'+ -> GetByteMatchSet+getByteMatchSet pByteMatchSetId_ =+ GetByteMatchSet' {_gbmsByteMatchSetId = pByteMatchSetId_}+++-- | The @ByteMatchSetId@ of the 'ByteMatchSet' that you want to get. @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+gbmsByteMatchSetId :: Lens' GetByteMatchSet Text+gbmsByteMatchSetId = lens _gbmsByteMatchSetId (\ s a -> s{_gbmsByteMatchSetId = a});++instance AWSRequest GetByteMatchSet where+ type Rs GetByteMatchSet = GetByteMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetByteMatchSetResponse' <$>+ (x .?> "ByteMatchSet") <*> (pure (fromEnum s)))++instance Hashable GetByteMatchSet where++instance NFData GetByteMatchSet where++instance ToHeaders GetByteMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetByteMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetByteMatchSet where+ toJSON GetByteMatchSet'{..}+ = object+ (catMaybes+ [Just ("ByteMatchSetId" .= _gbmsByteMatchSetId)])++instance ToPath GetByteMatchSet where+ toPath = const "/"++instance ToQuery GetByteMatchSet where+ toQuery = const mempty++-- | /See:/ 'getByteMatchSetResponse' smart constructor.+data GetByteMatchSetResponse = GetByteMatchSetResponse'+ { _gbmsrsByteMatchSet :: !(Maybe ByteMatchSet)+ , _gbmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetByteMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gbmsrsByteMatchSet' - Information about the 'ByteMatchSet' that you specified in the @GetByteMatchSet@ request. For more information, see the following topics: * 'ByteMatchSet' : Contains @ByteMatchSetId@ , @ByteMatchTuples@ , and @Name@ * @ByteMatchTuples@ : Contains an array of 'ByteMatchTuple' objects. Each @ByteMatchTuple@ object contains 'FieldToMatch' , @PositionalConstraint@ , @TargetString@ , and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+--+-- * 'gbmsrsResponseStatus' - -- | The response status code.+getByteMatchSetResponse+ :: Int -- ^ 'gbmsrsResponseStatus'+ -> GetByteMatchSetResponse+getByteMatchSetResponse pResponseStatus_ =+ GetByteMatchSetResponse'+ {_gbmsrsByteMatchSet = Nothing, _gbmsrsResponseStatus = pResponseStatus_}+++-- | Information about the 'ByteMatchSet' that you specified in the @GetByteMatchSet@ request. For more information, see the following topics: * 'ByteMatchSet' : Contains @ByteMatchSetId@ , @ByteMatchTuples@ , and @Name@ * @ByteMatchTuples@ : Contains an array of 'ByteMatchTuple' objects. Each @ByteMatchTuple@ object contains 'FieldToMatch' , @PositionalConstraint@ , @TargetString@ , and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+gbmsrsByteMatchSet :: Lens' GetByteMatchSetResponse (Maybe ByteMatchSet)+gbmsrsByteMatchSet = lens _gbmsrsByteMatchSet (\ s a -> s{_gbmsrsByteMatchSet = a});++-- | -- | The response status code.+gbmsrsResponseStatus :: Lens' GetByteMatchSetResponse Int+gbmsrsResponseStatus = lens _gbmsrsResponseStatus (\ s a -> s{_gbmsrsResponseStatus = a});++instance NFData GetByteMatchSetResponse where
+ gen/Network/AWS/WAFRegional/GetChangeToken.hs view
@@ -0,0 +1,124 @@+{-# 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.WAFRegional.GetChangeToken+-- Copyright : (c) 2013-2017 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)+--+-- When you want to create, update, or delete AWS WAF objects, get a change token and include the change token in the create, update, or delete request. Change tokens ensure that your application doesn't submit conflicting requests to AWS WAF.+--+--+-- Each create, update, or delete request must use a unique change token. If your application submits a @GetChangeToken@ request and then submits a second @GetChangeToken@ request before submitting a create, update, or delete request, the second @GetChangeToken@ request returns the same value as the first @GetChangeToken@ request.+--+-- When you use a change token in a create, update, or delete request, the status of the change token changes to @PENDING@ , which indicates that AWS WAF is propagating the change to all AWS WAF servers. Use @GetChangeTokenStatus@ to determine the status of your change token.+--+module Network.AWS.WAFRegional.GetChangeToken+ (+ -- * Creating a Request+ getChangeToken+ , GetChangeToken++ -- * Destructuring the Response+ , getChangeTokenResponse+ , GetChangeTokenResponse+ -- * Response Lenses+ , gctrsChangeToken+ , gctrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getChangeToken' smart constructor.+data GetChangeToken =+ GetChangeToken'+ deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetChangeToken' with the minimum fields required to make a request.+--+getChangeToken+ :: GetChangeToken+getChangeToken = GetChangeToken'+++instance AWSRequest GetChangeToken where+ type Rs GetChangeToken = GetChangeTokenResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetChangeTokenResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable GetChangeToken where++instance NFData GetChangeToken where++instance ToHeaders GetChangeToken where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetChangeToken" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetChangeToken where+ toJSON = const (Object mempty)++instance ToPath GetChangeToken where+ toPath = const "/"++instance ToQuery GetChangeToken where+ toQuery = const mempty++-- | /See:/ 'getChangeTokenResponse' smart constructor.+data GetChangeTokenResponse = GetChangeTokenResponse'+ { _gctrsChangeToken :: !(Maybe Text)+ , _gctrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetChangeTokenResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gctrsChangeToken' - The @ChangeToken@ that you used in the request. Use this value in a @GetChangeTokenStatus@ request to get the current status of the request.+--+-- * 'gctrsResponseStatus' - -- | The response status code.+getChangeTokenResponse+ :: Int -- ^ 'gctrsResponseStatus'+ -> GetChangeTokenResponse+getChangeTokenResponse pResponseStatus_ =+ GetChangeTokenResponse'+ {_gctrsChangeToken = Nothing, _gctrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used in the request. Use this value in a @GetChangeTokenStatus@ request to get the current status of the request.+gctrsChangeToken :: Lens' GetChangeTokenResponse (Maybe Text)+gctrsChangeToken = lens _gctrsChangeToken (\ s a -> s{_gctrsChangeToken = a});++-- | -- | The response status code.+gctrsResponseStatus :: Lens' GetChangeTokenResponse Int+gctrsResponseStatus = lens _gctrsResponseStatus (\ s a -> s{_gctrsResponseStatus = a});++instance NFData GetChangeTokenResponse where
+ gen/Network/AWS/WAFRegional/GetChangeTokenStatus.hs view
@@ -0,0 +1,143 @@+{-# 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.WAFRegional.GetChangeTokenStatus+-- Copyright : (c) 2013-2017 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)+--+-- Returns the status of a @ChangeToken@ that you got by calling 'GetChangeToken' . @ChangeTokenStatus@ is one of the following values:+--+--+-- * @PROVISIONED@ : You requested the change token by calling @GetChangeToken@ , but you haven't used it yet in a call to create, update, or delete an AWS WAF object.+--+-- * @PENDING@ : AWS WAF is propagating the create, update, or delete request to all AWS WAF servers.+--+-- * @IN_SYNC@ : Propagation is complete.+--+--+--+module Network.AWS.WAFRegional.GetChangeTokenStatus+ (+ -- * Creating a Request+ getChangeTokenStatus+ , GetChangeTokenStatus+ -- * Request Lenses+ , gctsChangeToken++ -- * Destructuring the Response+ , getChangeTokenStatusResponse+ , GetChangeTokenStatusResponse+ -- * Response Lenses+ , gctsrsChangeTokenStatus+ , gctsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getChangeTokenStatus' smart constructor.+newtype GetChangeTokenStatus = GetChangeTokenStatus'+ { _gctsChangeToken :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetChangeTokenStatus' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gctsChangeToken' - The change token for which you want to get the status. This change token was previously returned in the @GetChangeToken@ response.+getChangeTokenStatus+ :: Text -- ^ 'gctsChangeToken'+ -> GetChangeTokenStatus+getChangeTokenStatus pChangeToken_ =+ GetChangeTokenStatus' {_gctsChangeToken = pChangeToken_}+++-- | The change token for which you want to get the status. This change token was previously returned in the @GetChangeToken@ response.+gctsChangeToken :: Lens' GetChangeTokenStatus Text+gctsChangeToken = lens _gctsChangeToken (\ s a -> s{_gctsChangeToken = a});++instance AWSRequest GetChangeTokenStatus where+ type Rs GetChangeTokenStatus =+ GetChangeTokenStatusResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetChangeTokenStatusResponse' <$>+ (x .?> "ChangeTokenStatus") <*> (pure (fromEnum s)))++instance Hashable GetChangeTokenStatus where++instance NFData GetChangeTokenStatus where++instance ToHeaders GetChangeTokenStatus where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetChangeTokenStatus" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetChangeTokenStatus where+ toJSON GetChangeTokenStatus'{..}+ = object+ (catMaybes+ [Just ("ChangeToken" .= _gctsChangeToken)])++instance ToPath GetChangeTokenStatus where+ toPath = const "/"++instance ToQuery GetChangeTokenStatus where+ toQuery = const mempty++-- | /See:/ 'getChangeTokenStatusResponse' smart constructor.+data GetChangeTokenStatusResponse = GetChangeTokenStatusResponse'+ { _gctsrsChangeTokenStatus :: !(Maybe ChangeTokenStatus)+ , _gctsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetChangeTokenStatusResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gctsrsChangeTokenStatus' - The status of the change token.+--+-- * 'gctsrsResponseStatus' - -- | The response status code.+getChangeTokenStatusResponse+ :: Int -- ^ 'gctsrsResponseStatus'+ -> GetChangeTokenStatusResponse+getChangeTokenStatusResponse pResponseStatus_ =+ GetChangeTokenStatusResponse'+ {_gctsrsChangeTokenStatus = Nothing, _gctsrsResponseStatus = pResponseStatus_}+++-- | The status of the change token.+gctsrsChangeTokenStatus :: Lens' GetChangeTokenStatusResponse (Maybe ChangeTokenStatus)+gctsrsChangeTokenStatus = lens _gctsrsChangeTokenStatus (\ s a -> s{_gctsrsChangeTokenStatus = a});++-- | -- | The response status code.+gctsrsResponseStatus :: Lens' GetChangeTokenStatusResponse Int+gctsrsResponseStatus = lens _gctsrsResponseStatus (\ s a -> s{_gctsrsResponseStatus = a});++instance NFData GetChangeTokenStatusResponse where
+ gen/Network/AWS/WAFRegional/GetGeoMatchSet.hs view
@@ -0,0 +1,134 @@+{-# 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.WAFRegional.GetGeoMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'GeoMatchSet' that is specified by @GeoMatchSetId@ .+--+--+module Network.AWS.WAFRegional.GetGeoMatchSet+ (+ -- * Creating a Request+ getGeoMatchSet+ , GetGeoMatchSet+ -- * Request Lenses+ , ggmsGeoMatchSetId++ -- * Destructuring the Response+ , getGeoMatchSetResponse+ , GetGeoMatchSetResponse+ -- * Response Lenses+ , ggmsrsGeoMatchSet+ , ggmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getGeoMatchSet' smart constructor.+newtype GetGeoMatchSet = GetGeoMatchSet'+ { _ggmsGeoMatchSetId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetGeoMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ggmsGeoMatchSetId' - The @GeoMatchSetId@ of the 'GeoMatchSet' that you want to get. @GeoMatchSetId@ is returned by 'CreateGeoMatchSet' and by 'ListGeoMatchSets' .+getGeoMatchSet+ :: Text -- ^ 'ggmsGeoMatchSetId'+ -> GetGeoMatchSet+getGeoMatchSet pGeoMatchSetId_ =+ GetGeoMatchSet' {_ggmsGeoMatchSetId = pGeoMatchSetId_}+++-- | The @GeoMatchSetId@ of the 'GeoMatchSet' that you want to get. @GeoMatchSetId@ is returned by 'CreateGeoMatchSet' and by 'ListGeoMatchSets' .+ggmsGeoMatchSetId :: Lens' GetGeoMatchSet Text+ggmsGeoMatchSetId = lens _ggmsGeoMatchSetId (\ s a -> s{_ggmsGeoMatchSetId = a});++instance AWSRequest GetGeoMatchSet where+ type Rs GetGeoMatchSet = GetGeoMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetGeoMatchSetResponse' <$>+ (x .?> "GeoMatchSet") <*> (pure (fromEnum s)))++instance Hashable GetGeoMatchSet where++instance NFData GetGeoMatchSet where++instance ToHeaders GetGeoMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetGeoMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetGeoMatchSet where+ toJSON GetGeoMatchSet'{..}+ = object+ (catMaybes+ [Just ("GeoMatchSetId" .= _ggmsGeoMatchSetId)])++instance ToPath GetGeoMatchSet where+ toPath = const "/"++instance ToQuery GetGeoMatchSet where+ toQuery = const mempty++-- | /See:/ 'getGeoMatchSetResponse' smart constructor.+data GetGeoMatchSetResponse = GetGeoMatchSetResponse'+ { _ggmsrsGeoMatchSet :: !(Maybe GeoMatchSet)+ , _ggmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetGeoMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ggmsrsGeoMatchSet' - Information about the 'GeoMatchSet' that you specified in the @GetGeoMatchSet@ request. This includes the @Type@ , which for a @GeoMatchContraint@ is always @Country@ , as well as the @Value@ , which is the identifier for a specific country.+--+-- * 'ggmsrsResponseStatus' - -- | The response status code.+getGeoMatchSetResponse+ :: Int -- ^ 'ggmsrsResponseStatus'+ -> GetGeoMatchSetResponse+getGeoMatchSetResponse pResponseStatus_ =+ GetGeoMatchSetResponse'+ {_ggmsrsGeoMatchSet = Nothing, _ggmsrsResponseStatus = pResponseStatus_}+++-- | Information about the 'GeoMatchSet' that you specified in the @GetGeoMatchSet@ request. This includes the @Type@ , which for a @GeoMatchContraint@ is always @Country@ , as well as the @Value@ , which is the identifier for a specific country.+ggmsrsGeoMatchSet :: Lens' GetGeoMatchSetResponse (Maybe GeoMatchSet)+ggmsrsGeoMatchSet = lens _ggmsrsGeoMatchSet (\ s a -> s{_ggmsrsGeoMatchSet = a});++-- | -- | The response status code.+ggmsrsResponseStatus :: Lens' GetGeoMatchSetResponse Int+ggmsrsResponseStatus = lens _ggmsrsResponseStatus (\ s a -> s{_ggmsrsResponseStatus = a});++instance NFData GetGeoMatchSetResponse where
+ gen/Network/AWS/WAFRegional/GetIPSet.hs view
@@ -0,0 +1,131 @@+{-# 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.WAFRegional.GetIPSet+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'IPSet' that is specified by @IPSetId@ .+--+--+module Network.AWS.WAFRegional.GetIPSet+ (+ -- * Creating a Request+ getIPSet+ , GetIPSet+ -- * Request Lenses+ , gisIPSetId++ -- * Destructuring the Response+ , getIPSetResponse+ , GetIPSetResponse+ -- * Response Lenses+ , gisrsIPSet+ , gisrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getIPSet' smart constructor.+newtype GetIPSet = GetIPSet'+ { _gisIPSetId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetIPSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gisIPSetId' - The @IPSetId@ of the 'IPSet' that you want to get. @IPSetId@ is returned by 'CreateIPSet' and by 'ListIPSets' .+getIPSet+ :: Text -- ^ 'gisIPSetId'+ -> GetIPSet+getIPSet pIPSetId_ = GetIPSet' {_gisIPSetId = pIPSetId_}+++-- | The @IPSetId@ of the 'IPSet' that you want to get. @IPSetId@ is returned by 'CreateIPSet' and by 'ListIPSets' .+gisIPSetId :: Lens' GetIPSet Text+gisIPSetId = lens _gisIPSetId (\ s a -> s{_gisIPSetId = a});++instance AWSRequest GetIPSet where+ type Rs GetIPSet = GetIPSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetIPSetResponse' <$>+ (x .?> "IPSet") <*> (pure (fromEnum s)))++instance Hashable GetIPSet where++instance NFData GetIPSet where++instance ToHeaders GetIPSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetIPSet" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetIPSet where+ toJSON GetIPSet'{..}+ = object+ (catMaybes [Just ("IPSetId" .= _gisIPSetId)])++instance ToPath GetIPSet where+ toPath = const "/"++instance ToQuery GetIPSet where+ toQuery = const mempty++-- | /See:/ 'getIPSetResponse' smart constructor.+data GetIPSetResponse = GetIPSetResponse'+ { _gisrsIPSet :: !(Maybe IPSet)+ , _gisrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetIPSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gisrsIPSet' - Information about the 'IPSet' that you specified in the @GetIPSet@ request. For more information, see the following topics: * 'IPSet' : Contains @IPSetDescriptors@ , @IPSetId@ , and @Name@ * @IPSetDescriptors@ : Contains an array of 'IPSetDescriptor' objects. Each @IPSetDescriptor@ object contains @Type@ and @Value@+--+-- * 'gisrsResponseStatus' - -- | The response status code.+getIPSetResponse+ :: Int -- ^ 'gisrsResponseStatus'+ -> GetIPSetResponse+getIPSetResponse pResponseStatus_ =+ GetIPSetResponse'+ {_gisrsIPSet = Nothing, _gisrsResponseStatus = pResponseStatus_}+++-- | Information about the 'IPSet' that you specified in the @GetIPSet@ request. For more information, see the following topics: * 'IPSet' : Contains @IPSetDescriptors@ , @IPSetId@ , and @Name@ * @IPSetDescriptors@ : Contains an array of 'IPSetDescriptor' objects. Each @IPSetDescriptor@ object contains @Type@ and @Value@+gisrsIPSet :: Lens' GetIPSetResponse (Maybe IPSet)+gisrsIPSet = lens _gisrsIPSet (\ s a -> s{_gisrsIPSet = a});++-- | -- | The response status code.+gisrsResponseStatus :: Lens' GetIPSetResponse Int+gisrsResponseStatus = lens _gisrsResponseStatus (\ s a -> s{_gisrsResponseStatus = a});++instance NFData GetIPSetResponse where
+ gen/Network/AWS/WAFRegional/GetRateBasedRule.hs view
@@ -0,0 +1,131 @@+{-# 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.WAFRegional.GetRateBasedRule+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'RateBasedRule' that is specified by the @RuleId@ that you included in the @GetRateBasedRule@ request.+--+--+module Network.AWS.WAFRegional.GetRateBasedRule+ (+ -- * Creating a Request+ getRateBasedRule+ , GetRateBasedRule+ -- * Request Lenses+ , grbrRuleId++ -- * Destructuring the Response+ , getRateBasedRuleResponse+ , GetRateBasedRuleResponse+ -- * Response Lenses+ , grbrrsRule+ , grbrrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getRateBasedRule' smart constructor.+newtype GetRateBasedRule = GetRateBasedRule'+ { _grbrRuleId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRateBasedRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grbrRuleId' - The @RuleId@ of the 'RateBasedRule' that you want to get. @RuleId@ is returned by 'CreateRateBasedRule' and by 'ListRateBasedRules' .+getRateBasedRule+ :: Text -- ^ 'grbrRuleId'+ -> GetRateBasedRule+getRateBasedRule pRuleId_ = GetRateBasedRule' {_grbrRuleId = pRuleId_}+++-- | The @RuleId@ of the 'RateBasedRule' that you want to get. @RuleId@ is returned by 'CreateRateBasedRule' and by 'ListRateBasedRules' .+grbrRuleId :: Lens' GetRateBasedRule Text+grbrRuleId = lens _grbrRuleId (\ s a -> s{_grbrRuleId = a});++instance AWSRequest GetRateBasedRule where+ type Rs GetRateBasedRule = GetRateBasedRuleResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetRateBasedRuleResponse' <$>+ (x .?> "Rule") <*> (pure (fromEnum s)))++instance Hashable GetRateBasedRule where++instance NFData GetRateBasedRule where++instance ToHeaders GetRateBasedRule where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetRateBasedRule" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetRateBasedRule where+ toJSON GetRateBasedRule'{..}+ = object (catMaybes [Just ("RuleId" .= _grbrRuleId)])++instance ToPath GetRateBasedRule where+ toPath = const "/"++instance ToQuery GetRateBasedRule where+ toQuery = const mempty++-- | /See:/ 'getRateBasedRuleResponse' smart constructor.+data GetRateBasedRuleResponse = GetRateBasedRuleResponse'+ { _grbrrsRule :: !(Maybe RateBasedRule)+ , _grbrrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRateBasedRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grbrrsRule' - Information about the 'RateBasedRule' that you specified in the @GetRateBasedRule@ request.+--+-- * 'grbrrsResponseStatus' - -- | The response status code.+getRateBasedRuleResponse+ :: Int -- ^ 'grbrrsResponseStatus'+ -> GetRateBasedRuleResponse+getRateBasedRuleResponse pResponseStatus_ =+ GetRateBasedRuleResponse'+ {_grbrrsRule = Nothing, _grbrrsResponseStatus = pResponseStatus_}+++-- | Information about the 'RateBasedRule' that you specified in the @GetRateBasedRule@ request.+grbrrsRule :: Lens' GetRateBasedRuleResponse (Maybe RateBasedRule)+grbrrsRule = lens _grbrrsRule (\ s a -> s{_grbrrsRule = a});++-- | -- | The response status code.+grbrrsResponseStatus :: Lens' GetRateBasedRuleResponse Int+grbrrsResponseStatus = lens _grbrrsResponseStatus (\ s a -> s{_grbrrsResponseStatus = a});++instance NFData GetRateBasedRuleResponse where
+ gen/Network/AWS/WAFRegional/GetRateBasedRuleManagedKeys.hs view
@@ -0,0 +1,159 @@+{-# 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.WAFRegional.GetRateBasedRuleManagedKeys+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of IP addresses currently being blocked by the 'RateBasedRule' that is specified by the @RuleId@ . The maximum number of managed keys that will be blocked is 10,000. If more than 10,000 addresses exceed the rate limit, the 10,000 addresses with the highest rates will be blocked.+--+--+module Network.AWS.WAFRegional.GetRateBasedRuleManagedKeys+ (+ -- * Creating a Request+ getRateBasedRuleManagedKeys+ , GetRateBasedRuleManagedKeys+ -- * Request Lenses+ , grbrmkNextMarker+ , grbrmkRuleId++ -- * Destructuring the Response+ , getRateBasedRuleManagedKeysResponse+ , GetRateBasedRuleManagedKeysResponse+ -- * Response Lenses+ , grbrmkrsNextMarker+ , grbrmkrsManagedKeys+ , grbrmkrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getRateBasedRuleManagedKeys' smart constructor.+data GetRateBasedRuleManagedKeys = GetRateBasedRuleManagedKeys'+ { _grbrmkNextMarker :: !(Maybe Text)+ , _grbrmkRuleId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRateBasedRuleManagedKeys' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grbrmkNextMarker' - A null value and not currently used. Do not include this in your request.+--+-- * 'grbrmkRuleId' - The @RuleId@ of the 'RateBasedRule' for which you want to get a list of @ManagedKeys@ . @RuleId@ is returned by 'CreateRateBasedRule' and by 'ListRateBasedRules' .+getRateBasedRuleManagedKeys+ :: Text -- ^ 'grbrmkRuleId'+ -> GetRateBasedRuleManagedKeys+getRateBasedRuleManagedKeys pRuleId_ =+ GetRateBasedRuleManagedKeys'+ {_grbrmkNextMarker = Nothing, _grbrmkRuleId = pRuleId_}+++-- | A null value and not currently used. Do not include this in your request.+grbrmkNextMarker :: Lens' GetRateBasedRuleManagedKeys (Maybe Text)+grbrmkNextMarker = lens _grbrmkNextMarker (\ s a -> s{_grbrmkNextMarker = a});++-- | The @RuleId@ of the 'RateBasedRule' for which you want to get a list of @ManagedKeys@ . @RuleId@ is returned by 'CreateRateBasedRule' and by 'ListRateBasedRules' .+grbrmkRuleId :: Lens' GetRateBasedRuleManagedKeys Text+grbrmkRuleId = lens _grbrmkRuleId (\ s a -> s{_grbrmkRuleId = a});++instance AWSRequest GetRateBasedRuleManagedKeys where+ type Rs GetRateBasedRuleManagedKeys =+ GetRateBasedRuleManagedKeysResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetRateBasedRuleManagedKeysResponse' <$>+ (x .?> "NextMarker") <*>+ (x .?> "ManagedKeys" .!@ mempty)+ <*> (pure (fromEnum s)))++instance Hashable GetRateBasedRuleManagedKeys where++instance NFData GetRateBasedRuleManagedKeys where++instance ToHeaders GetRateBasedRuleManagedKeys where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetRateBasedRuleManagedKeys"+ :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetRateBasedRuleManagedKeys where+ toJSON GetRateBasedRuleManagedKeys'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _grbrmkNextMarker,+ Just ("RuleId" .= _grbrmkRuleId)])++instance ToPath GetRateBasedRuleManagedKeys where+ toPath = const "/"++instance ToQuery GetRateBasedRuleManagedKeys where+ toQuery = const mempty++-- | /See:/ 'getRateBasedRuleManagedKeysResponse' smart constructor.+data GetRateBasedRuleManagedKeysResponse = GetRateBasedRuleManagedKeysResponse'+ { _grbrmkrsNextMarker :: !(Maybe Text)+ , _grbrmkrsManagedKeys :: !(Maybe [Text])+ , _grbrmkrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRateBasedRuleManagedKeysResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grbrmkrsNextMarker' - A null value and not currently used.+--+-- * 'grbrmkrsManagedKeys' - An array of IP addresses that currently are blocked by the specified 'RateBasedRule' .+--+-- * 'grbrmkrsResponseStatus' - -- | The response status code.+getRateBasedRuleManagedKeysResponse+ :: Int -- ^ 'grbrmkrsResponseStatus'+ -> GetRateBasedRuleManagedKeysResponse+getRateBasedRuleManagedKeysResponse pResponseStatus_ =+ GetRateBasedRuleManagedKeysResponse'+ { _grbrmkrsNextMarker = Nothing+ , _grbrmkrsManagedKeys = Nothing+ , _grbrmkrsResponseStatus = pResponseStatus_+ }+++-- | A null value and not currently used.+grbrmkrsNextMarker :: Lens' GetRateBasedRuleManagedKeysResponse (Maybe Text)+grbrmkrsNextMarker = lens _grbrmkrsNextMarker (\ s a -> s{_grbrmkrsNextMarker = a});++-- | An array of IP addresses that currently are blocked by the specified 'RateBasedRule' .+grbrmkrsManagedKeys :: Lens' GetRateBasedRuleManagedKeysResponse [Text]+grbrmkrsManagedKeys = lens _grbrmkrsManagedKeys (\ s a -> s{_grbrmkrsManagedKeys = a}) . _Default . _Coerce;++-- | -- | The response status code.+grbrmkrsResponseStatus :: Lens' GetRateBasedRuleManagedKeysResponse Int+grbrmkrsResponseStatus = lens _grbrmkrsResponseStatus (\ s a -> s{_grbrmkrsResponseStatus = a});++instance NFData GetRateBasedRuleManagedKeysResponse+ where
+ gen/Network/AWS/WAFRegional/GetRegexMatchSet.hs view
@@ -0,0 +1,134 @@+{-# 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.WAFRegional.GetRegexMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'RegexMatchSet' specified by @RegexMatchSetId@ .+--+--+module Network.AWS.WAFRegional.GetRegexMatchSet+ (+ -- * Creating a Request+ getRegexMatchSet+ , GetRegexMatchSet+ -- * Request Lenses+ , grmsRegexMatchSetId++ -- * Destructuring the Response+ , getRegexMatchSetResponse+ , GetRegexMatchSetResponse+ -- * Response Lenses+ , grmsrsRegexMatchSet+ , grmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getRegexMatchSet' smart constructor.+newtype GetRegexMatchSet = GetRegexMatchSet'+ { _grmsRegexMatchSetId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRegexMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grmsRegexMatchSetId' - The @RegexMatchSetId@ of the 'RegexMatchSet' that you want to get. @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+getRegexMatchSet+ :: Text -- ^ 'grmsRegexMatchSetId'+ -> GetRegexMatchSet+getRegexMatchSet pRegexMatchSetId_ =+ GetRegexMatchSet' {_grmsRegexMatchSetId = pRegexMatchSetId_}+++-- | The @RegexMatchSetId@ of the 'RegexMatchSet' that you want to get. @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+grmsRegexMatchSetId :: Lens' GetRegexMatchSet Text+grmsRegexMatchSetId = lens _grmsRegexMatchSetId (\ s a -> s{_grmsRegexMatchSetId = a});++instance AWSRequest GetRegexMatchSet where+ type Rs GetRegexMatchSet = GetRegexMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetRegexMatchSetResponse' <$>+ (x .?> "RegexMatchSet") <*> (pure (fromEnum s)))++instance Hashable GetRegexMatchSet where++instance NFData GetRegexMatchSet where++instance ToHeaders GetRegexMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetRegexMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetRegexMatchSet where+ toJSON GetRegexMatchSet'{..}+ = object+ (catMaybes+ [Just ("RegexMatchSetId" .= _grmsRegexMatchSetId)])++instance ToPath GetRegexMatchSet where+ toPath = const "/"++instance ToQuery GetRegexMatchSet where+ toQuery = const mempty++-- | /See:/ 'getRegexMatchSetResponse' smart constructor.+data GetRegexMatchSetResponse = GetRegexMatchSetResponse'+ { _grmsrsRegexMatchSet :: !(Maybe RegexMatchSet)+ , _grmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRegexMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grmsrsRegexMatchSet' - Information about the 'RegexMatchSet' that you specified in the @GetRegexMatchSet@ request. For more information, see 'RegexMatchTuple' .+--+-- * 'grmsrsResponseStatus' - -- | The response status code.+getRegexMatchSetResponse+ :: Int -- ^ 'grmsrsResponseStatus'+ -> GetRegexMatchSetResponse+getRegexMatchSetResponse pResponseStatus_ =+ GetRegexMatchSetResponse'+ {_grmsrsRegexMatchSet = Nothing, _grmsrsResponseStatus = pResponseStatus_}+++-- | Information about the 'RegexMatchSet' that you specified in the @GetRegexMatchSet@ request. For more information, see 'RegexMatchTuple' .+grmsrsRegexMatchSet :: Lens' GetRegexMatchSetResponse (Maybe RegexMatchSet)+grmsrsRegexMatchSet = lens _grmsrsRegexMatchSet (\ s a -> s{_grmsrsRegexMatchSet = a});++-- | -- | The response status code.+grmsrsResponseStatus :: Lens' GetRegexMatchSetResponse Int+grmsrsResponseStatus = lens _grmsrsResponseStatus (\ s a -> s{_grmsrsResponseStatus = a});++instance NFData GetRegexMatchSetResponse where
+ gen/Network/AWS/WAFRegional/GetRegexPatternSet.hs view
@@ -0,0 +1,136 @@+{-# 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.WAFRegional.GetRegexPatternSet+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'RegexPatternSet' specified by @RegexPatternSetId@ .+--+--+module Network.AWS.WAFRegional.GetRegexPatternSet+ (+ -- * Creating a Request+ getRegexPatternSet+ , GetRegexPatternSet+ -- * Request Lenses+ , grpsRegexPatternSetId++ -- * Destructuring the Response+ , getRegexPatternSetResponse+ , GetRegexPatternSetResponse+ -- * Response Lenses+ , grpsrsRegexPatternSet+ , grpsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getRegexPatternSet' smart constructor.+newtype GetRegexPatternSet = GetRegexPatternSet'+ { _grpsRegexPatternSetId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRegexPatternSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grpsRegexPatternSetId' - The @RegexPatternSetId@ of the 'RegexPatternSet' that you want to get. @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+getRegexPatternSet+ :: Text -- ^ 'grpsRegexPatternSetId'+ -> GetRegexPatternSet+getRegexPatternSet pRegexPatternSetId_ =+ GetRegexPatternSet' {_grpsRegexPatternSetId = pRegexPatternSetId_}+++-- | The @RegexPatternSetId@ of the 'RegexPatternSet' that you want to get. @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+grpsRegexPatternSetId :: Lens' GetRegexPatternSet Text+grpsRegexPatternSetId = lens _grpsRegexPatternSetId (\ s a -> s{_grpsRegexPatternSetId = a});++instance AWSRequest GetRegexPatternSet where+ type Rs GetRegexPatternSet =+ GetRegexPatternSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetRegexPatternSetResponse' <$>+ (x .?> "RegexPatternSet") <*> (pure (fromEnum s)))++instance Hashable GetRegexPatternSet where++instance NFData GetRegexPatternSet where++instance ToHeaders GetRegexPatternSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetRegexPatternSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetRegexPatternSet where+ toJSON GetRegexPatternSet'{..}+ = object+ (catMaybes+ [Just+ ("RegexPatternSetId" .= _grpsRegexPatternSetId)])++instance ToPath GetRegexPatternSet where+ toPath = const "/"++instance ToQuery GetRegexPatternSet where+ toQuery = const mempty++-- | /See:/ 'getRegexPatternSetResponse' smart constructor.+data GetRegexPatternSetResponse = GetRegexPatternSetResponse'+ { _grpsrsRegexPatternSet :: !(Maybe RegexPatternSet)+ , _grpsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRegexPatternSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grpsrsRegexPatternSet' - Information about the 'RegexPatternSet' that you specified in the @GetRegexPatternSet@ request, including the identifier of the pattern set and the regular expression patterns you want AWS WAF to search for.+--+-- * 'grpsrsResponseStatus' - -- | The response status code.+getRegexPatternSetResponse+ :: Int -- ^ 'grpsrsResponseStatus'+ -> GetRegexPatternSetResponse+getRegexPatternSetResponse pResponseStatus_ =+ GetRegexPatternSetResponse'+ {_grpsrsRegexPatternSet = Nothing, _grpsrsResponseStatus = pResponseStatus_}+++-- | Information about the 'RegexPatternSet' that you specified in the @GetRegexPatternSet@ request, including the identifier of the pattern set and the regular expression patterns you want AWS WAF to search for.+grpsrsRegexPatternSet :: Lens' GetRegexPatternSetResponse (Maybe RegexPatternSet)+grpsrsRegexPatternSet = lens _grpsrsRegexPatternSet (\ s a -> s{_grpsrsRegexPatternSet = a});++-- | -- | The response status code.+grpsrsResponseStatus :: Lens' GetRegexPatternSetResponse Int+grpsrsResponseStatus = lens _grpsrsResponseStatus (\ s a -> s{_grpsrsResponseStatus = a});++instance NFData GetRegexPatternSetResponse where
+ gen/Network/AWS/WAFRegional/GetRule.hs view
@@ -0,0 +1,129 @@+{-# 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.WAFRegional.GetRule+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'Rule' that is specified by the @RuleId@ that you included in the @GetRule@ request.+--+--+module Network.AWS.WAFRegional.GetRule+ (+ -- * Creating a Request+ getRule+ , GetRule+ -- * Request Lenses+ , grRuleId++ -- * Destructuring the Response+ , getRuleResponse+ , GetRuleResponse+ -- * Response Lenses+ , grrsRule+ , grrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getRule' smart constructor.+newtype GetRule = GetRule'+ { _grRuleId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grRuleId' - The @RuleId@ of the 'Rule' that you want to get. @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+getRule+ :: Text -- ^ 'grRuleId'+ -> GetRule+getRule pRuleId_ = GetRule' {_grRuleId = pRuleId_}+++-- | The @RuleId@ of the 'Rule' that you want to get. @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+grRuleId :: Lens' GetRule Text+grRuleId = lens _grRuleId (\ s a -> s{_grRuleId = a});++instance AWSRequest GetRule where+ type Rs GetRule = GetRuleResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetRuleResponse' <$>+ (x .?> "Rule") <*> (pure (fromEnum s)))++instance Hashable GetRule where++instance NFData GetRule where++instance ToHeaders GetRule where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetRule" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetRule where+ toJSON GetRule'{..}+ = object (catMaybes [Just ("RuleId" .= _grRuleId)])++instance ToPath GetRule where+ toPath = const "/"++instance ToQuery GetRule where+ toQuery = const mempty++-- | /See:/ 'getRuleResponse' smart constructor.+data GetRuleResponse = GetRuleResponse'+ { _grrsRule :: !(Maybe Rule)+ , _grrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'grrsRule' - Information about the 'Rule' that you specified in the @GetRule@ request. For more information, see the following topics: * 'Rule' : Contains @MetricName@ , @Name@ , an array of @Predicate@ objects, and @RuleId@ * 'Predicate' : Each @Predicate@ object contains @DataId@ , @Negated@ , and @Type@+--+-- * 'grrsResponseStatus' - -- | The response status code.+getRuleResponse+ :: Int -- ^ 'grrsResponseStatus'+ -> GetRuleResponse+getRuleResponse pResponseStatus_ =+ GetRuleResponse' {_grrsRule = Nothing, _grrsResponseStatus = pResponseStatus_}+++-- | Information about the 'Rule' that you specified in the @GetRule@ request. For more information, see the following topics: * 'Rule' : Contains @MetricName@ , @Name@ , an array of @Predicate@ objects, and @RuleId@ * 'Predicate' : Each @Predicate@ object contains @DataId@ , @Negated@ , and @Type@+grrsRule :: Lens' GetRuleResponse (Maybe Rule)+grrsRule = lens _grrsRule (\ s a -> s{_grrsRule = a});++-- | -- | The response status code.+grrsResponseStatus :: Lens' GetRuleResponse Int+grrsResponseStatus = lens _grrsResponseStatus (\ s a -> s{_grrsResponseStatus = a});++instance NFData GetRuleResponse where
+ gen/Network/AWS/WAFRegional/GetSampledRequests.hs view
@@ -0,0 +1,195 @@+{-# 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.WAFRegional.GetSampledRequests+-- Copyright : (c) 2013-2017 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)+--+-- Gets detailed information about a specified number of requests--a sample--that AWS WAF randomly selects from among the first 5,000 requests that your AWS resource received during a time range that you choose. You can specify a sample size of up to 500 requests, and you can specify any time range in the previous three hours.+--+--+-- @GetSampledRequests@ returns a time range, which is usually the time range that you specified. However, if your resource (such as a CloudFront distribution) received 5,000 requests before the specified time range elapsed, @GetSampledRequests@ returns an updated time range. This new time range indicates the actual period during which AWS WAF selected the requests in the sample.+--+module Network.AWS.WAFRegional.GetSampledRequests+ (+ -- * Creating a Request+ getSampledRequests+ , GetSampledRequests+ -- * Request Lenses+ , gsrWebACLId+ , gsrRuleId+ , gsrTimeWindow+ , gsrMaxItems++ -- * Destructuring the Response+ , getSampledRequestsResponse+ , GetSampledRequestsResponse+ -- * Response Lenses+ , gsrrsSampledRequests+ , gsrrsPopulationSize+ , gsrrsTimeWindow+ , gsrrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getSampledRequests' smart constructor.+data GetSampledRequests = GetSampledRequests'+ { _gsrWebACLId :: !Text+ , _gsrRuleId :: !Text+ , _gsrTimeWindow :: !TimeWindow+ , _gsrMaxItems :: !Nat+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetSampledRequests' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gsrWebACLId' - The @WebACLId@ of the @WebACL@ for which you want @GetSampledRequests@ to return a sample of requests.+--+-- * 'gsrRuleId' - @RuleId@ is one of two values: * The @RuleId@ of the @Rule@ for which you want @GetSampledRequests@ to return a sample of requests. * @Default_Action@ , which causes @GetSampledRequests@ to return a sample of the requests that didn't match any of the rules in the specified @WebACL@ .+--+-- * 'gsrTimeWindow' - The start date and time and the end date and time of the range for which you want @GetSampledRequests@ to return a sample of requests. Specify the date and time in the following format: @"2016-09-27T14:50Z"@ . You can specify any time range in the previous three hours.+--+-- * 'gsrMaxItems' - The number of requests that you want AWS WAF to return from among the first 5,000 requests that your AWS resource received during the time range. If your resource received fewer requests than the value of @MaxItems@ , @GetSampledRequests@ returns information about all of them.+getSampledRequests+ :: Text -- ^ 'gsrWebACLId'+ -> Text -- ^ 'gsrRuleId'+ -> TimeWindow -- ^ 'gsrTimeWindow'+ -> Natural -- ^ 'gsrMaxItems'+ -> GetSampledRequests+getSampledRequests pWebACLId_ pRuleId_ pTimeWindow_ pMaxItems_ =+ GetSampledRequests'+ { _gsrWebACLId = pWebACLId_+ , _gsrRuleId = pRuleId_+ , _gsrTimeWindow = pTimeWindow_+ , _gsrMaxItems = _Nat # pMaxItems_+ }+++-- | The @WebACLId@ of the @WebACL@ for which you want @GetSampledRequests@ to return a sample of requests.+gsrWebACLId :: Lens' GetSampledRequests Text+gsrWebACLId = lens _gsrWebACLId (\ s a -> s{_gsrWebACLId = a});++-- | @RuleId@ is one of two values: * The @RuleId@ of the @Rule@ for which you want @GetSampledRequests@ to return a sample of requests. * @Default_Action@ , which causes @GetSampledRequests@ to return a sample of the requests that didn't match any of the rules in the specified @WebACL@ .+gsrRuleId :: Lens' GetSampledRequests Text+gsrRuleId = lens _gsrRuleId (\ s a -> s{_gsrRuleId = a});++-- | The start date and time and the end date and time of the range for which you want @GetSampledRequests@ to return a sample of requests. Specify the date and time in the following format: @"2016-09-27T14:50Z"@ . You can specify any time range in the previous three hours.+gsrTimeWindow :: Lens' GetSampledRequests TimeWindow+gsrTimeWindow = lens _gsrTimeWindow (\ s a -> s{_gsrTimeWindow = a});++-- | The number of requests that you want AWS WAF to return from among the first 5,000 requests that your AWS resource received during the time range. If your resource received fewer requests than the value of @MaxItems@ , @GetSampledRequests@ returns information about all of them.+gsrMaxItems :: Lens' GetSampledRequests Natural+gsrMaxItems = lens _gsrMaxItems (\ s a -> s{_gsrMaxItems = a}) . _Nat;++instance AWSRequest GetSampledRequests where+ type Rs GetSampledRequests =+ GetSampledRequestsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetSampledRequestsResponse' <$>+ (x .?> "SampledRequests" .!@ mempty) <*>+ (x .?> "PopulationSize")+ <*> (x .?> "TimeWindow")+ <*> (pure (fromEnum s)))++instance Hashable GetSampledRequests where++instance NFData GetSampledRequests where++instance ToHeaders GetSampledRequests where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.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++-- | /See:/ 'getSampledRequestsResponse' smart constructor.+data GetSampledRequestsResponse = GetSampledRequestsResponse'+ { _gsrrsSampledRequests :: !(Maybe [SampledHTTPRequest])+ , _gsrrsPopulationSize :: !(Maybe Integer)+ , _gsrrsTimeWindow :: !(Maybe TimeWindow)+ , _gsrrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetSampledRequestsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gsrrsSampledRequests' - A complex type that contains detailed information about each of the requests in the sample.+--+-- * 'gsrrsPopulationSize' - The total number of requests from which @GetSampledRequests@ got a sample of @MaxItems@ requests. If @PopulationSize@ is less than @MaxItems@ , the sample includes every request that your AWS resource received during the specified time range.+--+-- * 'gsrrsTimeWindow' - Usually, @TimeWindow@ is the time range that you specified in the @GetSampledRequests@ request. However, if your AWS resource received more than 5,000 requests during the time range that you specified in the request, @GetSampledRequests@ returns the time range for the first 5,000 requests.+--+-- * 'gsrrsResponseStatus' - -- | The response status code.+getSampledRequestsResponse+ :: Int -- ^ 'gsrrsResponseStatus'+ -> GetSampledRequestsResponse+getSampledRequestsResponse pResponseStatus_ =+ GetSampledRequestsResponse'+ { _gsrrsSampledRequests = Nothing+ , _gsrrsPopulationSize = Nothing+ , _gsrrsTimeWindow = Nothing+ , _gsrrsResponseStatus = pResponseStatus_+ }+++-- | A complex type that contains detailed information about each of the requests in the sample.+gsrrsSampledRequests :: Lens' GetSampledRequestsResponse [SampledHTTPRequest]+gsrrsSampledRequests = lens _gsrrsSampledRequests (\ s a -> s{_gsrrsSampledRequests = a}) . _Default . _Coerce;++-- | The total number of requests from which @GetSampledRequests@ got a sample of @MaxItems@ requests. If @PopulationSize@ is less than @MaxItems@ , the sample includes every request that your AWS resource received during the specified time range.+gsrrsPopulationSize :: Lens' GetSampledRequestsResponse (Maybe Integer)+gsrrsPopulationSize = lens _gsrrsPopulationSize (\ s a -> s{_gsrrsPopulationSize = a});++-- | Usually, @TimeWindow@ is the time range that you specified in the @GetSampledRequests@ request. However, if your AWS resource received more than 5,000 requests during the time range that you specified in the request, @GetSampledRequests@ returns the time range for the first 5,000 requests.+gsrrsTimeWindow :: Lens' GetSampledRequestsResponse (Maybe TimeWindow)+gsrrsTimeWindow = lens _gsrrsTimeWindow (\ s a -> s{_gsrrsTimeWindow = a});++-- | -- | The response status code.+gsrrsResponseStatus :: Lens' GetSampledRequestsResponse Int+gsrrsResponseStatus = lens _gsrrsResponseStatus (\ s a -> s{_gsrrsResponseStatus = a});++instance NFData GetSampledRequestsResponse where
+ gen/Network/AWS/WAFRegional/GetSizeConstraintSet.hs view
@@ -0,0 +1,136 @@+{-# 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.WAFRegional.GetSizeConstraintSet+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'SizeConstraintSet' specified by @SizeConstraintSetId@ .+--+--+module Network.AWS.WAFRegional.GetSizeConstraintSet+ (+ -- * Creating a Request+ getSizeConstraintSet+ , GetSizeConstraintSet+ -- * Request Lenses+ , gscsSizeConstraintSetId++ -- * Destructuring the Response+ , getSizeConstraintSetResponse+ , GetSizeConstraintSetResponse+ -- * Response Lenses+ , gscsrsSizeConstraintSet+ , gscsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getSizeConstraintSet' smart constructor.+newtype GetSizeConstraintSet = GetSizeConstraintSet'+ { _gscsSizeConstraintSetId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetSizeConstraintSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gscsSizeConstraintSetId' - The @SizeConstraintSetId@ of the 'SizeConstraintSet' that you want to get. @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+getSizeConstraintSet+ :: Text -- ^ 'gscsSizeConstraintSetId'+ -> GetSizeConstraintSet+getSizeConstraintSet pSizeConstraintSetId_ =+ GetSizeConstraintSet' {_gscsSizeConstraintSetId = pSizeConstraintSetId_}+++-- | The @SizeConstraintSetId@ of the 'SizeConstraintSet' that you want to get. @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+gscsSizeConstraintSetId :: Lens' GetSizeConstraintSet Text+gscsSizeConstraintSetId = lens _gscsSizeConstraintSetId (\ s a -> s{_gscsSizeConstraintSetId = a});++instance AWSRequest GetSizeConstraintSet where+ type Rs GetSizeConstraintSet =+ GetSizeConstraintSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetSizeConstraintSetResponse' <$>+ (x .?> "SizeConstraintSet") <*> (pure (fromEnum s)))++instance Hashable GetSizeConstraintSet where++instance NFData GetSizeConstraintSet where++instance ToHeaders GetSizeConstraintSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetSizeConstraintSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetSizeConstraintSet where+ toJSON GetSizeConstraintSet'{..}+ = object+ (catMaybes+ [Just+ ("SizeConstraintSetId" .= _gscsSizeConstraintSetId)])++instance ToPath GetSizeConstraintSet where+ toPath = const "/"++instance ToQuery GetSizeConstraintSet where+ toQuery = const mempty++-- | /See:/ 'getSizeConstraintSetResponse' smart constructor.+data GetSizeConstraintSetResponse = GetSizeConstraintSetResponse'+ { _gscsrsSizeConstraintSet :: !(Maybe SizeConstraintSet)+ , _gscsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetSizeConstraintSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gscsrsSizeConstraintSet' - Information about the 'SizeConstraintSet' that you specified in the @GetSizeConstraintSet@ request. For more information, see the following topics: * 'SizeConstraintSet' : Contains @SizeConstraintSetId@ , @SizeConstraints@ , and @Name@ * @SizeConstraints@ : Contains an array of 'SizeConstraint' objects. Each @SizeConstraint@ object contains 'FieldToMatch' , @TextTransformation@ , @ComparisonOperator@ , and @Size@ * 'FieldToMatch' : Contains @Data@ and @Type@+--+-- * 'gscsrsResponseStatus' - -- | The response status code.+getSizeConstraintSetResponse+ :: Int -- ^ 'gscsrsResponseStatus'+ -> GetSizeConstraintSetResponse+getSizeConstraintSetResponse pResponseStatus_ =+ GetSizeConstraintSetResponse'+ {_gscsrsSizeConstraintSet = Nothing, _gscsrsResponseStatus = pResponseStatus_}+++-- | Information about the 'SizeConstraintSet' that you specified in the @GetSizeConstraintSet@ request. For more information, see the following topics: * 'SizeConstraintSet' : Contains @SizeConstraintSetId@ , @SizeConstraints@ , and @Name@ * @SizeConstraints@ : Contains an array of 'SizeConstraint' objects. Each @SizeConstraint@ object contains 'FieldToMatch' , @TextTransformation@ , @ComparisonOperator@ , and @Size@ * 'FieldToMatch' : Contains @Data@ and @Type@+gscsrsSizeConstraintSet :: Lens' GetSizeConstraintSetResponse (Maybe SizeConstraintSet)+gscsrsSizeConstraintSet = lens _gscsrsSizeConstraintSet (\ s a -> s{_gscsrsSizeConstraintSet = a});++-- | -- | The response status code.+gscsrsResponseStatus :: Lens' GetSizeConstraintSetResponse Int+gscsrsResponseStatus = lens _gscsrsResponseStatus (\ s a -> s{_gscsrsResponseStatus = a});++instance NFData GetSizeConstraintSetResponse where
+ gen/Network/AWS/WAFRegional/GetSqlInjectionMatchSet.hs view
@@ -0,0 +1,149 @@+{-# 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.WAFRegional.GetSqlInjectionMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'SqlInjectionMatchSet' that is specified by @SqlInjectionMatchSetId@ .+--+--+module Network.AWS.WAFRegional.GetSqlInjectionMatchSet+ (+ -- * Creating a Request+ getSqlInjectionMatchSet+ , GetSqlInjectionMatchSet+ -- * Request Lenses+ , gsimsSqlInjectionMatchSetId++ -- * Destructuring the Response+ , getSqlInjectionMatchSetResponse+ , GetSqlInjectionMatchSetResponse+ -- * Response Lenses+ , gsimsrsSqlInjectionMatchSet+ , gsimsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to get a 'SqlInjectionMatchSet' .+--+--+--+-- /See:/ 'getSqlInjectionMatchSet' smart constructor.+newtype GetSqlInjectionMatchSet = GetSqlInjectionMatchSet'+ { _gsimsSqlInjectionMatchSetId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetSqlInjectionMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gsimsSqlInjectionMatchSetId' - The @SqlInjectionMatchSetId@ of the 'SqlInjectionMatchSet' that you want to get. @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+getSqlInjectionMatchSet+ :: Text -- ^ 'gsimsSqlInjectionMatchSetId'+ -> GetSqlInjectionMatchSet+getSqlInjectionMatchSet pSqlInjectionMatchSetId_ =+ GetSqlInjectionMatchSet'+ {_gsimsSqlInjectionMatchSetId = pSqlInjectionMatchSetId_}+++-- | The @SqlInjectionMatchSetId@ of the 'SqlInjectionMatchSet' that you want to get. @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+gsimsSqlInjectionMatchSetId :: Lens' GetSqlInjectionMatchSet Text+gsimsSqlInjectionMatchSetId = lens _gsimsSqlInjectionMatchSetId (\ s a -> s{_gsimsSqlInjectionMatchSetId = a});++instance AWSRequest GetSqlInjectionMatchSet where+ type Rs GetSqlInjectionMatchSet =+ GetSqlInjectionMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetSqlInjectionMatchSetResponse' <$>+ (x .?> "SqlInjectionMatchSet") <*>+ (pure (fromEnum s)))++instance Hashable GetSqlInjectionMatchSet where++instance NFData GetSqlInjectionMatchSet where++instance ToHeaders GetSqlInjectionMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetSqlInjectionMatchSet"+ :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetSqlInjectionMatchSet where+ toJSON GetSqlInjectionMatchSet'{..}+ = object+ (catMaybes+ [Just+ ("SqlInjectionMatchSetId" .=+ _gsimsSqlInjectionMatchSetId)])++instance ToPath GetSqlInjectionMatchSet where+ toPath = const "/"++instance ToQuery GetSqlInjectionMatchSet where+ toQuery = const mempty++-- | The response to a 'GetSqlInjectionMatchSet' request.+--+--+--+-- /See:/ 'getSqlInjectionMatchSetResponse' smart constructor.+data GetSqlInjectionMatchSetResponse = GetSqlInjectionMatchSetResponse'+ { _gsimsrsSqlInjectionMatchSet :: !(Maybe SqlInjectionMatchSet)+ , _gsimsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetSqlInjectionMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gsimsrsSqlInjectionMatchSet' - Information about the 'SqlInjectionMatchSet' that you specified in the @GetSqlInjectionMatchSet@ request. For more information, see the following topics: * 'SqlInjectionMatchSet' : Contains @Name@ , @SqlInjectionMatchSetId@ , and an array of @SqlInjectionMatchTuple@ objects * 'SqlInjectionMatchTuple' : Each @SqlInjectionMatchTuple@ object contains @FieldToMatch@ and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+--+-- * 'gsimsrsResponseStatus' - -- | The response status code.+getSqlInjectionMatchSetResponse+ :: Int -- ^ 'gsimsrsResponseStatus'+ -> GetSqlInjectionMatchSetResponse+getSqlInjectionMatchSetResponse pResponseStatus_ =+ GetSqlInjectionMatchSetResponse'+ { _gsimsrsSqlInjectionMatchSet = Nothing+ , _gsimsrsResponseStatus = pResponseStatus_+ }+++-- | Information about the 'SqlInjectionMatchSet' that you specified in the @GetSqlInjectionMatchSet@ request. For more information, see the following topics: * 'SqlInjectionMatchSet' : Contains @Name@ , @SqlInjectionMatchSetId@ , and an array of @SqlInjectionMatchTuple@ objects * 'SqlInjectionMatchTuple' : Each @SqlInjectionMatchTuple@ object contains @FieldToMatch@ and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+gsimsrsSqlInjectionMatchSet :: Lens' GetSqlInjectionMatchSetResponse (Maybe SqlInjectionMatchSet)+gsimsrsSqlInjectionMatchSet = lens _gsimsrsSqlInjectionMatchSet (\ s a -> s{_gsimsrsSqlInjectionMatchSet = a});++-- | -- | The response status code.+gsimsrsResponseStatus :: Lens' GetSqlInjectionMatchSetResponse Int+gsimsrsResponseStatus = lens _gsimsrsResponseStatus (\ s a -> s{_gsimsrsResponseStatus = a});++instance NFData GetSqlInjectionMatchSetResponse where
+ gen/Network/AWS/WAFRegional/GetWebACL.hs view
@@ -0,0 +1,131 @@+{-# 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.WAFRegional.GetWebACL+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'WebACL' that is specified by @WebACLId@ .+--+--+module Network.AWS.WAFRegional.GetWebACL+ (+ -- * Creating a Request+ getWebACL+ , GetWebACL+ -- * Request Lenses+ , gwaWebACLId++ -- * Destructuring the Response+ , getWebACLResponse+ , GetWebACLResponse+ -- * Response Lenses+ , gwarsWebACL+ , gwarsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getWebACL' smart constructor.+newtype GetWebACL = GetWebACL'+ { _gwaWebACLId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetWebACL' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gwaWebACLId' - The @WebACLId@ of the 'WebACL' that you want to get. @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+getWebACL+ :: Text -- ^ 'gwaWebACLId'+ -> GetWebACL+getWebACL pWebACLId_ = GetWebACL' {_gwaWebACLId = pWebACLId_}+++-- | The @WebACLId@ of the 'WebACL' that you want to get. @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+gwaWebACLId :: Lens' GetWebACL Text+gwaWebACLId = lens _gwaWebACLId (\ s a -> s{_gwaWebACLId = a});++instance AWSRequest GetWebACL where+ type Rs GetWebACL = GetWebACLResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetWebACLResponse' <$>+ (x .?> "WebACL") <*> (pure (fromEnum s)))++instance Hashable GetWebACL where++instance NFData GetWebACL where++instance ToHeaders GetWebACL where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetWebACL" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetWebACL where+ toJSON GetWebACL'{..}+ = object+ (catMaybes [Just ("WebACLId" .= _gwaWebACLId)])++instance ToPath GetWebACL where+ toPath = const "/"++instance ToQuery GetWebACL where+ toQuery = const mempty++-- | /See:/ 'getWebACLResponse' smart constructor.+data GetWebACLResponse = GetWebACLResponse'+ { _gwarsWebACL :: !(Maybe WebACL)+ , _gwarsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetWebACLResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gwarsWebACL' - Information about the 'WebACL' that you specified in the @GetWebACL@ request. For more information, see the following topics: * 'WebACL' : Contains @DefaultAction@ , @MetricName@ , @Name@ , an array of @Rule@ objects, and @WebACLId@ * @DefaultAction@ (Data type is 'WafAction' ): Contains @Type@ * @Rules@ : Contains an array of @ActivatedRule@ objects, which contain @Action@ , @Priority@ , and @RuleId@ * @Action@ : Contains @Type@+--+-- * 'gwarsResponseStatus' - -- | The response status code.+getWebACLResponse+ :: Int -- ^ 'gwarsResponseStatus'+ -> GetWebACLResponse+getWebACLResponse pResponseStatus_ =+ GetWebACLResponse'+ {_gwarsWebACL = Nothing, _gwarsResponseStatus = pResponseStatus_}+++-- | Information about the 'WebACL' that you specified in the @GetWebACL@ request. For more information, see the following topics: * 'WebACL' : Contains @DefaultAction@ , @MetricName@ , @Name@ , an array of @Rule@ objects, and @WebACLId@ * @DefaultAction@ (Data type is 'WafAction' ): Contains @Type@ * @Rules@ : Contains an array of @ActivatedRule@ objects, which contain @Action@ , @Priority@ , and @RuleId@ * @Action@ : Contains @Type@+gwarsWebACL :: Lens' GetWebACLResponse (Maybe WebACL)+gwarsWebACL = lens _gwarsWebACL (\ s a -> s{_gwarsWebACL = a});++-- | -- | The response status code.+gwarsResponseStatus :: Lens' GetWebACLResponse Int+gwarsResponseStatus = lens _gwarsResponseStatus (\ s a -> s{_gwarsResponseStatus = a});++instance NFData GetWebACLResponse where
+ gen/Network/AWS/WAFRegional/GetWebACLForResource.hs view
@@ -0,0 +1,135 @@+{-# 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.WAFRegional.GetWebACLForResource+-- Copyright : (c) 2013-2017 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)+--+-- Returns the web ACL for the specified resource.+--+--+module Network.AWS.WAFRegional.GetWebACLForResource+ (+ -- * Creating a Request+ getWebACLForResource+ , GetWebACLForResource+ -- * Request Lenses+ , gwafrResourceARN++ -- * Destructuring the Response+ , getWebACLForResourceResponse+ , GetWebACLForResourceResponse+ -- * Response Lenses+ , gwafrrsWebACLSummary+ , gwafrrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'getWebACLForResource' smart constructor.+newtype GetWebACLForResource = GetWebACLForResource'+ { _gwafrResourceARN :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetWebACLForResource' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gwafrResourceARN' - The ARN (Amazon Resource Name) of the resource for which to get the web ACL.+getWebACLForResource+ :: Text -- ^ 'gwafrResourceARN'+ -> GetWebACLForResource+getWebACLForResource pResourceARN_ =+ GetWebACLForResource' {_gwafrResourceARN = pResourceARN_}+++-- | The ARN (Amazon Resource Name) of the resource for which to get the web ACL.+gwafrResourceARN :: Lens' GetWebACLForResource Text+gwafrResourceARN = lens _gwafrResourceARN (\ s a -> s{_gwafrResourceARN = a});++instance AWSRequest GetWebACLForResource where+ type Rs GetWebACLForResource =+ GetWebACLForResourceResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetWebACLForResourceResponse' <$>+ (x .?> "WebACLSummary") <*> (pure (fromEnum s)))++instance Hashable GetWebACLForResource where++instance NFData GetWebACLForResource where++instance ToHeaders GetWebACLForResource where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetWebACLForResource" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetWebACLForResource where+ toJSON GetWebACLForResource'{..}+ = object+ (catMaybes+ [Just ("ResourceArn" .= _gwafrResourceARN)])++instance ToPath GetWebACLForResource where+ toPath = const "/"++instance ToQuery GetWebACLForResource where+ toQuery = const mempty++-- | /See:/ 'getWebACLForResourceResponse' smart constructor.+data GetWebACLForResourceResponse = GetWebACLForResourceResponse'+ { _gwafrrsWebACLSummary :: !(Maybe WebACLSummary)+ , _gwafrrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetWebACLForResourceResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gwafrrsWebACLSummary' - Information about the web ACL that you specified in the @GetWebACLForResource@ request. If there is no associated resource, a null WebACLSummary is returned.+--+-- * 'gwafrrsResponseStatus' - -- | The response status code.+getWebACLForResourceResponse+ :: Int -- ^ 'gwafrrsResponseStatus'+ -> GetWebACLForResourceResponse+getWebACLForResourceResponse pResponseStatus_ =+ GetWebACLForResourceResponse'+ {_gwafrrsWebACLSummary = Nothing, _gwafrrsResponseStatus = pResponseStatus_}+++-- | Information about the web ACL that you specified in the @GetWebACLForResource@ request. If there is no associated resource, a null WebACLSummary is returned.+gwafrrsWebACLSummary :: Lens' GetWebACLForResourceResponse (Maybe WebACLSummary)+gwafrrsWebACLSummary = lens _gwafrrsWebACLSummary (\ s a -> s{_gwafrrsWebACLSummary = a});++-- | -- | The response status code.+gwafrrsResponseStatus :: Lens' GetWebACLForResourceResponse Int+gwafrrsResponseStatus = lens _gwafrrsResponseStatus (\ s a -> s{_gwafrrsResponseStatus = a});++instance NFData GetWebACLForResourceResponse where
+ gen/Network/AWS/WAFRegional/GetXSSMatchSet.hs view
@@ -0,0 +1,142 @@+{-# 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.WAFRegional.GetXSSMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Returns the 'XssMatchSet' that is specified by @XssMatchSetId@ .+--+--+module Network.AWS.WAFRegional.GetXSSMatchSet+ (+ -- * Creating a Request+ getXSSMatchSet+ , GetXSSMatchSet+ -- * Request Lenses+ , gxmsXSSMatchSetId++ -- * Destructuring the Response+ , getXSSMatchSetResponse+ , GetXSSMatchSetResponse+ -- * Response Lenses+ , gxmsrsXSSMatchSet+ , gxmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to get an 'XssMatchSet' .+--+--+--+-- /See:/ 'getXSSMatchSet' smart constructor.+newtype GetXSSMatchSet = GetXSSMatchSet'+ { _gxmsXSSMatchSetId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetXSSMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gxmsXSSMatchSetId' - The @XssMatchSetId@ of the 'XssMatchSet' that you want to get. @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+getXSSMatchSet+ :: Text -- ^ 'gxmsXSSMatchSetId'+ -> GetXSSMatchSet+getXSSMatchSet pXSSMatchSetId_ =+ GetXSSMatchSet' {_gxmsXSSMatchSetId = pXSSMatchSetId_}+++-- | The @XssMatchSetId@ of the 'XssMatchSet' that you want to get. @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+gxmsXSSMatchSetId :: Lens' GetXSSMatchSet Text+gxmsXSSMatchSetId = lens _gxmsXSSMatchSetId (\ s a -> s{_gxmsXSSMatchSetId = a});++instance AWSRequest GetXSSMatchSet where+ type Rs GetXSSMatchSet = GetXSSMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ GetXSSMatchSetResponse' <$>+ (x .?> "XssMatchSet") <*> (pure (fromEnum s)))++instance Hashable GetXSSMatchSet where++instance NFData GetXSSMatchSet where++instance ToHeaders GetXSSMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.GetXssMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON GetXSSMatchSet where+ toJSON GetXSSMatchSet'{..}+ = object+ (catMaybes+ [Just ("XssMatchSetId" .= _gxmsXSSMatchSetId)])++instance ToPath GetXSSMatchSet where+ toPath = const "/"++instance ToQuery GetXSSMatchSet where+ toQuery = const mempty++-- | The response to a 'GetXssMatchSet' request.+--+--+--+-- /See:/ 'getXSSMatchSetResponse' smart constructor.+data GetXSSMatchSetResponse = GetXSSMatchSetResponse'+ { _gxmsrsXSSMatchSet :: !(Maybe XSSMatchSet)+ , _gxmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GetXSSMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gxmsrsXSSMatchSet' - Information about the 'XssMatchSet' that you specified in the @GetXssMatchSet@ request. For more information, see the following topics: * 'XssMatchSet' : Contains @Name@ , @XssMatchSetId@ , and an array of @XssMatchTuple@ objects * 'XssMatchTuple' : Each @XssMatchTuple@ object contains @FieldToMatch@ and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+--+-- * 'gxmsrsResponseStatus' - -- | The response status code.+getXSSMatchSetResponse+ :: Int -- ^ 'gxmsrsResponseStatus'+ -> GetXSSMatchSetResponse+getXSSMatchSetResponse pResponseStatus_ =+ GetXSSMatchSetResponse'+ {_gxmsrsXSSMatchSet = Nothing, _gxmsrsResponseStatus = pResponseStatus_}+++-- | Information about the 'XssMatchSet' that you specified in the @GetXssMatchSet@ request. For more information, see the following topics: * 'XssMatchSet' : Contains @Name@ , @XssMatchSetId@ , and an array of @XssMatchTuple@ objects * 'XssMatchTuple' : Each @XssMatchTuple@ object contains @FieldToMatch@ and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+gxmsrsXSSMatchSet :: Lens' GetXSSMatchSetResponse (Maybe XSSMatchSet)+gxmsrsXSSMatchSet = lens _gxmsrsXSSMatchSet (\ s a -> s{_gxmsrsXSSMatchSet = a});++-- | -- | The response status code.+gxmsrsResponseStatus :: Lens' GetXSSMatchSetResponse Int+gxmsrsResponseStatus = lens _gxmsrsResponseStatus (\ s a -> s{_gxmsrsResponseStatus = a});++instance NFData GetXSSMatchSetResponse where
+ gen/Network/AWS/WAFRegional/ListByteMatchSets.hs view
@@ -0,0 +1,155 @@+{-# 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.WAFRegional.ListByteMatchSets+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'ByteMatchSetSummary' objects.+--+--+module Network.AWS.WAFRegional.ListByteMatchSets+ (+ -- * Creating a Request+ listByteMatchSets+ , ListByteMatchSets+ -- * Request Lenses+ , lbmsNextMarker+ , lbmsLimit++ -- * Destructuring the Response+ , listByteMatchSetsResponse+ , ListByteMatchSetsResponse+ -- * Response Lenses+ , lbmsrsByteMatchSets+ , lbmsrsNextMarker+ , lbmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listByteMatchSets' smart constructor.+data ListByteMatchSets = ListByteMatchSets'+ { _lbmsNextMarker :: !(Maybe Text)+ , _lbmsLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListByteMatchSets' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lbmsNextMarker' - If you specify a value for @Limit@ and you have more @ByteMatchSets@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @ByteMatchSets@ . For the second and subsequent @ListByteMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @ByteMatchSets@ .+--+-- * 'lbmsLimit' - Specifies the number of @ByteMatchSet@ objects that you want AWS WAF to return for this request. If you have more @ByteMatchSets@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @ByteMatchSet@ objects.+listByteMatchSets+ :: ListByteMatchSets+listByteMatchSets =+ ListByteMatchSets' {_lbmsNextMarker = Nothing, _lbmsLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more @ByteMatchSets@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @ByteMatchSets@ . For the second and subsequent @ListByteMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @ByteMatchSets@ .+lbmsNextMarker :: Lens' ListByteMatchSets (Maybe Text)+lbmsNextMarker = lens _lbmsNextMarker (\ s a -> s{_lbmsNextMarker = a});++-- | Specifies the number of @ByteMatchSet@ objects that you want AWS WAF to return for this request. If you have more @ByteMatchSets@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @ByteMatchSet@ objects.+lbmsLimit :: Lens' ListByteMatchSets (Maybe Natural)+lbmsLimit = lens _lbmsLimit (\ s a -> s{_lbmsLimit = a}) . mapping _Nat;++instance AWSRequest ListByteMatchSets where+ type Rs ListByteMatchSets = ListByteMatchSetsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListByteMatchSetsResponse' <$>+ (x .?> "ByteMatchSets" .!@ mempty) <*>+ (x .?> "NextMarker")+ <*> (pure (fromEnum s)))++instance Hashable ListByteMatchSets where++instance NFData ListByteMatchSets where++instance ToHeaders ListByteMatchSets where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListByteMatchSets" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListByteMatchSets where+ toJSON ListByteMatchSets'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lbmsNextMarker,+ ("Limit" .=) <$> _lbmsLimit])++instance ToPath ListByteMatchSets where+ toPath = const "/"++instance ToQuery ListByteMatchSets where+ toQuery = const mempty++-- | /See:/ 'listByteMatchSetsResponse' smart constructor.+data ListByteMatchSetsResponse = ListByteMatchSetsResponse'+ { _lbmsrsByteMatchSets :: !(Maybe [ByteMatchSetSummary])+ , _lbmsrsNextMarker :: !(Maybe Text)+ , _lbmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListByteMatchSetsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lbmsrsByteMatchSets' - An array of 'ByteMatchSetSummary' objects.+--+-- * 'lbmsrsNextMarker' - If you have more @ByteMatchSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @ByteMatchSet@ objects, submit another @ListByteMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lbmsrsResponseStatus' - -- | The response status code.+listByteMatchSetsResponse+ :: Int -- ^ 'lbmsrsResponseStatus'+ -> ListByteMatchSetsResponse+listByteMatchSetsResponse pResponseStatus_ =+ ListByteMatchSetsResponse'+ { _lbmsrsByteMatchSets = Nothing+ , _lbmsrsNextMarker = Nothing+ , _lbmsrsResponseStatus = pResponseStatus_+ }+++-- | An array of 'ByteMatchSetSummary' objects.+lbmsrsByteMatchSets :: Lens' ListByteMatchSetsResponse [ByteMatchSetSummary]+lbmsrsByteMatchSets = lens _lbmsrsByteMatchSets (\ s a -> s{_lbmsrsByteMatchSets = a}) . _Default . _Coerce;++-- | If you have more @ByteMatchSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @ByteMatchSet@ objects, submit another @ListByteMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lbmsrsNextMarker :: Lens' ListByteMatchSetsResponse (Maybe Text)+lbmsrsNextMarker = lens _lbmsrsNextMarker (\ s a -> s{_lbmsrsNextMarker = a});++-- | -- | The response status code.+lbmsrsResponseStatus :: Lens' ListByteMatchSetsResponse Int+lbmsrsResponseStatus = lens _lbmsrsResponseStatus (\ s a -> s{_lbmsrsResponseStatus = a});++instance NFData ListByteMatchSetsResponse where
+ gen/Network/AWS/WAFRegional/ListGeoMatchSets.hs view
@@ -0,0 +1,155 @@+{-# 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.WAFRegional.ListGeoMatchSets+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'GeoMatchSetSummary' objects in the response.+--+--+module Network.AWS.WAFRegional.ListGeoMatchSets+ (+ -- * Creating a Request+ listGeoMatchSets+ , ListGeoMatchSets+ -- * Request Lenses+ , lgmsNextMarker+ , lgmsLimit++ -- * Destructuring the Response+ , listGeoMatchSetsResponse+ , ListGeoMatchSetsResponse+ -- * Response Lenses+ , lgmsrsGeoMatchSets+ , lgmsrsNextMarker+ , lgmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listGeoMatchSets' smart constructor.+data ListGeoMatchSets = ListGeoMatchSets'+ { _lgmsNextMarker :: !(Maybe Text)+ , _lgmsLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListGeoMatchSets' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lgmsNextMarker' - If you specify a value for @Limit@ and you have more @GeoMatchSet@ s than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @GeoMatchSet@ objects. For the second and subsequent @ListGeoMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @GeoMatchSet@ objects.+--+-- * 'lgmsLimit' - Specifies the number of @GeoMatchSet@ objects that you want AWS WAF to return for this request. If you have more @GeoMatchSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @GeoMatchSet@ objects.+listGeoMatchSets+ :: ListGeoMatchSets+listGeoMatchSets =+ ListGeoMatchSets' {_lgmsNextMarker = Nothing, _lgmsLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more @GeoMatchSet@ s than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @GeoMatchSet@ objects. For the second and subsequent @ListGeoMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @GeoMatchSet@ objects.+lgmsNextMarker :: Lens' ListGeoMatchSets (Maybe Text)+lgmsNextMarker = lens _lgmsNextMarker (\ s a -> s{_lgmsNextMarker = a});++-- | Specifies the number of @GeoMatchSet@ objects that you want AWS WAF to return for this request. If you have more @GeoMatchSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @GeoMatchSet@ objects.+lgmsLimit :: Lens' ListGeoMatchSets (Maybe Natural)+lgmsLimit = lens _lgmsLimit (\ s a -> s{_lgmsLimit = a}) . mapping _Nat;++instance AWSRequest ListGeoMatchSets where+ type Rs ListGeoMatchSets = ListGeoMatchSetsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListGeoMatchSetsResponse' <$>+ (x .?> "GeoMatchSets" .!@ mempty) <*>+ (x .?> "NextMarker")+ <*> (pure (fromEnum s)))++instance Hashable ListGeoMatchSets where++instance NFData ListGeoMatchSets where++instance ToHeaders ListGeoMatchSets where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListGeoMatchSets" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListGeoMatchSets where+ toJSON ListGeoMatchSets'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lgmsNextMarker,+ ("Limit" .=) <$> _lgmsLimit])++instance ToPath ListGeoMatchSets where+ toPath = const "/"++instance ToQuery ListGeoMatchSets where+ toQuery = const mempty++-- | /See:/ 'listGeoMatchSetsResponse' smart constructor.+data ListGeoMatchSetsResponse = ListGeoMatchSetsResponse'+ { _lgmsrsGeoMatchSets :: !(Maybe [GeoMatchSetSummary])+ , _lgmsrsNextMarker :: !(Maybe Text)+ , _lgmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListGeoMatchSetsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lgmsrsGeoMatchSets' - An array of 'GeoMatchSetSummary' objects.+--+-- * 'lgmsrsNextMarker' - If you have more @GeoMatchSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @GeoMatchSet@ objects, submit another @ListGeoMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lgmsrsResponseStatus' - -- | The response status code.+listGeoMatchSetsResponse+ :: Int -- ^ 'lgmsrsResponseStatus'+ -> ListGeoMatchSetsResponse+listGeoMatchSetsResponse pResponseStatus_ =+ ListGeoMatchSetsResponse'+ { _lgmsrsGeoMatchSets = Nothing+ , _lgmsrsNextMarker = Nothing+ , _lgmsrsResponseStatus = pResponseStatus_+ }+++-- | An array of 'GeoMatchSetSummary' objects.+lgmsrsGeoMatchSets :: Lens' ListGeoMatchSetsResponse [GeoMatchSetSummary]+lgmsrsGeoMatchSets = lens _lgmsrsGeoMatchSets (\ s a -> s{_lgmsrsGeoMatchSets = a}) . _Default . _Coerce;++-- | If you have more @GeoMatchSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @GeoMatchSet@ objects, submit another @ListGeoMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lgmsrsNextMarker :: Lens' ListGeoMatchSetsResponse (Maybe Text)+lgmsrsNextMarker = lens _lgmsrsNextMarker (\ s a -> s{_lgmsrsNextMarker = a});++-- | -- | The response status code.+lgmsrsResponseStatus :: Lens' ListGeoMatchSetsResponse Int+lgmsrsResponseStatus = lens _lgmsrsResponseStatus (\ s a -> s{_lgmsrsResponseStatus = a});++instance NFData ListGeoMatchSetsResponse where
+ gen/Network/AWS/WAFRegional/ListIPSets.hs view
@@ -0,0 +1,153 @@+{-# 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.WAFRegional.ListIPSets+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'IPSetSummary' objects in the response.+--+--+module Network.AWS.WAFRegional.ListIPSets+ (+ -- * Creating a Request+ listIPSets+ , ListIPSets+ -- * Request Lenses+ , lisNextMarker+ , lisLimit++ -- * Destructuring the Response+ , listIPSetsResponse+ , ListIPSetsResponse+ -- * Response Lenses+ , lisrsNextMarker+ , lisrsIPSets+ , lisrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listIPSets' smart constructor.+data ListIPSets = ListIPSets'+ { _lisNextMarker :: !(Maybe Text)+ , _lisLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListIPSets' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lisNextMarker' - If you specify a value for @Limit@ and you have more @IPSets@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @IPSets@ . For the second and subsequent @ListIPSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @IPSets@ .+--+-- * 'lisLimit' - Specifies the number of @IPSet@ objects that you want AWS WAF to return for this request. If you have more @IPSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @IPSet@ objects.+listIPSets+ :: ListIPSets+listIPSets = ListIPSets' {_lisNextMarker = Nothing, _lisLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more @IPSets@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @IPSets@ . For the second and subsequent @ListIPSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @IPSets@ .+lisNextMarker :: Lens' ListIPSets (Maybe Text)+lisNextMarker = lens _lisNextMarker (\ s a -> s{_lisNextMarker = a});++-- | Specifies the number of @IPSet@ objects that you want AWS WAF to return for this request. If you have more @IPSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @IPSet@ objects.+lisLimit :: Lens' ListIPSets (Maybe Natural)+lisLimit = lens _lisLimit (\ s a -> s{_lisLimit = a}) . mapping _Nat;++instance AWSRequest ListIPSets where+ type Rs ListIPSets = ListIPSetsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListIPSetsResponse' <$>+ (x .?> "NextMarker") <*> (x .?> "IPSets" .!@ mempty)+ <*> (pure (fromEnum s)))++instance Hashable ListIPSets where++instance NFData ListIPSets where++instance ToHeaders ListIPSets where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListIPSets" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListIPSets where+ toJSON ListIPSets'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lisNextMarker,+ ("Limit" .=) <$> _lisLimit])++instance ToPath ListIPSets where+ toPath = const "/"++instance ToQuery ListIPSets where+ toQuery = const mempty++-- | /See:/ 'listIPSetsResponse' smart constructor.+data ListIPSetsResponse = ListIPSetsResponse'+ { _lisrsNextMarker :: !(Maybe Text)+ , _lisrsIPSets :: !(Maybe [IPSetSummary])+ , _lisrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListIPSetsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lisrsNextMarker' - If you have more @IPSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @IPSet@ objects, submit another @ListIPSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lisrsIPSets' - An array of 'IPSetSummary' objects.+--+-- * 'lisrsResponseStatus' - -- | The response status code.+listIPSetsResponse+ :: Int -- ^ 'lisrsResponseStatus'+ -> ListIPSetsResponse+listIPSetsResponse pResponseStatus_ =+ ListIPSetsResponse'+ { _lisrsNextMarker = Nothing+ , _lisrsIPSets = Nothing+ , _lisrsResponseStatus = pResponseStatus_+ }+++-- | If you have more @IPSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @IPSet@ objects, submit another @ListIPSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lisrsNextMarker :: Lens' ListIPSetsResponse (Maybe Text)+lisrsNextMarker = lens _lisrsNextMarker (\ s a -> s{_lisrsNextMarker = a});++-- | An array of 'IPSetSummary' objects.+lisrsIPSets :: Lens' ListIPSetsResponse [IPSetSummary]+lisrsIPSets = lens _lisrsIPSets (\ s a -> s{_lisrsIPSets = a}) . _Default . _Coerce;++-- | -- | The response status code.+lisrsResponseStatus :: Lens' ListIPSetsResponse Int+lisrsResponseStatus = lens _lisrsResponseStatus (\ s a -> s{_lisrsResponseStatus = a});++instance NFData ListIPSetsResponse where
+ gen/Network/AWS/WAFRegional/ListRateBasedRules.hs view
@@ -0,0 +1,155 @@+{-# 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.WAFRegional.ListRateBasedRules+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'RuleSummary' objects.+--+--+module Network.AWS.WAFRegional.ListRateBasedRules+ (+ -- * Creating a Request+ listRateBasedRules+ , ListRateBasedRules+ -- * Request Lenses+ , lrbrNextMarker+ , lrbrLimit++ -- * Destructuring the Response+ , listRateBasedRulesResponse+ , ListRateBasedRulesResponse+ -- * Response Lenses+ , lrbrrsRules+ , lrbrrsNextMarker+ , lrbrrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listRateBasedRules' smart constructor.+data ListRateBasedRules = ListRateBasedRules'+ { _lrbrNextMarker :: !(Maybe Text)+ , _lrbrLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListRateBasedRules' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrbrNextMarker' - If you specify a value for @Limit@ and you have more @Rules@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @Rules@ . For the second and subsequent @ListRateBasedRules@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @Rules@ .+--+-- * 'lrbrLimit' - Specifies the number of @Rules@ that you want AWS WAF to return for this request. If you have more @Rules@ than the number that you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @Rules@ .+listRateBasedRules+ :: ListRateBasedRules+listRateBasedRules =+ ListRateBasedRules' {_lrbrNextMarker = Nothing, _lrbrLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more @Rules@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @Rules@ . For the second and subsequent @ListRateBasedRules@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @Rules@ .+lrbrNextMarker :: Lens' ListRateBasedRules (Maybe Text)+lrbrNextMarker = lens _lrbrNextMarker (\ s a -> s{_lrbrNextMarker = a});++-- | Specifies the number of @Rules@ that you want AWS WAF to return for this request. If you have more @Rules@ than the number that you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @Rules@ .+lrbrLimit :: Lens' ListRateBasedRules (Maybe Natural)+lrbrLimit = lens _lrbrLimit (\ s a -> s{_lrbrLimit = a}) . mapping _Nat;++instance AWSRequest ListRateBasedRules where+ type Rs ListRateBasedRules =+ ListRateBasedRulesResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListRateBasedRulesResponse' <$>+ (x .?> "Rules" .!@ mempty) <*> (x .?> "NextMarker")+ <*> (pure (fromEnum s)))++instance Hashable ListRateBasedRules where++instance NFData ListRateBasedRules where++instance ToHeaders ListRateBasedRules where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListRateBasedRules" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListRateBasedRules where+ toJSON ListRateBasedRules'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lrbrNextMarker,+ ("Limit" .=) <$> _lrbrLimit])++instance ToPath ListRateBasedRules where+ toPath = const "/"++instance ToQuery ListRateBasedRules where+ toQuery = const mempty++-- | /See:/ 'listRateBasedRulesResponse' smart constructor.+data ListRateBasedRulesResponse = ListRateBasedRulesResponse'+ { _lrbrrsRules :: !(Maybe [RuleSummary])+ , _lrbrrsNextMarker :: !(Maybe Text)+ , _lrbrrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListRateBasedRulesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrbrrsRules' - An array of 'RuleSummary' objects.+--+-- * 'lrbrrsNextMarker' - If you have more @Rules@ than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @Rules@ , submit another @ListRateBasedRules@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lrbrrsResponseStatus' - -- | The response status code.+listRateBasedRulesResponse+ :: Int -- ^ 'lrbrrsResponseStatus'+ -> ListRateBasedRulesResponse+listRateBasedRulesResponse pResponseStatus_ =+ ListRateBasedRulesResponse'+ { _lrbrrsRules = Nothing+ , _lrbrrsNextMarker = Nothing+ , _lrbrrsResponseStatus = pResponseStatus_+ }+++-- | An array of 'RuleSummary' objects.+lrbrrsRules :: Lens' ListRateBasedRulesResponse [RuleSummary]+lrbrrsRules = lens _lrbrrsRules (\ s a -> s{_lrbrrsRules = a}) . _Default . _Coerce;++-- | If you have more @Rules@ than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @Rules@ , submit another @ListRateBasedRules@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lrbrrsNextMarker :: Lens' ListRateBasedRulesResponse (Maybe Text)+lrbrrsNextMarker = lens _lrbrrsNextMarker (\ s a -> s{_lrbrrsNextMarker = a});++-- | -- | The response status code.+lrbrrsResponseStatus :: Lens' ListRateBasedRulesResponse Int+lrbrrsResponseStatus = lens _lrbrrsResponseStatus (\ s a -> s{_lrbrrsResponseStatus = a});++instance NFData ListRateBasedRulesResponse where
+ gen/Network/AWS/WAFRegional/ListRegexMatchSets.hs view
@@ -0,0 +1,156 @@+{-# 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.WAFRegional.ListRegexMatchSets+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'RegexMatchSetSummary' objects.+--+--+module Network.AWS.WAFRegional.ListRegexMatchSets+ (+ -- * Creating a Request+ listRegexMatchSets+ , ListRegexMatchSets+ -- * Request Lenses+ , lrmsNextMarker+ , lrmsLimit++ -- * Destructuring the Response+ , listRegexMatchSetsResponse+ , ListRegexMatchSetsResponse+ -- * Response Lenses+ , lrmsrsRegexMatchSets+ , lrmsrsNextMarker+ , lrmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listRegexMatchSets' smart constructor.+data ListRegexMatchSets = ListRegexMatchSets'+ { _lrmsNextMarker :: !(Maybe Text)+ , _lrmsLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListRegexMatchSets' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrmsNextMarker' - If you specify a value for @Limit@ and you have more @RegexMatchSet@ objects than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @ByteMatchSets@ . For the second and subsequent @ListRegexMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @RegexMatchSet@ objects.+--+-- * 'lrmsLimit' - Specifies the number of @RegexMatchSet@ objects that you want AWS WAF to return for this request. If you have more @RegexMatchSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @RegexMatchSet@ objects.+listRegexMatchSets+ :: ListRegexMatchSets+listRegexMatchSets =+ ListRegexMatchSets' {_lrmsNextMarker = Nothing, _lrmsLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more @RegexMatchSet@ objects than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @ByteMatchSets@ . For the second and subsequent @ListRegexMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @RegexMatchSet@ objects.+lrmsNextMarker :: Lens' ListRegexMatchSets (Maybe Text)+lrmsNextMarker = lens _lrmsNextMarker (\ s a -> s{_lrmsNextMarker = a});++-- | Specifies the number of @RegexMatchSet@ objects that you want AWS WAF to return for this request. If you have more @RegexMatchSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @RegexMatchSet@ objects.+lrmsLimit :: Lens' ListRegexMatchSets (Maybe Natural)+lrmsLimit = lens _lrmsLimit (\ s a -> s{_lrmsLimit = a}) . mapping _Nat;++instance AWSRequest ListRegexMatchSets where+ type Rs ListRegexMatchSets =+ ListRegexMatchSetsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListRegexMatchSetsResponse' <$>+ (x .?> "RegexMatchSets" .!@ mempty) <*>+ (x .?> "NextMarker")+ <*> (pure (fromEnum s)))++instance Hashable ListRegexMatchSets where++instance NFData ListRegexMatchSets where++instance ToHeaders ListRegexMatchSets where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListRegexMatchSets" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListRegexMatchSets where+ toJSON ListRegexMatchSets'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lrmsNextMarker,+ ("Limit" .=) <$> _lrmsLimit])++instance ToPath ListRegexMatchSets where+ toPath = const "/"++instance ToQuery ListRegexMatchSets where+ toQuery = const mempty++-- | /See:/ 'listRegexMatchSetsResponse' smart constructor.+data ListRegexMatchSetsResponse = ListRegexMatchSetsResponse'+ { _lrmsrsRegexMatchSets :: !(Maybe [RegexMatchSetSummary])+ , _lrmsrsNextMarker :: !(Maybe Text)+ , _lrmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListRegexMatchSetsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrmsrsRegexMatchSets' - An array of 'RegexMatchSetSummary' objects.+--+-- * 'lrmsrsNextMarker' - If you have more @RegexMatchSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @RegexMatchSet@ objects, submit another @ListRegexMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lrmsrsResponseStatus' - -- | The response status code.+listRegexMatchSetsResponse+ :: Int -- ^ 'lrmsrsResponseStatus'+ -> ListRegexMatchSetsResponse+listRegexMatchSetsResponse pResponseStatus_ =+ ListRegexMatchSetsResponse'+ { _lrmsrsRegexMatchSets = Nothing+ , _lrmsrsNextMarker = Nothing+ , _lrmsrsResponseStatus = pResponseStatus_+ }+++-- | An array of 'RegexMatchSetSummary' objects.+lrmsrsRegexMatchSets :: Lens' ListRegexMatchSetsResponse [RegexMatchSetSummary]+lrmsrsRegexMatchSets = lens _lrmsrsRegexMatchSets (\ s a -> s{_lrmsrsRegexMatchSets = a}) . _Default . _Coerce;++-- | If you have more @RegexMatchSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @RegexMatchSet@ objects, submit another @ListRegexMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lrmsrsNextMarker :: Lens' ListRegexMatchSetsResponse (Maybe Text)+lrmsrsNextMarker = lens _lrmsrsNextMarker (\ s a -> s{_lrmsrsNextMarker = a});++-- | -- | The response status code.+lrmsrsResponseStatus :: Lens' ListRegexMatchSetsResponse Int+lrmsrsResponseStatus = lens _lrmsrsResponseStatus (\ s a -> s{_lrmsrsResponseStatus = a});++instance NFData ListRegexMatchSetsResponse where
+ gen/Network/AWS/WAFRegional/ListRegexPatternSets.hs view
@@ -0,0 +1,156 @@+{-# 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.WAFRegional.ListRegexPatternSets+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'RegexPatternSetSummary' objects.+--+--+module Network.AWS.WAFRegional.ListRegexPatternSets+ (+ -- * Creating a Request+ listRegexPatternSets+ , ListRegexPatternSets+ -- * Request Lenses+ , lrpsNextMarker+ , lrpsLimit++ -- * Destructuring the Response+ , listRegexPatternSetsResponse+ , ListRegexPatternSetsResponse+ -- * Response Lenses+ , lrpsrsRegexPatternSets+ , lrpsrsNextMarker+ , lrpsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listRegexPatternSets' smart constructor.+data ListRegexPatternSets = ListRegexPatternSets'+ { _lrpsNextMarker :: !(Maybe Text)+ , _lrpsLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListRegexPatternSets' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrpsNextMarker' - If you specify a value for @Limit@ and you have more @RegexPatternSet@ objects than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @RegexPatternSet@ objects. For the second and subsequent @ListRegexPatternSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @RegexPatternSet@ objects.+--+-- * 'lrpsLimit' - Specifies the number of @RegexPatternSet@ objects that you want AWS WAF to return for this request. If you have more @RegexPatternSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @RegexPatternSet@ objects.+listRegexPatternSets+ :: ListRegexPatternSets+listRegexPatternSets =+ ListRegexPatternSets' {_lrpsNextMarker = Nothing, _lrpsLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more @RegexPatternSet@ objects than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @RegexPatternSet@ objects. For the second and subsequent @ListRegexPatternSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @RegexPatternSet@ objects.+lrpsNextMarker :: Lens' ListRegexPatternSets (Maybe Text)+lrpsNextMarker = lens _lrpsNextMarker (\ s a -> s{_lrpsNextMarker = a});++-- | Specifies the number of @RegexPatternSet@ objects that you want AWS WAF to return for this request. If you have more @RegexPatternSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @RegexPatternSet@ objects.+lrpsLimit :: Lens' ListRegexPatternSets (Maybe Natural)+lrpsLimit = lens _lrpsLimit (\ s a -> s{_lrpsLimit = a}) . mapping _Nat;++instance AWSRequest ListRegexPatternSets where+ type Rs ListRegexPatternSets =+ ListRegexPatternSetsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListRegexPatternSetsResponse' <$>+ (x .?> "RegexPatternSets" .!@ mempty) <*>+ (x .?> "NextMarker")+ <*> (pure (fromEnum s)))++instance Hashable ListRegexPatternSets where++instance NFData ListRegexPatternSets where++instance ToHeaders ListRegexPatternSets where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListRegexPatternSets" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListRegexPatternSets where+ toJSON ListRegexPatternSets'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lrpsNextMarker,+ ("Limit" .=) <$> _lrpsLimit])++instance ToPath ListRegexPatternSets where+ toPath = const "/"++instance ToQuery ListRegexPatternSets where+ toQuery = const mempty++-- | /See:/ 'listRegexPatternSetsResponse' smart constructor.+data ListRegexPatternSetsResponse = ListRegexPatternSetsResponse'+ { _lrpsrsRegexPatternSets :: !(Maybe [RegexPatternSetSummary])+ , _lrpsrsNextMarker :: !(Maybe Text)+ , _lrpsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListRegexPatternSetsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrpsrsRegexPatternSets' - An array of 'RegexPatternSetSummary' objects.+--+-- * 'lrpsrsNextMarker' - If you have more @RegexPatternSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @RegexPatternSet@ objects, submit another @ListRegexPatternSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lrpsrsResponseStatus' - -- | The response status code.+listRegexPatternSetsResponse+ :: Int -- ^ 'lrpsrsResponseStatus'+ -> ListRegexPatternSetsResponse+listRegexPatternSetsResponse pResponseStatus_ =+ ListRegexPatternSetsResponse'+ { _lrpsrsRegexPatternSets = Nothing+ , _lrpsrsNextMarker = Nothing+ , _lrpsrsResponseStatus = pResponseStatus_+ }+++-- | An array of 'RegexPatternSetSummary' objects.+lrpsrsRegexPatternSets :: Lens' ListRegexPatternSetsResponse [RegexPatternSetSummary]+lrpsrsRegexPatternSets = lens _lrpsrsRegexPatternSets (\ s a -> s{_lrpsrsRegexPatternSets = a}) . _Default . _Coerce;++-- | If you have more @RegexPatternSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @RegexPatternSet@ objects, submit another @ListRegexPatternSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lrpsrsNextMarker :: Lens' ListRegexPatternSetsResponse (Maybe Text)+lrpsrsNextMarker = lens _lrpsrsNextMarker (\ s a -> s{_lrpsrsNextMarker = a});++-- | -- | The response status code.+lrpsrsResponseStatus :: Lens' ListRegexPatternSetsResponse Int+lrpsrsResponseStatus = lens _lrpsrsResponseStatus (\ s a -> s{_lrpsrsResponseStatus = a});++instance NFData ListRegexPatternSetsResponse where
+ gen/Network/AWS/WAFRegional/ListResourcesForWebACL.hs view
@@ -0,0 +1,135 @@+{-# 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.WAFRegional.ListResourcesForWebACL+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of resources associated with the specified web ACL.+--+--+module Network.AWS.WAFRegional.ListResourcesForWebACL+ (+ -- * Creating a Request+ listResourcesForWebACL+ , ListResourcesForWebACL+ -- * Request Lenses+ , lrfwaWebACLId++ -- * Destructuring the Response+ , listResourcesForWebACLResponse+ , ListResourcesForWebACLResponse+ -- * Response Lenses+ , lrfwarsResourceARNs+ , lrfwarsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listResourcesForWebACL' smart constructor.+newtype ListResourcesForWebACL = ListResourcesForWebACL'+ { _lrfwaWebACLId :: Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListResourcesForWebACL' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrfwaWebACLId' - The unique identifier (ID) of the web ACL for which to list the associated resources.+listResourcesForWebACL+ :: Text -- ^ 'lrfwaWebACLId'+ -> ListResourcesForWebACL+listResourcesForWebACL pWebACLId_ =+ ListResourcesForWebACL' {_lrfwaWebACLId = pWebACLId_}+++-- | The unique identifier (ID) of the web ACL for which to list the associated resources.+lrfwaWebACLId :: Lens' ListResourcesForWebACL Text+lrfwaWebACLId = lens _lrfwaWebACLId (\ s a -> s{_lrfwaWebACLId = a});++instance AWSRequest ListResourcesForWebACL where+ type Rs ListResourcesForWebACL =+ ListResourcesForWebACLResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListResourcesForWebACLResponse' <$>+ (x .?> "ResourceArns" .!@ mempty) <*>+ (pure (fromEnum s)))++instance Hashable ListResourcesForWebACL where++instance NFData ListResourcesForWebACL where++instance ToHeaders ListResourcesForWebACL where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListResourcesForWebACL" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListResourcesForWebACL where+ toJSON ListResourcesForWebACL'{..}+ = object+ (catMaybes [Just ("WebACLId" .= _lrfwaWebACLId)])++instance ToPath ListResourcesForWebACL where+ toPath = const "/"++instance ToQuery ListResourcesForWebACL where+ toQuery = const mempty++-- | /See:/ 'listResourcesForWebACLResponse' smart constructor.+data ListResourcesForWebACLResponse = ListResourcesForWebACLResponse'+ { _lrfwarsResourceARNs :: !(Maybe [Text])+ , _lrfwarsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListResourcesForWebACLResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrfwarsResourceARNs' - An array of ARNs (Amazon Resource Names) of the resources associated with the specified web ACL. An array with zero elements is returned if there are no resources associated with the web ACL.+--+-- * 'lrfwarsResponseStatus' - -- | The response status code.+listResourcesForWebACLResponse+ :: Int -- ^ 'lrfwarsResponseStatus'+ -> ListResourcesForWebACLResponse+listResourcesForWebACLResponse pResponseStatus_ =+ ListResourcesForWebACLResponse'+ {_lrfwarsResourceARNs = Nothing, _lrfwarsResponseStatus = pResponseStatus_}+++-- | An array of ARNs (Amazon Resource Names) of the resources associated with the specified web ACL. An array with zero elements is returned if there are no resources associated with the web ACL.+lrfwarsResourceARNs :: Lens' ListResourcesForWebACLResponse [Text]+lrfwarsResourceARNs = lens _lrfwarsResourceARNs (\ s a -> s{_lrfwarsResourceARNs = a}) . _Default . _Coerce;++-- | -- | The response status code.+lrfwarsResponseStatus :: Lens' ListResourcesForWebACLResponse Int+lrfwarsResponseStatus = lens _lrfwarsResponseStatus (\ s a -> s{_lrfwarsResponseStatus = a});++instance NFData ListResourcesForWebACLResponse where
+ gen/Network/AWS/WAFRegional/ListRules.hs view
@@ -0,0 +1,152 @@+{-# 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.WAFRegional.ListRules+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'RuleSummary' objects.+--+--+module Network.AWS.WAFRegional.ListRules+ (+ -- * Creating a Request+ listRules+ , ListRules+ -- * Request Lenses+ , lrNextMarker+ , lrLimit++ -- * Destructuring the Response+ , listRulesResponse+ , ListRulesResponse+ -- * Response Lenses+ , lrrsRules+ , lrrsNextMarker+ , lrrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listRules' smart constructor.+data ListRules = ListRules'+ { _lrNextMarker :: !(Maybe Text)+ , _lrLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListRules' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrNextMarker' - If you specify a value for @Limit@ and you have more @Rules@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @Rules@ . For the second and subsequent @ListRules@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @Rules@ .+--+-- * 'lrLimit' - Specifies the number of @Rules@ that you want AWS WAF to return for this request. If you have more @Rules@ than the number that you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @Rules@ .+listRules+ :: ListRules+listRules = ListRules' {_lrNextMarker = Nothing, _lrLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more @Rules@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @Rules@ . For the second and subsequent @ListRules@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @Rules@ .+lrNextMarker :: Lens' ListRules (Maybe Text)+lrNextMarker = lens _lrNextMarker (\ s a -> s{_lrNextMarker = a});++-- | Specifies the number of @Rules@ that you want AWS WAF to return for this request. If you have more @Rules@ than the number that you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @Rules@ .+lrLimit :: Lens' ListRules (Maybe Natural)+lrLimit = lens _lrLimit (\ s a -> s{_lrLimit = a}) . mapping _Nat;++instance AWSRequest ListRules where+ type Rs ListRules = ListRulesResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListRulesResponse' <$>+ (x .?> "Rules" .!@ mempty) <*> (x .?> "NextMarker")+ <*> (pure (fromEnum s)))++instance Hashable ListRules where++instance NFData ListRules where++instance ToHeaders ListRules where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListRules" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListRules where+ toJSON ListRules'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lrNextMarker,+ ("Limit" .=) <$> _lrLimit])++instance ToPath ListRules where+ toPath = const "/"++instance ToQuery ListRules where+ toQuery = const mempty++-- | /See:/ 'listRulesResponse' smart constructor.+data ListRulesResponse = ListRulesResponse'+ { _lrrsRules :: !(Maybe [RuleSummary])+ , _lrrsNextMarker :: !(Maybe Text)+ , _lrrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListRulesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lrrsRules' - An array of 'RuleSummary' objects.+--+-- * 'lrrsNextMarker' - If you have more @Rules@ than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @Rules@ , submit another @ListRules@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lrrsResponseStatus' - -- | The response status code.+listRulesResponse+ :: Int -- ^ 'lrrsResponseStatus'+ -> ListRulesResponse+listRulesResponse pResponseStatus_ =+ ListRulesResponse'+ { _lrrsRules = Nothing+ , _lrrsNextMarker = Nothing+ , _lrrsResponseStatus = pResponseStatus_+ }+++-- | An array of 'RuleSummary' objects.+lrrsRules :: Lens' ListRulesResponse [RuleSummary]+lrrsRules = lens _lrrsRules (\ s a -> s{_lrrsRules = a}) . _Default . _Coerce;++-- | If you have more @Rules@ than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @Rules@ , submit another @ListRules@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lrrsNextMarker :: Lens' ListRulesResponse (Maybe Text)+lrrsNextMarker = lens _lrrsNextMarker (\ s a -> s{_lrrsNextMarker = a});++-- | -- | The response status code.+lrrsResponseStatus :: Lens' ListRulesResponse Int+lrrsResponseStatus = lens _lrrsResponseStatus (\ s a -> s{_lrrsResponseStatus = a});++instance NFData ListRulesResponse where
+ gen/Network/AWS/WAFRegional/ListSizeConstraintSets.hs view
@@ -0,0 +1,156 @@+{-# 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.WAFRegional.ListSizeConstraintSets+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'SizeConstraintSetSummary' objects.+--+--+module Network.AWS.WAFRegional.ListSizeConstraintSets+ (+ -- * Creating a Request+ listSizeConstraintSets+ , ListSizeConstraintSets+ -- * Request Lenses+ , lscsNextMarker+ , lscsLimit++ -- * Destructuring the Response+ , listSizeConstraintSetsResponse+ , ListSizeConstraintSetsResponse+ -- * Response Lenses+ , lscsrsSizeConstraintSets+ , lscsrsNextMarker+ , lscsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listSizeConstraintSets' smart constructor.+data ListSizeConstraintSets = ListSizeConstraintSets'+ { _lscsNextMarker :: !(Maybe Text)+ , _lscsLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListSizeConstraintSets' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lscsNextMarker' - If you specify a value for @Limit@ and you have more @SizeConstraintSets@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @SizeConstraintSets@ . For the second and subsequent @ListSizeConstraintSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @SizeConstraintSets@ .+--+-- * 'lscsLimit' - Specifies the number of @SizeConstraintSet@ objects that you want AWS WAF to return for this request. If you have more @SizeConstraintSets@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @SizeConstraintSet@ objects.+listSizeConstraintSets+ :: ListSizeConstraintSets+listSizeConstraintSets =+ ListSizeConstraintSets' {_lscsNextMarker = Nothing, _lscsLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more @SizeConstraintSets@ than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @SizeConstraintSets@ . For the second and subsequent @ListSizeConstraintSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @SizeConstraintSets@ .+lscsNextMarker :: Lens' ListSizeConstraintSets (Maybe Text)+lscsNextMarker = lens _lscsNextMarker (\ s a -> s{_lscsNextMarker = a});++-- | Specifies the number of @SizeConstraintSet@ objects that you want AWS WAF to return for this request. If you have more @SizeConstraintSets@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @SizeConstraintSet@ objects.+lscsLimit :: Lens' ListSizeConstraintSets (Maybe Natural)+lscsLimit = lens _lscsLimit (\ s a -> s{_lscsLimit = a}) . mapping _Nat;++instance AWSRequest ListSizeConstraintSets where+ type Rs ListSizeConstraintSets =+ ListSizeConstraintSetsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListSizeConstraintSetsResponse' <$>+ (x .?> "SizeConstraintSets" .!@ mempty) <*>+ (x .?> "NextMarker")+ <*> (pure (fromEnum s)))++instance Hashable ListSizeConstraintSets where++instance NFData ListSizeConstraintSets where++instance ToHeaders ListSizeConstraintSets where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListSizeConstraintSets" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListSizeConstraintSets where+ toJSON ListSizeConstraintSets'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lscsNextMarker,+ ("Limit" .=) <$> _lscsLimit])++instance ToPath ListSizeConstraintSets where+ toPath = const "/"++instance ToQuery ListSizeConstraintSets where+ toQuery = const mempty++-- | /See:/ 'listSizeConstraintSetsResponse' smart constructor.+data ListSizeConstraintSetsResponse = ListSizeConstraintSetsResponse'+ { _lscsrsSizeConstraintSets :: !(Maybe [SizeConstraintSetSummary])+ , _lscsrsNextMarker :: !(Maybe Text)+ , _lscsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListSizeConstraintSetsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lscsrsSizeConstraintSets' - An array of 'SizeConstraintSetSummary' objects.+--+-- * 'lscsrsNextMarker' - If you have more @SizeConstraintSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @SizeConstraintSet@ objects, submit another @ListSizeConstraintSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lscsrsResponseStatus' - -- | The response status code.+listSizeConstraintSetsResponse+ :: Int -- ^ 'lscsrsResponseStatus'+ -> ListSizeConstraintSetsResponse+listSizeConstraintSetsResponse pResponseStatus_ =+ ListSizeConstraintSetsResponse'+ { _lscsrsSizeConstraintSets = Nothing+ , _lscsrsNextMarker = Nothing+ , _lscsrsResponseStatus = pResponseStatus_+ }+++-- | An array of 'SizeConstraintSetSummary' objects.+lscsrsSizeConstraintSets :: Lens' ListSizeConstraintSetsResponse [SizeConstraintSetSummary]+lscsrsSizeConstraintSets = lens _lscsrsSizeConstraintSets (\ s a -> s{_lscsrsSizeConstraintSets = a}) . _Default . _Coerce;++-- | If you have more @SizeConstraintSet@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @SizeConstraintSet@ objects, submit another @ListSizeConstraintSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lscsrsNextMarker :: Lens' ListSizeConstraintSetsResponse (Maybe Text)+lscsrsNextMarker = lens _lscsrsNextMarker (\ s a -> s{_lscsrsNextMarker = a});++-- | -- | The response status code.+lscsrsResponseStatus :: Lens' ListSizeConstraintSetsResponse Int+lscsrsResponseStatus = lens _lscsrsResponseStatus (\ s a -> s{_lscsrsResponseStatus = a});++instance NFData ListSizeConstraintSetsResponse where
+ gen/Network/AWS/WAFRegional/ListSqlInjectionMatchSets.hs view
@@ -0,0 +1,165 @@+{-# 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.WAFRegional.ListSqlInjectionMatchSets+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'SqlInjectionMatchSet' objects.+--+--+module Network.AWS.WAFRegional.ListSqlInjectionMatchSets+ (+ -- * Creating a Request+ listSqlInjectionMatchSets+ , ListSqlInjectionMatchSets+ -- * Request Lenses+ , lsimsNextMarker+ , lsimsLimit++ -- * Destructuring the Response+ , listSqlInjectionMatchSetsResponse+ , ListSqlInjectionMatchSetsResponse+ -- * Response Lenses+ , lsimsrsNextMarker+ , lsimsrsSqlInjectionMatchSets+ , lsimsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to list the 'SqlInjectionMatchSet' objects created by the current AWS account.+--+--+--+-- /See:/ 'listSqlInjectionMatchSets' smart constructor.+data ListSqlInjectionMatchSets = ListSqlInjectionMatchSets'+ { _lsimsNextMarker :: !(Maybe Text)+ , _lsimsLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListSqlInjectionMatchSets' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lsimsNextMarker' - If you specify a value for @Limit@ and you have more 'SqlInjectionMatchSet' objects than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @SqlInjectionMatchSets@ . For the second and subsequent @ListSqlInjectionMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @SqlInjectionMatchSets@ .+--+-- * 'lsimsLimit' - Specifies the number of 'SqlInjectionMatchSet' objects that you want AWS WAF to return for this request. If you have more @SqlInjectionMatchSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @Rules@ .+listSqlInjectionMatchSets+ :: ListSqlInjectionMatchSets+listSqlInjectionMatchSets =+ ListSqlInjectionMatchSets' {_lsimsNextMarker = Nothing, _lsimsLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more 'SqlInjectionMatchSet' objects than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @SqlInjectionMatchSets@ . For the second and subsequent @ListSqlInjectionMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @SqlInjectionMatchSets@ .+lsimsNextMarker :: Lens' ListSqlInjectionMatchSets (Maybe Text)+lsimsNextMarker = lens _lsimsNextMarker (\ s a -> s{_lsimsNextMarker = a});++-- | Specifies the number of 'SqlInjectionMatchSet' objects that you want AWS WAF to return for this request. If you have more @SqlInjectionMatchSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @Rules@ .+lsimsLimit :: Lens' ListSqlInjectionMatchSets (Maybe Natural)+lsimsLimit = lens _lsimsLimit (\ s a -> s{_lsimsLimit = a}) . mapping _Nat;++instance AWSRequest ListSqlInjectionMatchSets where+ type Rs ListSqlInjectionMatchSets =+ ListSqlInjectionMatchSetsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListSqlInjectionMatchSetsResponse' <$>+ (x .?> "NextMarker") <*>+ (x .?> "SqlInjectionMatchSets" .!@ mempty)+ <*> (pure (fromEnum s)))++instance Hashable ListSqlInjectionMatchSets where++instance NFData ListSqlInjectionMatchSets where++instance ToHeaders ListSqlInjectionMatchSets where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListSqlInjectionMatchSets"+ :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListSqlInjectionMatchSets where+ toJSON ListSqlInjectionMatchSets'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lsimsNextMarker,+ ("Limit" .=) <$> _lsimsLimit])++instance ToPath ListSqlInjectionMatchSets where+ toPath = const "/"++instance ToQuery ListSqlInjectionMatchSets where+ toQuery = const mempty++-- | The response to a 'ListSqlInjectionMatchSets' request.+--+--+--+-- /See:/ 'listSqlInjectionMatchSetsResponse' smart constructor.+data ListSqlInjectionMatchSetsResponse = ListSqlInjectionMatchSetsResponse'+ { _lsimsrsNextMarker :: !(Maybe Text)+ , _lsimsrsSqlInjectionMatchSets :: !(Maybe [SqlInjectionMatchSetSummary])+ , _lsimsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListSqlInjectionMatchSetsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lsimsrsNextMarker' - If you have more 'SqlInjectionMatchSet' objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @SqlInjectionMatchSet@ objects, submit another @ListSqlInjectionMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lsimsrsSqlInjectionMatchSets' - An array of 'SqlInjectionMatchSetSummary' objects.+--+-- * 'lsimsrsResponseStatus' - -- | The response status code.+listSqlInjectionMatchSetsResponse+ :: Int -- ^ 'lsimsrsResponseStatus'+ -> ListSqlInjectionMatchSetsResponse+listSqlInjectionMatchSetsResponse pResponseStatus_ =+ ListSqlInjectionMatchSetsResponse'+ { _lsimsrsNextMarker = Nothing+ , _lsimsrsSqlInjectionMatchSets = Nothing+ , _lsimsrsResponseStatus = pResponseStatus_+ }+++-- | If you have more 'SqlInjectionMatchSet' objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @SqlInjectionMatchSet@ objects, submit another @ListSqlInjectionMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lsimsrsNextMarker :: Lens' ListSqlInjectionMatchSetsResponse (Maybe Text)+lsimsrsNextMarker = lens _lsimsrsNextMarker (\ s a -> s{_lsimsrsNextMarker = a});++-- | An array of 'SqlInjectionMatchSetSummary' objects.+lsimsrsSqlInjectionMatchSets :: Lens' ListSqlInjectionMatchSetsResponse [SqlInjectionMatchSetSummary]+lsimsrsSqlInjectionMatchSets = lens _lsimsrsSqlInjectionMatchSets (\ s a -> s{_lsimsrsSqlInjectionMatchSets = a}) . _Default . _Coerce;++-- | -- | The response status code.+lsimsrsResponseStatus :: Lens' ListSqlInjectionMatchSetsResponse Int+lsimsrsResponseStatus = lens _lsimsrsResponseStatus (\ s a -> s{_lsimsrsResponseStatus = a});++instance NFData ListSqlInjectionMatchSetsResponse+ where
+ gen/Network/AWS/WAFRegional/ListWebACLs.hs view
@@ -0,0 +1,153 @@+{-# 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.WAFRegional.ListWebACLs+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'WebACLSummary' objects in the response.+--+--+module Network.AWS.WAFRegional.ListWebACLs+ (+ -- * Creating a Request+ listWebACLs+ , ListWebACLs+ -- * Request Lenses+ , lwaNextMarker+ , lwaLimit++ -- * Destructuring the Response+ , listWebACLsResponse+ , ListWebACLsResponse+ -- * Response Lenses+ , lwarsWebACLs+ , lwarsNextMarker+ , lwarsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'listWebACLs' smart constructor.+data ListWebACLs = ListWebACLs'+ { _lwaNextMarker :: !(Maybe Text)+ , _lwaLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListWebACLs' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lwaNextMarker' - If you specify a value for @Limit@ and you have more @WebACL@ objects than the number that you specify for @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @WebACL@ objects. For the second and subsequent @ListWebACLs@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @WebACL@ objects.+--+-- * 'lwaLimit' - Specifies the number of @WebACL@ objects that you want AWS WAF to return for this request. If you have more @WebACL@ objects than the number that you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @WebACL@ objects.+listWebACLs+ :: ListWebACLs+listWebACLs = ListWebACLs' {_lwaNextMarker = Nothing, _lwaLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more @WebACL@ objects than the number that you specify for @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @WebACL@ objects. For the second and subsequent @ListWebACLs@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @WebACL@ objects.+lwaNextMarker :: Lens' ListWebACLs (Maybe Text)+lwaNextMarker = lens _lwaNextMarker (\ s a -> s{_lwaNextMarker = a});++-- | Specifies the number of @WebACL@ objects that you want AWS WAF to return for this request. If you have more @WebACL@ objects than the number that you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @WebACL@ objects.+lwaLimit :: Lens' ListWebACLs (Maybe Natural)+lwaLimit = lens _lwaLimit (\ s a -> s{_lwaLimit = a}) . mapping _Nat;++instance AWSRequest ListWebACLs where+ type Rs ListWebACLs = ListWebACLsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListWebACLsResponse' <$>+ (x .?> "WebACLs" .!@ mempty) <*> (x .?> "NextMarker")+ <*> (pure (fromEnum s)))++instance Hashable ListWebACLs where++instance NFData ListWebACLs where++instance ToHeaders ListWebACLs where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListWebACLs" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListWebACLs where+ toJSON ListWebACLs'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lwaNextMarker,+ ("Limit" .=) <$> _lwaLimit])++instance ToPath ListWebACLs where+ toPath = const "/"++instance ToQuery ListWebACLs where+ toQuery = const mempty++-- | /See:/ 'listWebACLsResponse' smart constructor.+data ListWebACLsResponse = ListWebACLsResponse'+ { _lwarsWebACLs :: !(Maybe [WebACLSummary])+ , _lwarsNextMarker :: !(Maybe Text)+ , _lwarsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListWebACLsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lwarsWebACLs' - An array of 'WebACLSummary' objects.+--+-- * 'lwarsNextMarker' - If you have more @WebACL@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @WebACL@ objects, submit another @ListWebACLs@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lwarsResponseStatus' - -- | The response status code.+listWebACLsResponse+ :: Int -- ^ 'lwarsResponseStatus'+ -> ListWebACLsResponse+listWebACLsResponse pResponseStatus_ =+ ListWebACLsResponse'+ { _lwarsWebACLs = Nothing+ , _lwarsNextMarker = Nothing+ , _lwarsResponseStatus = pResponseStatus_+ }+++-- | An array of 'WebACLSummary' objects.+lwarsWebACLs :: Lens' ListWebACLsResponse [WebACLSummary]+lwarsWebACLs = lens _lwarsWebACLs (\ s a -> s{_lwarsWebACLs = a}) . _Default . _Coerce;++-- | If you have more @WebACL@ objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @WebACL@ objects, submit another @ListWebACLs@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lwarsNextMarker :: Lens' ListWebACLsResponse (Maybe Text)+lwarsNextMarker = lens _lwarsNextMarker (\ s a -> s{_lwarsNextMarker = a});++-- | -- | The response status code.+lwarsResponseStatus :: Lens' ListWebACLsResponse Int+lwarsResponseStatus = lens _lwarsResponseStatus (\ s a -> s{_lwarsResponseStatus = a});++instance NFData ListWebACLsResponse where
+ gen/Network/AWS/WAFRegional/ListXSSMatchSets.hs view
@@ -0,0 +1,163 @@+{-# 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.WAFRegional.ListXSSMatchSets+-- Copyright : (c) 2013-2017 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)+--+-- Returns an array of 'XssMatchSet' objects.+--+--+module Network.AWS.WAFRegional.ListXSSMatchSets+ (+ -- * Creating a Request+ listXSSMatchSets+ , ListXSSMatchSets+ -- * Request Lenses+ , lxmsNextMarker+ , lxmsLimit++ -- * Destructuring the Response+ , listXSSMatchSetsResponse+ , ListXSSMatchSetsResponse+ -- * Response Lenses+ , lxmsrsXSSMatchSets+ , lxmsrsNextMarker+ , lxmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to list the 'XssMatchSet' objects created by the current AWS account.+--+--+--+-- /See:/ 'listXSSMatchSets' smart constructor.+data ListXSSMatchSets = ListXSSMatchSets'+ { _lxmsNextMarker :: !(Maybe Text)+ , _lxmsLimit :: !(Maybe Nat)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListXSSMatchSets' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lxmsNextMarker' - If you specify a value for @Limit@ and you have more 'XssMatchSet' objects than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @XssMatchSets@ . For the second and subsequent @ListXssMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @XssMatchSets@ .+--+-- * 'lxmsLimit' - Specifies the number of 'XssMatchSet' objects that you want AWS WAF to return for this request. If you have more @XssMatchSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @Rules@ .+listXSSMatchSets+ :: ListXSSMatchSets+listXSSMatchSets =+ ListXSSMatchSets' {_lxmsNextMarker = Nothing, _lxmsLimit = Nothing}+++-- | If you specify a value for @Limit@ and you have more 'XssMatchSet' objects than the value of @Limit@ , AWS WAF returns a @NextMarker@ value in the response that allows you to list another group of @XssMatchSets@ . For the second and subsequent @ListXssMatchSets@ requests, specify the value of @NextMarker@ from the previous response to get information about another batch of @XssMatchSets@ .+lxmsNextMarker :: Lens' ListXSSMatchSets (Maybe Text)+lxmsNextMarker = lens _lxmsNextMarker (\ s a -> s{_lxmsNextMarker = a});++-- | Specifies the number of 'XssMatchSet' objects that you want AWS WAF to return for this request. If you have more @XssMatchSet@ objects than the number you specify for @Limit@ , the response includes a @NextMarker@ value that you can use to get another batch of @Rules@ .+lxmsLimit :: Lens' ListXSSMatchSets (Maybe Natural)+lxmsLimit = lens _lxmsLimit (\ s a -> s{_lxmsLimit = a}) . mapping _Nat;++instance AWSRequest ListXSSMatchSets where+ type Rs ListXSSMatchSets = ListXSSMatchSetsResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ ListXSSMatchSetsResponse' <$>+ (x .?> "XssMatchSets" .!@ mempty) <*>+ (x .?> "NextMarker")+ <*> (pure (fromEnum s)))++instance Hashable ListXSSMatchSets where++instance NFData ListXSSMatchSets where++instance ToHeaders ListXSSMatchSets where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.ListXssMatchSets" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON ListXSSMatchSets where+ toJSON ListXSSMatchSets'{..}+ = object+ (catMaybes+ [("NextMarker" .=) <$> _lxmsNextMarker,+ ("Limit" .=) <$> _lxmsLimit])++instance ToPath ListXSSMatchSets where+ toPath = const "/"++instance ToQuery ListXSSMatchSets where+ toQuery = const mempty++-- | The response to a 'ListXssMatchSets' request.+--+--+--+-- /See:/ 'listXSSMatchSetsResponse' smart constructor.+data ListXSSMatchSetsResponse = ListXSSMatchSetsResponse'+ { _lxmsrsXSSMatchSets :: !(Maybe [XSSMatchSetSummary])+ , _lxmsrsNextMarker :: !(Maybe Text)+ , _lxmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ListXSSMatchSetsResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lxmsrsXSSMatchSets' - An array of 'XssMatchSetSummary' objects.+--+-- * 'lxmsrsNextMarker' - If you have more 'XssMatchSet' objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @XssMatchSet@ objects, submit another @ListXssMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+--+-- * 'lxmsrsResponseStatus' - -- | The response status code.+listXSSMatchSetsResponse+ :: Int -- ^ 'lxmsrsResponseStatus'+ -> ListXSSMatchSetsResponse+listXSSMatchSetsResponse pResponseStatus_ =+ ListXSSMatchSetsResponse'+ { _lxmsrsXSSMatchSets = Nothing+ , _lxmsrsNextMarker = Nothing+ , _lxmsrsResponseStatus = pResponseStatus_+ }+++-- | An array of 'XssMatchSetSummary' objects.+lxmsrsXSSMatchSets :: Lens' ListXSSMatchSetsResponse [XSSMatchSetSummary]+lxmsrsXSSMatchSets = lens _lxmsrsXSSMatchSets (\ s a -> s{_lxmsrsXSSMatchSets = a}) . _Default . _Coerce;++-- | If you have more 'XssMatchSet' objects than the number that you specified for @Limit@ in the request, the response includes a @NextMarker@ value. To list more @XssMatchSet@ objects, submit another @ListXssMatchSets@ request, and specify the @NextMarker@ value from the response in the @NextMarker@ value in the next request.+lxmsrsNextMarker :: Lens' ListXSSMatchSetsResponse (Maybe Text)+lxmsrsNextMarker = lens _lxmsrsNextMarker (\ s a -> s{_lxmsrsNextMarker = a});++-- | -- | The response status code.+lxmsrsResponseStatus :: Lens' ListXSSMatchSetsResponse Int+lxmsrsResponseStatus = lens _lxmsrsResponseStatus (\ s a -> s{_lxmsrsResponseStatus = a});++instance NFData ListXSSMatchSetsResponse where
+ gen/Network/AWS/WAFRegional/Types.hs view
@@ -0,0 +1,583 @@+{-# LANGUAGE OverloadedStrings #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.WAFRegional.Types+-- Copyright : (c) 2013-2017 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)+--+module Network.AWS.WAFRegional.Types+ (+ -- * Service Configuration+ wAFRegional++ -- * Errors+ , _WAFInvalidAccountException+ , _WAFReferencedItemException+ , _WAFInvalidRegexPatternException+ , _WAFInvalidOperationException+ , _WAFNonexistentItemException+ , _WAFInvalidParameterException+ , _WAFLimitsExceededException+ , _WAFStaleDataException+ , _WAFInternalErrorException+ , _WAFNonexistentContainerException+ , _WAFUnavailableEntityException+ , _WAFDisallowedNameException+ , _WAFNonEmptyEntityException++ -- * ChangeAction+ , ChangeAction (..)++ -- * ChangeTokenStatus+ , ChangeTokenStatus (..)++ -- * ComparisonOperator+ , ComparisonOperator (..)++ -- * GeoMatchConstraintType+ , GeoMatchConstraintType (..)++ -- * GeoMatchConstraintValue+ , GeoMatchConstraintValue (..)++ -- * IPSetDescriptorType+ , IPSetDescriptorType (..)++ -- * MatchFieldType+ , MatchFieldType (..)++ -- * PositionalConstraint+ , PositionalConstraint (..)++ -- * PredicateType+ , PredicateType (..)++ -- * RateKey+ , RateKey (..)++ -- * TextTransformation+ , TextTransformation (..)++ -- * WafActionType+ , WafActionType (..)++ -- * WafRuleType+ , WafRuleType (..)++ -- * ActivatedRule+ , ActivatedRule+ , activatedRule+ , arType+ , arPriority+ , arRuleId+ , arAction++ -- * ByteMatchSet+ , ByteMatchSet+ , byteMatchSet+ , bmsName+ , bmsByteMatchSetId+ , bmsByteMatchTuples++ -- * ByteMatchSetSummary+ , ByteMatchSetSummary+ , byteMatchSetSummary+ , bmssByteMatchSetId+ , bmssName++ -- * ByteMatchSetUpdate+ , ByteMatchSetUpdate+ , byteMatchSetUpdate+ , bmsuAction+ , bmsuByteMatchTuple++ -- * ByteMatchTuple+ , ByteMatchTuple+ , byteMatchTuple+ , bmtFieldToMatch+ , bmtTargetString+ , bmtTextTransformation+ , bmtPositionalConstraint++ -- * FieldToMatch+ , FieldToMatch+ , fieldToMatch+ , ftmData+ , ftmType++ -- * GeoMatchConstraint+ , GeoMatchConstraint+ , geoMatchConstraint+ , gmcType+ , gmcValue++ -- * GeoMatchSet+ , GeoMatchSet+ , geoMatchSet+ , gmsName+ , gmsGeoMatchSetId+ , gmsGeoMatchConstraints++ -- * GeoMatchSetSummary+ , GeoMatchSetSummary+ , geoMatchSetSummary+ , gmssGeoMatchSetId+ , gmssName++ -- * GeoMatchSetUpdate+ , GeoMatchSetUpdate+ , geoMatchSetUpdate+ , gmsuAction+ , gmsuGeoMatchConstraint++ -- * HTTPHeader+ , HTTPHeader+ , hTTPHeader+ , httphValue+ , httphName++ -- * HTTPRequest+ , HTTPRequest+ , hTTPRequest+ , httprHTTPVersion+ , httprCountry+ , httprURI+ , httprHeaders+ , httprMethod+ , httprClientIP++ -- * IPSet+ , IPSet+ , ipSet+ , isName+ , isIPSetId+ , isIPSetDescriptors++ -- * IPSetDescriptor+ , IPSetDescriptor+ , ipSetDescriptor+ , isdType+ , isdValue++ -- * IPSetSummary+ , IPSetSummary+ , ipSetSummary+ , issIPSetId+ , issName++ -- * IPSetUpdate+ , IPSetUpdate+ , ipSetUpdate+ , isuAction+ , isuIPSetDescriptor++ -- * Predicate+ , Predicate+ , predicate+ , pNegated+ , pType+ , pDataId++ -- * RateBasedRule+ , RateBasedRule+ , rateBasedRule+ , rbrMetricName+ , rbrName+ , rbrRuleId+ , rbrMatchPredicates+ , rbrRateKey+ , rbrRateLimit++ -- * RegexMatchSet+ , RegexMatchSet+ , regexMatchSet+ , rmsName+ , rmsRegexMatchTuples+ , rmsRegexMatchSetId++ -- * RegexMatchSetSummary+ , RegexMatchSetSummary+ , regexMatchSetSummary+ , rmssRegexMatchSetId+ , rmssName++ -- * RegexMatchSetUpdate+ , RegexMatchSetUpdate+ , regexMatchSetUpdate+ , rmsuAction+ , rmsuRegexMatchTuple++ -- * RegexMatchTuple+ , RegexMatchTuple+ , regexMatchTuple+ , rmtFieldToMatch+ , rmtTextTransformation+ , rmtRegexPatternSetId++ -- * RegexPatternSet+ , RegexPatternSet+ , regexPatternSet+ , rpsName+ , rpsRegexPatternSetId+ , rpsRegexPatternStrings++ -- * RegexPatternSetSummary+ , RegexPatternSetSummary+ , regexPatternSetSummary+ , rpssRegexPatternSetId+ , rpssName++ -- * RegexPatternSetUpdate+ , RegexPatternSetUpdate+ , regexPatternSetUpdate+ , rpsuAction+ , rpsuRegexPatternString++ -- * Rule+ , Rule+ , rule+ , rMetricName+ , rName+ , rRuleId+ , rPredicates++ -- * RuleSummary+ , RuleSummary+ , ruleSummary+ , rsRuleId+ , rsName++ -- * RuleUpdate+ , RuleUpdate+ , ruleUpdate+ , ruAction+ , ruPredicate++ -- * SampledHTTPRequest+ , SampledHTTPRequest+ , sampledHTTPRequest+ , shttprAction+ , shttprTimestamp+ , shttprRequest+ , shttprWeight++ -- * SizeConstraint+ , SizeConstraint+ , sizeConstraint+ , scFieldToMatch+ , scTextTransformation+ , scComparisonOperator+ , scSize++ -- * SizeConstraintSet+ , SizeConstraintSet+ , sizeConstraintSet+ , scsName+ , scsSizeConstraintSetId+ , scsSizeConstraints++ -- * SizeConstraintSetSummary+ , SizeConstraintSetSummary+ , sizeConstraintSetSummary+ , scssSizeConstraintSetId+ , scssName++ -- * SizeConstraintSetUpdate+ , SizeConstraintSetUpdate+ , sizeConstraintSetUpdate+ , scsuAction+ , scsuSizeConstraint++ -- * SqlInjectionMatchSet+ , SqlInjectionMatchSet+ , sqlInjectionMatchSet+ , simsName+ , simsSqlInjectionMatchSetId+ , simsSqlInjectionMatchTuples++ -- * SqlInjectionMatchSetSummary+ , SqlInjectionMatchSetSummary+ , sqlInjectionMatchSetSummary+ , simssSqlInjectionMatchSetId+ , simssName++ -- * SqlInjectionMatchSetUpdate+ , SqlInjectionMatchSetUpdate+ , sqlInjectionMatchSetUpdate+ , simsuAction+ , simsuSqlInjectionMatchTuple++ -- * SqlInjectionMatchTuple+ , SqlInjectionMatchTuple+ , sqlInjectionMatchTuple+ , simtFieldToMatch+ , simtTextTransformation++ -- * TimeWindow+ , TimeWindow+ , timeWindow+ , twStartTime+ , twEndTime++ -- * WafAction+ , WafAction+ , wafAction+ , waType++ -- * WebACL+ , WebACL+ , webACL+ , waMetricName+ , waName+ , waWebACLId+ , waDefaultAction+ , waRules++ -- * WebACLSummary+ , WebACLSummary+ , webACLSummary+ , wasWebACLId+ , wasName++ -- * WebACLUpdate+ , WebACLUpdate+ , webACLUpdate+ , wauAction+ , wauActivatedRule++ -- * XSSMatchSet+ , XSSMatchSet+ , xssMatchSet+ , xmsName+ , xmsXSSMatchSetId+ , xmsXSSMatchTuples++ -- * XSSMatchSetSummary+ , XSSMatchSetSummary+ , xssMatchSetSummary+ , xmssXSSMatchSetId+ , xmssName++ -- * XSSMatchSetUpdate+ , XSSMatchSetUpdate+ , xssMatchSetUpdate+ , xmsuAction+ , xmsuXSSMatchTuple++ -- * XSSMatchTuple+ , XSSMatchTuple+ , xssMatchTuple+ , xmtFieldToMatch+ , xmtTextTransformation+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Sign.V4+import Network.AWS.WAFRegional.Types.Product+import Network.AWS.WAFRegional.Types.Sum++-- | API version @2016-11-28@ of the Amazon WAF Regional SDK configuration.+wAFRegional :: Service+wAFRegional =+ Service+ { _svcAbbrev = "WAFRegional"+ , _svcSigner = v4+ , _svcPrefix = "waf-regional"+ , _svcVersion = "2016-11-28"+ , _svcEndpoint = defaultEndpoint wAFRegional+ , _svcTimeout = Just 70+ , _svcCheck = statusSuccess+ , _svcError = parseJSONError "WAFRegional"+ , _svcRetry = retry+ }+ where+ retry =+ Exponential+ { _retryBase = 5.0e-2+ , _retryGrowth = 2+ , _retryAttempts = 5+ , _retryCheck = check+ }+ check e+ | has (hasCode "ThrottledException" . hasStatus 400) e =+ Just "throttled_exception"+ | has (hasStatus 429) e = Just "too_many_requests"+ | has (hasCode "ThrottlingException" . hasStatus 400) e =+ Just "throttling_exception"+ | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"+ | has (hasStatus 504) e = Just "gateway_timeout"+ | has (hasStatus 502) e = Just "bad_gateway"+ | has (hasStatus 503) e = Just "service_unavailable"+ | has (hasStatus 500) e = Just "general_server_error"+ | has (hasStatus 509) e = Just "limit_exceeded"+ | otherwise = Nothing+++-- | The operation failed because you tried to create, update, or delete an object by using an invalid account identifier.+--+--+_WAFInvalidAccountException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFInvalidAccountException =+ _MatchServiceError wAFRegional "WAFInvalidAccountException"+++-- | The operation failed because you tried to delete an object that is still in use. For example:+--+--+-- * You tried to delete a @ByteMatchSet@ that is still referenced by a @Rule@ .+--+-- * You tried to delete a @Rule@ that is still referenced by a @WebACL@ .+--+--+--+_WAFReferencedItemException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFReferencedItemException =+ _MatchServiceError wAFRegional "WAFReferencedItemException"+++-- | The regular expression (regex) you specified in @RegexPatternString@ is invalid.+--+--+_WAFInvalidRegexPatternException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFInvalidRegexPatternException =+ _MatchServiceError wAFRegional "WAFInvalidRegexPatternException"+++-- | The operation failed because there was nothing to do. For example:+--+--+-- * You tried to remove a @Rule@ from a @WebACL@ , but the @Rule@ isn't in the specified @WebACL@ .+--+-- * You tried to remove an IP address from an @IPSet@ , but the IP address isn't in the specified @IPSet@ .+--+-- * You tried to remove a @ByteMatchTuple@ from a @ByteMatchSet@ , but the @ByteMatchTuple@ isn't in the specified @WebACL@ .+--+-- * You tried to add a @Rule@ to a @WebACL@ , but the @Rule@ already exists in the specified @WebACL@ .+--+-- * You tried to add an IP address to an @IPSet@ , but the IP address already exists in the specified @IPSet@ .+--+-- * You tried to add a @ByteMatchTuple@ to a @ByteMatchSet@ , but the @ByteMatchTuple@ already exists in the specified @WebACL@ .+--+--+--+_WAFInvalidOperationException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFInvalidOperationException =+ _MatchServiceError wAFRegional "WAFInvalidOperationException"+++-- | The operation failed because the referenced object doesn't exist.+--+--+_WAFNonexistentItemException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFNonexistentItemException =+ _MatchServiceError wAFRegional "WAFNonexistentItemException"+++-- | The operation failed because AWS WAF didn't recognize a parameter in the request. For example:+--+--+-- * You specified an invalid parameter name.+--+-- * You specified an invalid value.+--+-- * You tried to update an object (@ByteMatchSet@ , @IPSet@ , @Rule@ , or @WebACL@ ) using an action other than @INSERT@ or @DELETE@ .+--+-- * You tried to create a @WebACL@ with a @DefaultAction@ @Type@ other than @ALLOW@ , @BLOCK@ , or @COUNT@ .+--+-- * You tried to create a @RateBasedRule@ with a @RateKey@ value other than @IP@ .+--+-- * You tried to update a @WebACL@ with a @WafAction@ @Type@ other than @ALLOW@ , @BLOCK@ , or @COUNT@ .+--+-- * You tried to update a @ByteMatchSet@ with a @FieldToMatch@ @Type@ other than HEADER, METHOD, QUERY_STRING, URI, or BODY.+--+-- * You tried to update a @ByteMatchSet@ with a @Field@ of @HEADER@ but no value for @Data@ .+--+-- * Your request references an ARN that is malformed, or corresponds to a resource with which a web ACL cannot be associated.+--+--+--+_WAFInvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFInvalidParameterException =+ _MatchServiceError wAFRegional "WAFInvalidParameterException"+++-- | The operation exceeds a resource limit, for example, the maximum number of @WebACL@ objects that you can create for an AWS account. For more information, see <http://docs.aws.amazon.com/waf/latest/developerguide/limits.html Limits> in the /AWS WAF Developer Guide/ .+--+--+_WAFLimitsExceededException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFLimitsExceededException =+ _MatchServiceError wAFRegional "WAFLimitsExceededException"+++-- | The operation failed because you tried to create, update, or delete an object by using a change token that has already been used.+--+--+_WAFStaleDataException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFStaleDataException = _MatchServiceError wAFRegional "WAFStaleDataException"+++-- | The operation failed because of a system problem, even though the request was valid. Retry your request.+--+--+_WAFInternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFInternalErrorException =+ _MatchServiceError wAFRegional "WAFInternalErrorException"+++-- | The operation failed because you tried to add an object to or delete an object from another object that doesn't exist. For example:+--+--+-- * You tried to add a @Rule@ to or delete a @Rule@ from a @WebACL@ that doesn't exist.+--+-- * You tried to add a @ByteMatchSet@ to or delete a @ByteMatchSet@ from a @Rule@ that doesn't exist.+--+-- * You tried to add an IP address to or delete an IP address from an @IPSet@ that doesn't exist.+--+-- * You tried to add a @ByteMatchTuple@ to or delete a @ByteMatchTuple@ from a @ByteMatchSet@ that doesn't exist.+--+--+--+_WAFNonexistentContainerException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFNonexistentContainerException =+ _MatchServiceError wAFRegional "WAFNonexistentContainerException"+++-- | The operation failed because the entity referenced is temporarily unavailable. Retry your request.+--+--+_WAFUnavailableEntityException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFUnavailableEntityException =+ _MatchServiceError wAFRegional "WAFUnavailableEntityException"+++-- | The name specified is invalid.+--+--+_WAFDisallowedNameException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFDisallowedNameException =+ _MatchServiceError wAFRegional "WAFDisallowedNameException"+++-- | The operation failed because you tried to delete an object that isn't empty. For example:+--+--+-- * You tried to delete a @WebACL@ that still contains one or more @Rule@ objects.+--+-- * You tried to delete a @Rule@ that still contains one or more @ByteMatchSet@ objects or other predicates.+--+-- * You tried to delete a @ByteMatchSet@ that contains one or more @ByteMatchTuple@ objects.+--+-- * You tried to delete an @IPSet@ that references one or more IP addresses.+--+--+--+_WAFNonEmptyEntityException :: AsError a => Getting (First ServiceError) a ServiceError+_WAFNonEmptyEntityException =+ _MatchServiceError wAFRegional "WAFNonEmptyEntityException"+
+ gen/Network/AWS/WAFRegional/Types/Product.hs view
@@ -0,0 +1,2553 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.WAFRegional.Types.Product+-- Copyright : (c) 2013-2017 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)+--+module Network.AWS.WAFRegional.Types.Product where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.WAFRegional.Types.Sum++-- | The @ActivatedRule@ object in an 'UpdateWebACL' request specifies a @Rule@ that you want to insert or delete, the priority of the @Rule@ in the @WebACL@ , and the action that you want AWS WAF to take when a web request matches the @Rule@ (@ALLOW@ , @BLOCK@ , or @COUNT@ ).+--+--+-- To specify whether to insert or delete a @Rule@ , use the @Action@ parameter in the 'WebACLUpdate' data type.+--+--+-- /See:/ 'activatedRule' smart constructor.+data ActivatedRule = ActivatedRule'+ { _arType :: !(Maybe WafRuleType)+ , _arPriority :: !Int+ , _arRuleId :: !Text+ , _arAction :: !WafAction+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ActivatedRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'arType' - The rule type, either @REGULAR@ , as defined by 'Rule' , or @RATE_BASED@ , as defined by 'RateBasedRule' . The default is REGULAR. Although this field is optional, be aware that if you try to add a RATE_BASED rule to a web ACL without setting the type, the 'UpdateWebACL' request will fail because the request tries to add a REGULAR rule with the specified ID, which does not exist.+--+-- * 'arPriority' - Specifies the order in which the @Rules@ in a @WebACL@ are evaluated. Rules with a lower value for @Priority@ are evaluated before @Rules@ with a higher value. The value must be a unique integer. If you add multiple @Rules@ to a @WebACL@ , the values don't need to be consecutive.+--+-- * 'arRuleId' - The @RuleId@ for a @Rule@ . You use @RuleId@ to get more information about a @Rule@ (see 'GetRule' ), update a @Rule@ (see 'UpdateRule' ), insert a @Rule@ into a @WebACL@ or delete a one from a @WebACL@ (see 'UpdateWebACL' ), or delete a @Rule@ from AWS WAF (see 'DeleteRule' ). @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+--+-- * 'arAction' - Specifies the action that CloudFront or AWS WAF takes when a web request matches the conditions in the @Rule@ . Valid values for @Action@ include the following: * @ALLOW@ : CloudFront responds with the requested object. * @BLOCK@ : CloudFront responds with an HTTP 403 (Forbidden) status code. * @COUNT@ : AWS WAF increments a counter of requests that match the conditions in the rule and then continues to inspect the web request based on the remaining rules in the web ACL.+activatedRule+ :: Int -- ^ 'arPriority'+ -> Text -- ^ 'arRuleId'+ -> WafAction -- ^ 'arAction'+ -> ActivatedRule+activatedRule pPriority_ pRuleId_ pAction_ =+ ActivatedRule'+ { _arType = Nothing+ , _arPriority = pPriority_+ , _arRuleId = pRuleId_+ , _arAction = pAction_+ }+++-- | The rule type, either @REGULAR@ , as defined by 'Rule' , or @RATE_BASED@ , as defined by 'RateBasedRule' . The default is REGULAR. Although this field is optional, be aware that if you try to add a RATE_BASED rule to a web ACL without setting the type, the 'UpdateWebACL' request will fail because the request tries to add a REGULAR rule with the specified ID, which does not exist.+arType :: Lens' ActivatedRule (Maybe WafRuleType)+arType = lens _arType (\ s a -> s{_arType = a});++-- | Specifies the order in which the @Rules@ in a @WebACL@ are evaluated. Rules with a lower value for @Priority@ are evaluated before @Rules@ with a higher value. The value must be a unique integer. If you add multiple @Rules@ to a @WebACL@ , the values don't need to be consecutive.+arPriority :: Lens' ActivatedRule Int+arPriority = lens _arPriority (\ s a -> s{_arPriority = a});++-- | The @RuleId@ for a @Rule@ . You use @RuleId@ to get more information about a @Rule@ (see 'GetRule' ), update a @Rule@ (see 'UpdateRule' ), insert a @Rule@ into a @WebACL@ or delete a one from a @WebACL@ (see 'UpdateWebACL' ), or delete a @Rule@ from AWS WAF (see 'DeleteRule' ). @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+arRuleId :: Lens' ActivatedRule Text+arRuleId = lens _arRuleId (\ s a -> s{_arRuleId = a});++-- | Specifies the action that CloudFront or AWS WAF takes when a web request matches the conditions in the @Rule@ . Valid values for @Action@ include the following: * @ALLOW@ : CloudFront responds with the requested object. * @BLOCK@ : CloudFront responds with an HTTP 403 (Forbidden) status code. * @COUNT@ : AWS WAF increments a counter of requests that match the conditions in the rule and then continues to inspect the web request based on the remaining rules in the web ACL.+arAction :: Lens' ActivatedRule WafAction+arAction = lens _arAction (\ s a -> s{_arAction = a});++instance FromJSON ActivatedRule where+ parseJSON+ = withObject "ActivatedRule"+ (\ x ->+ ActivatedRule' <$>+ (x .:? "Type") <*> (x .: "Priority") <*>+ (x .: "RuleId")+ <*> (x .: "Action"))++instance Hashable ActivatedRule where++instance NFData ActivatedRule where++instance ToJSON ActivatedRule where+ toJSON ActivatedRule'{..}+ = object+ (catMaybes+ [("Type" .=) <$> _arType,+ Just ("Priority" .= _arPriority),+ Just ("RuleId" .= _arRuleId),+ Just ("Action" .= _arAction)])++-- | In a 'GetByteMatchSet' request, @ByteMatchSet@ is a complex type that contains the @ByteMatchSetId@ and @Name@ of a @ByteMatchSet@ , and the values that you specified when you updated the @ByteMatchSet@ .+--+--+-- A complex type that contains @ByteMatchTuple@ objects, which specify the parts of web requests that you want AWS WAF to inspect and the values that you want AWS WAF to search for. If a @ByteMatchSet@ contains more than one @ByteMatchTuple@ object, a request needs to match the settings in only one @ByteMatchTuple@ to be considered a match.+--+--+-- /See:/ 'byteMatchSet' smart constructor.+data ByteMatchSet = ByteMatchSet'+ { _bmsName :: !(Maybe Text)+ , _bmsByteMatchSetId :: !Text+ , _bmsByteMatchTuples :: ![ByteMatchTuple]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ByteMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bmsName' - A friendly name or description of the 'ByteMatchSet' . You can't change @Name@ after you create a @ByteMatchSet@ .+--+-- * 'bmsByteMatchSetId' - The @ByteMatchSetId@ for a @ByteMatchSet@ . You use @ByteMatchSetId@ to get information about a @ByteMatchSet@ (see 'GetByteMatchSet' ), update a @ByteMatchSet@ (see 'UpdateByteMatchSet' ), insert a @ByteMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @ByteMatchSet@ from AWS WAF (see 'DeleteByteMatchSet' ). @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+--+-- * 'bmsByteMatchTuples' - Specifies the bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to search for in web requests, the location in requests that you want AWS WAF to search, and other settings.+byteMatchSet+ :: Text -- ^ 'bmsByteMatchSetId'+ -> ByteMatchSet+byteMatchSet pByteMatchSetId_ =+ ByteMatchSet'+ { _bmsName = Nothing+ , _bmsByteMatchSetId = pByteMatchSetId_+ , _bmsByteMatchTuples = mempty+ }+++-- | A friendly name or description of the 'ByteMatchSet' . You can't change @Name@ after you create a @ByteMatchSet@ .+bmsName :: Lens' ByteMatchSet (Maybe Text)+bmsName = lens _bmsName (\ s a -> s{_bmsName = a});++-- | The @ByteMatchSetId@ for a @ByteMatchSet@ . You use @ByteMatchSetId@ to get information about a @ByteMatchSet@ (see 'GetByteMatchSet' ), update a @ByteMatchSet@ (see 'UpdateByteMatchSet' ), insert a @ByteMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @ByteMatchSet@ from AWS WAF (see 'DeleteByteMatchSet' ). @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+bmsByteMatchSetId :: Lens' ByteMatchSet Text+bmsByteMatchSetId = lens _bmsByteMatchSetId (\ s a -> s{_bmsByteMatchSetId = a});++-- | Specifies the bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to search for in web requests, the location in requests that you want AWS WAF to search, and other settings.+bmsByteMatchTuples :: Lens' ByteMatchSet [ByteMatchTuple]+bmsByteMatchTuples = lens _bmsByteMatchTuples (\ s a -> s{_bmsByteMatchTuples = a}) . _Coerce;++instance FromJSON ByteMatchSet where+ parseJSON+ = withObject "ByteMatchSet"+ (\ x ->+ ByteMatchSet' <$>+ (x .:? "Name") <*> (x .: "ByteMatchSetId") <*>+ (x .:? "ByteMatchTuples" .!= mempty))++instance Hashable ByteMatchSet where++instance NFData ByteMatchSet where++-- | Returned by 'ListByteMatchSets' . Each @ByteMatchSetSummary@ object includes the @Name@ and @ByteMatchSetId@ for one 'ByteMatchSet' .+--+--+--+-- /See:/ 'byteMatchSetSummary' smart constructor.+data ByteMatchSetSummary = ByteMatchSetSummary'+ { _bmssByteMatchSetId :: !Text+ , _bmssName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ByteMatchSetSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bmssByteMatchSetId' - The @ByteMatchSetId@ for a @ByteMatchSet@ . You use @ByteMatchSetId@ to get information about a @ByteMatchSet@ , update a @ByteMatchSet@ , remove a @ByteMatchSet@ from a @Rule@ , and delete a @ByteMatchSet@ from AWS WAF. @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+--+-- * 'bmssName' - A friendly name or description of the 'ByteMatchSet' . You can't change @Name@ after you create a @ByteMatchSet@ .+byteMatchSetSummary+ :: Text -- ^ 'bmssByteMatchSetId'+ -> Text -- ^ 'bmssName'+ -> ByteMatchSetSummary+byteMatchSetSummary pByteMatchSetId_ pName_ =+ ByteMatchSetSummary'+ {_bmssByteMatchSetId = pByteMatchSetId_, _bmssName = pName_}+++-- | The @ByteMatchSetId@ for a @ByteMatchSet@ . You use @ByteMatchSetId@ to get information about a @ByteMatchSet@ , update a @ByteMatchSet@ , remove a @ByteMatchSet@ from a @Rule@ , and delete a @ByteMatchSet@ from AWS WAF. @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+bmssByteMatchSetId :: Lens' ByteMatchSetSummary Text+bmssByteMatchSetId = lens _bmssByteMatchSetId (\ s a -> s{_bmssByteMatchSetId = a});++-- | A friendly name or description of the 'ByteMatchSet' . You can't change @Name@ after you create a @ByteMatchSet@ .+bmssName :: Lens' ByteMatchSetSummary Text+bmssName = lens _bmssName (\ s a -> s{_bmssName = a});++instance FromJSON ByteMatchSetSummary where+ parseJSON+ = withObject "ByteMatchSetSummary"+ (\ x ->+ ByteMatchSetSummary' <$>+ (x .: "ByteMatchSetId") <*> (x .: "Name"))++instance Hashable ByteMatchSetSummary where++instance NFData ByteMatchSetSummary where++-- | In an 'UpdateByteMatchSet' request, @ByteMatchSetUpdate@ specifies whether to insert or delete a 'ByteMatchTuple' and includes the settings for the @ByteMatchTuple@ .+--+--+--+-- /See:/ 'byteMatchSetUpdate' smart constructor.+data ByteMatchSetUpdate = ByteMatchSetUpdate'+ { _bmsuAction :: !ChangeAction+ , _bmsuByteMatchTuple :: !ByteMatchTuple+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ByteMatchSetUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bmsuAction' - Specifies whether to insert or delete a 'ByteMatchTuple' .+--+-- * 'bmsuByteMatchTuple' - Information about the part of a web request that you want AWS WAF to inspect and the value that you want AWS WAF to search for. If you specify @DELETE@ for the value of @Action@ , the @ByteMatchTuple@ values must exactly match the values in the @ByteMatchTuple@ that you want to delete from the @ByteMatchSet@ .+byteMatchSetUpdate+ :: ChangeAction -- ^ 'bmsuAction'+ -> ByteMatchTuple -- ^ 'bmsuByteMatchTuple'+ -> ByteMatchSetUpdate+byteMatchSetUpdate pAction_ pByteMatchTuple_ =+ ByteMatchSetUpdate'+ {_bmsuAction = pAction_, _bmsuByteMatchTuple = pByteMatchTuple_}+++-- | Specifies whether to insert or delete a 'ByteMatchTuple' .+bmsuAction :: Lens' ByteMatchSetUpdate ChangeAction+bmsuAction = lens _bmsuAction (\ s a -> s{_bmsuAction = a});++-- | Information about the part of a web request that you want AWS WAF to inspect and the value that you want AWS WAF to search for. If you specify @DELETE@ for the value of @Action@ , the @ByteMatchTuple@ values must exactly match the values in the @ByteMatchTuple@ that you want to delete from the @ByteMatchSet@ .+bmsuByteMatchTuple :: Lens' ByteMatchSetUpdate ByteMatchTuple+bmsuByteMatchTuple = lens _bmsuByteMatchTuple (\ s a -> s{_bmsuByteMatchTuple = a});++instance Hashable ByteMatchSetUpdate where++instance NFData ByteMatchSetUpdate where++instance ToJSON ByteMatchSetUpdate where+ toJSON ByteMatchSetUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _bmsuAction),+ Just ("ByteMatchTuple" .= _bmsuByteMatchTuple)])++-- | The bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to search for in web requests, the location in requests that you want AWS WAF to search, and other settings.+--+--+--+-- /See:/ 'byteMatchTuple' smart constructor.+data ByteMatchTuple = ByteMatchTuple'+ { _bmtFieldToMatch :: !FieldToMatch+ , _bmtTargetString :: !Base64+ , _bmtTextTransformation :: !TextTransformation+ , _bmtPositionalConstraint :: !PositionalConstraint+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'ByteMatchTuple' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'bmtFieldToMatch' - The part of a web request that you want AWS WAF to search, such as a specified header or a query string. For more information, see 'FieldToMatch' .+--+-- * 'bmtTargetString' - The value that you want AWS WAF to search for. AWS WAF searches for the specified string in the part of web requests that you specified in @FieldToMatch@ . The maximum length of the value is 50 bytes. Valid values depend on the values that you specified for @FieldToMatch@ : * @HEADER@ : The value that you want AWS WAF to search for in the request header that you specified in 'FieldToMatch' , for example, the value of the @User-Agent@ or @Referer@ header. * @METHOD@ : The HTTP method, which indicates the type of operation specified in the request. CloudFront supports the following methods: @DELETE@ , @GET@ , @HEAD@ , @OPTIONS@ , @PATCH@ , @POST@ , and @PUT@ . * @QUERY_STRING@ : The value that you want AWS WAF to search for in the query string, which is the part of a URL that appears after a @?@ character. * @URI@ : The value that you want AWS WAF to search for in the part of a URL that identifies a resource, for example, @/images/daily-ad.jpg@ . * @BODY@ : The part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. The request body immediately follows the request headers. Note that only the first @8192@ bytes of the request body are forwarded to AWS WAF for inspection. To allow or block requests based on the length of the body, you can create a size constraint set. For more information, see 'CreateSizeConstraintSet' . If @TargetString@ includes alphabetic characters A-Z and a-z, note that the value is case sensitive. __If you're using the AWS WAF API__ Specify a base64-encoded version of the value. The maximum length of the value before you base64-encode it is 50 bytes. For example, suppose the value of @Type@ is @HEADER@ and the value of @Data@ is @User-Agent@ . If you want to search the @User-Agent@ header for the value @BadBot@ , you base64-encode @BadBot@ using MIME base64 encoding and include the resulting value, @QmFkQm90@ , in the value of @TargetString@ . __If you're using the AWS CLI or one of the AWS SDKs__ The value that you want AWS WAF to search for. The SDK automatically base64 encodes the value.-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.+--+-- * 'bmtTextTransformation' - Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @TargetString@ before inspecting a request for a match. __CMD_LINE__ When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value. __NONE__ Specify @NONE@ if you don't want to perform any text transformations.+--+-- * 'bmtPositionalConstraint' - Within the portion of a web request that you want to search (for example, in the query string, if any), specify where you want AWS WAF to search. Valid values include the following: __CONTAINS__ The specified part of the web request must include the value of @TargetString@ , but the location doesn't matter. __CONTAINS_WORD__ The specified part of the web request must include the value of @TargetString@ , and @TargetString@ must contain only alphanumeric characters or underscore (A-Z, a-z, 0-9, or _). In addition, @TargetString@ must be a word, which means one of the following: * @TargetString@ exactly matches the value of the specified part of the web request, such as the value of a header. * @TargetString@ is at the beginning of the specified part of the web request and is followed by a character other than an alphanumeric character or underscore (_), for example, @BadBot;@ . * @TargetString@ is at the end of the specified part of the web request and is preceded by a character other than an alphanumeric character or underscore (_), for example, @;BadBot@ . * @TargetString@ is in the middle of the specified part of the web request and is preceded and followed by characters other than alphanumeric characters or underscore (_), for example, @-BadBot;@ . __EXACTLY__ The value of the specified part of the web request must exactly match the value of @TargetString@ . __STARTS_WITH__ The value of @TargetString@ must appear at the beginning of the specified part of the web request. __ENDS_WITH__ The value of @TargetString@ must appear at the end of the specified part of the web request.+byteMatchTuple+ :: FieldToMatch -- ^ 'bmtFieldToMatch'+ -> ByteString -- ^ 'bmtTargetString'+ -> TextTransformation -- ^ 'bmtTextTransformation'+ -> PositionalConstraint -- ^ 'bmtPositionalConstraint'+ -> ByteMatchTuple+byteMatchTuple pFieldToMatch_ pTargetString_ pTextTransformation_ pPositionalConstraint_ =+ ByteMatchTuple'+ { _bmtFieldToMatch = pFieldToMatch_+ , _bmtTargetString = _Base64 # pTargetString_+ , _bmtTextTransformation = pTextTransformation_+ , _bmtPositionalConstraint = pPositionalConstraint_+ }+++-- | The part of a web request that you want AWS WAF to search, such as a specified header or a query string. For more information, see 'FieldToMatch' .+bmtFieldToMatch :: Lens' ByteMatchTuple FieldToMatch+bmtFieldToMatch = lens _bmtFieldToMatch (\ s a -> s{_bmtFieldToMatch = a});++-- | The value that you want AWS WAF to search for. AWS WAF searches for the specified string in the part of web requests that you specified in @FieldToMatch@ . The maximum length of the value is 50 bytes. Valid values depend on the values that you specified for @FieldToMatch@ : * @HEADER@ : The value that you want AWS WAF to search for in the request header that you specified in 'FieldToMatch' , for example, the value of the @User-Agent@ or @Referer@ header. * @METHOD@ : The HTTP method, which indicates the type of operation specified in the request. CloudFront supports the following methods: @DELETE@ , @GET@ , @HEAD@ , @OPTIONS@ , @PATCH@ , @POST@ , and @PUT@ . * @QUERY_STRING@ : The value that you want AWS WAF to search for in the query string, which is the part of a URL that appears after a @?@ character. * @URI@ : The value that you want AWS WAF to search for in the part of a URL that identifies a resource, for example, @/images/daily-ad.jpg@ . * @BODY@ : The part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. The request body immediately follows the request headers. Note that only the first @8192@ bytes of the request body are forwarded to AWS WAF for inspection. To allow or block requests based on the length of the body, you can create a size constraint set. For more information, see 'CreateSizeConstraintSet' . If @TargetString@ includes alphabetic characters A-Z and a-z, note that the value is case sensitive. __If you're using the AWS WAF API__ Specify a base64-encoded version of the value. The maximum length of the value before you base64-encode it is 50 bytes. For example, suppose the value of @Type@ is @HEADER@ and the value of @Data@ is @User-Agent@ . If you want to search the @User-Agent@ header for the value @BadBot@ , you base64-encode @BadBot@ using MIME base64 encoding and include the resulting value, @QmFkQm90@ , in the value of @TargetString@ . __If you're using the AWS CLI or one of the AWS SDKs__ The value that you want AWS WAF to search for. The SDK automatically base64 encodes the value.-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.+bmtTargetString :: Lens' ByteMatchTuple ByteString+bmtTargetString = lens _bmtTargetString (\ s a -> s{_bmtTargetString = a}) . _Base64;++-- | Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @TargetString@ before inspecting a request for a match. __CMD_LINE__ When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value. __NONE__ Specify @NONE@ if you don't want to perform any text transformations.+bmtTextTransformation :: Lens' ByteMatchTuple TextTransformation+bmtTextTransformation = lens _bmtTextTransformation (\ s a -> s{_bmtTextTransformation = a});++-- | Within the portion of a web request that you want to search (for example, in the query string, if any), specify where you want AWS WAF to search. Valid values include the following: __CONTAINS__ The specified part of the web request must include the value of @TargetString@ , but the location doesn't matter. __CONTAINS_WORD__ The specified part of the web request must include the value of @TargetString@ , and @TargetString@ must contain only alphanumeric characters or underscore (A-Z, a-z, 0-9, or _). In addition, @TargetString@ must be a word, which means one of the following: * @TargetString@ exactly matches the value of the specified part of the web request, such as the value of a header. * @TargetString@ is at the beginning of the specified part of the web request and is followed by a character other than an alphanumeric character or underscore (_), for example, @BadBot;@ . * @TargetString@ is at the end of the specified part of the web request and is preceded by a character other than an alphanumeric character or underscore (_), for example, @;BadBot@ . * @TargetString@ is in the middle of the specified part of the web request and is preceded and followed by characters other than alphanumeric characters or underscore (_), for example, @-BadBot;@ . __EXACTLY__ The value of the specified part of the web request must exactly match the value of @TargetString@ . __STARTS_WITH__ The value of @TargetString@ must appear at the beginning of the specified part of the web request. __ENDS_WITH__ The value of @TargetString@ must appear at the end of the specified part of the web request.+bmtPositionalConstraint :: Lens' ByteMatchTuple PositionalConstraint+bmtPositionalConstraint = lens _bmtPositionalConstraint (\ s a -> s{_bmtPositionalConstraint = a});++instance FromJSON ByteMatchTuple where+ parseJSON+ = withObject "ByteMatchTuple"+ (\ x ->+ ByteMatchTuple' <$>+ (x .: "FieldToMatch") <*> (x .: "TargetString") <*>+ (x .: "TextTransformation")+ <*> (x .: "PositionalConstraint"))++instance Hashable ByteMatchTuple where++instance NFData ByteMatchTuple where++instance ToJSON ByteMatchTuple where+ toJSON ByteMatchTuple'{..}+ = object+ (catMaybes+ [Just ("FieldToMatch" .= _bmtFieldToMatch),+ Just ("TargetString" .= _bmtTargetString),+ Just+ ("TextTransformation" .= _bmtTextTransformation),+ Just+ ("PositionalConstraint" .=+ _bmtPositionalConstraint)])++-- | Specifies where in a web request to look for @TargetString@ .+--+--+--+-- /See:/ 'fieldToMatch' smart constructor.+data FieldToMatch = FieldToMatch'+ { _ftmData :: !(Maybe Text)+ , _ftmType :: !MatchFieldType+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'FieldToMatch' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ftmData' - When the value of @Type@ is @HEADER@ , enter the name of the header that you want AWS WAF to search, for example, @User-Agent@ or @Referer@ . If the value of @Type@ is any other value, omit @Data@ . The name of the header is not case sensitive.+--+-- * 'ftmType' - The part of the web request that you want AWS WAF to search for a specified string. Parts of a request that you can search include the following: * @HEADER@ : A specified request header, for example, the value of the @User-Agent@ or @Referer@ header. If you choose @HEADER@ for the type, specify the name of the header in @Data@ . * @METHOD@ : The HTTP method, which indicated the type of operation that the request is asking the origin to perform. Amazon CloudFront supports the following methods: @DELETE@ , @GET@ , @HEAD@ , @OPTIONS@ , @PATCH@ , @POST@ , and @PUT@ . * @QUERY_STRING@ : A query string, which is the part of a URL that appears after a @?@ character, if any. * @URI@ : The part of a web request that identifies a resource, for example, @/images/daily-ad.jpg@ . * @BODY@ : The part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. The request body immediately follows the request headers. Note that only the first @8192@ bytes of the request body are forwarded to AWS WAF for inspection. To allow or block requests based on the length of the body, you can create a size constraint set. For more information, see 'CreateSizeConstraintSet' .+fieldToMatch+ :: MatchFieldType -- ^ 'ftmType'+ -> FieldToMatch+fieldToMatch pType_ = FieldToMatch' {_ftmData = Nothing, _ftmType = pType_}+++-- | When the value of @Type@ is @HEADER@ , enter the name of the header that you want AWS WAF to search, for example, @User-Agent@ or @Referer@ . If the value of @Type@ is any other value, omit @Data@ . The name of the header is not case sensitive.+ftmData :: Lens' FieldToMatch (Maybe Text)+ftmData = lens _ftmData (\ s a -> s{_ftmData = a});++-- | The part of the web request that you want AWS WAF to search for a specified string. Parts of a request that you can search include the following: * @HEADER@ : A specified request header, for example, the value of the @User-Agent@ or @Referer@ header. If you choose @HEADER@ for the type, specify the name of the header in @Data@ . * @METHOD@ : The HTTP method, which indicated the type of operation that the request is asking the origin to perform. Amazon CloudFront supports the following methods: @DELETE@ , @GET@ , @HEAD@ , @OPTIONS@ , @PATCH@ , @POST@ , and @PUT@ . * @QUERY_STRING@ : A query string, which is the part of a URL that appears after a @?@ character, if any. * @URI@ : The part of a web request that identifies a resource, for example, @/images/daily-ad.jpg@ . * @BODY@ : The part of a request that contains any additional data that you want to send to your web server as the HTTP request body, such as data from a form. The request body immediately follows the request headers. Note that only the first @8192@ bytes of the request body are forwarded to AWS WAF for inspection. To allow or block requests based on the length of the body, you can create a size constraint set. For more information, see 'CreateSizeConstraintSet' .+ftmType :: Lens' FieldToMatch MatchFieldType+ftmType = lens _ftmType (\ s a -> s{_ftmType = a});++instance FromJSON FieldToMatch where+ parseJSON+ = withObject "FieldToMatch"+ (\ x ->+ FieldToMatch' <$> (x .:? "Data") <*> (x .: "Type"))++instance Hashable FieldToMatch where++instance NFData FieldToMatch where++instance ToJSON FieldToMatch where+ toJSON FieldToMatch'{..}+ = object+ (catMaybes+ [("Data" .=) <$> _ftmData,+ Just ("Type" .= _ftmType)])++-- | The country from which web requests originate that you want AWS WAF to search for.+--+--+--+-- /See:/ 'geoMatchConstraint' smart constructor.+data GeoMatchConstraint = GeoMatchConstraint'+ { _gmcType :: !GeoMatchConstraintType+ , _gmcValue :: !GeoMatchConstraintValue+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeoMatchConstraint' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gmcType' - The type of geographical area you want AWS WAF to search for. Currently @Country@ is the only valid value.+--+-- * 'gmcValue' - The country that you want AWS WAF to search for.+geoMatchConstraint+ :: GeoMatchConstraintType -- ^ 'gmcType'+ -> GeoMatchConstraintValue -- ^ 'gmcValue'+ -> GeoMatchConstraint+geoMatchConstraint pType_ pValue_ =+ GeoMatchConstraint' {_gmcType = pType_, _gmcValue = pValue_}+++-- | The type of geographical area you want AWS WAF to search for. Currently @Country@ is the only valid value.+gmcType :: Lens' GeoMatchConstraint GeoMatchConstraintType+gmcType = lens _gmcType (\ s a -> s{_gmcType = a});++-- | The country that you want AWS WAF to search for.+gmcValue :: Lens' GeoMatchConstraint GeoMatchConstraintValue+gmcValue = lens _gmcValue (\ s a -> s{_gmcValue = a});++instance FromJSON GeoMatchConstraint where+ parseJSON+ = withObject "GeoMatchConstraint"+ (\ x ->+ GeoMatchConstraint' <$>+ (x .: "Type") <*> (x .: "Value"))++instance Hashable GeoMatchConstraint where++instance NFData GeoMatchConstraint where++instance ToJSON GeoMatchConstraint where+ toJSON GeoMatchConstraint'{..}+ = object+ (catMaybes+ [Just ("Type" .= _gmcType),+ Just ("Value" .= _gmcValue)])++-- | Contains one or more countries that AWS WAF will search for.+--+--+--+-- /See:/ 'geoMatchSet' smart constructor.+data GeoMatchSet = GeoMatchSet'+ { _gmsName :: !(Maybe Text)+ , _gmsGeoMatchSetId :: !Text+ , _gmsGeoMatchConstraints :: ![GeoMatchConstraint]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeoMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gmsName' - A friendly name or description of the 'GeoMatchSet' . You can't change the name of an @GeoMatchSet@ after you create it.+--+-- * 'gmsGeoMatchSetId' - The @GeoMatchSetId@ for an @GeoMatchSet@ . You use @GeoMatchSetId@ to get information about a @GeoMatchSet@ (see 'GeoMatchSet' ), update a @GeoMatchSet@ (see 'UpdateGeoMatchSet' ), insert a @GeoMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @GeoMatchSet@ from AWS WAF (see 'DeleteGeoMatchSet' ). @GeoMatchSetId@ is returned by 'CreateGeoMatchSet' and by 'ListGeoMatchSets' .+--+-- * 'gmsGeoMatchConstraints' - An array of 'GeoMatchConstraint' objects, which contain the country that you want AWS WAF to search for.+geoMatchSet+ :: Text -- ^ 'gmsGeoMatchSetId'+ -> GeoMatchSet+geoMatchSet pGeoMatchSetId_ =+ GeoMatchSet'+ { _gmsName = Nothing+ , _gmsGeoMatchSetId = pGeoMatchSetId_+ , _gmsGeoMatchConstraints = mempty+ }+++-- | A friendly name or description of the 'GeoMatchSet' . You can't change the name of an @GeoMatchSet@ after you create it.+gmsName :: Lens' GeoMatchSet (Maybe Text)+gmsName = lens _gmsName (\ s a -> s{_gmsName = a});++-- | The @GeoMatchSetId@ for an @GeoMatchSet@ . You use @GeoMatchSetId@ to get information about a @GeoMatchSet@ (see 'GeoMatchSet' ), update a @GeoMatchSet@ (see 'UpdateGeoMatchSet' ), insert a @GeoMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @GeoMatchSet@ from AWS WAF (see 'DeleteGeoMatchSet' ). @GeoMatchSetId@ is returned by 'CreateGeoMatchSet' and by 'ListGeoMatchSets' .+gmsGeoMatchSetId :: Lens' GeoMatchSet Text+gmsGeoMatchSetId = lens _gmsGeoMatchSetId (\ s a -> s{_gmsGeoMatchSetId = a});++-- | An array of 'GeoMatchConstraint' objects, which contain the country that you want AWS WAF to search for.+gmsGeoMatchConstraints :: Lens' GeoMatchSet [GeoMatchConstraint]+gmsGeoMatchConstraints = lens _gmsGeoMatchConstraints (\ s a -> s{_gmsGeoMatchConstraints = a}) . _Coerce;++instance FromJSON GeoMatchSet where+ parseJSON+ = withObject "GeoMatchSet"+ (\ x ->+ GeoMatchSet' <$>+ (x .:? "Name") <*> (x .: "GeoMatchSetId") <*>+ (x .:? "GeoMatchConstraints" .!= mempty))++instance Hashable GeoMatchSet where++instance NFData GeoMatchSet where++-- | Contains the identifier and the name of the @GeoMatchSet@ .+--+--+--+-- /See:/ 'geoMatchSetSummary' smart constructor.+data GeoMatchSetSummary = GeoMatchSetSummary'+ { _gmssGeoMatchSetId :: !Text+ , _gmssName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeoMatchSetSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gmssGeoMatchSetId' - The @GeoMatchSetId@ for an 'GeoMatchSet' . You can use @GeoMatchSetId@ in a 'GetGeoMatchSet' request to get detailed information about an 'GeoMatchSet' .+--+-- * 'gmssName' - A friendly name or description of the 'GeoMatchSet' . You can't change the name of an @GeoMatchSet@ after you create it.+geoMatchSetSummary+ :: Text -- ^ 'gmssGeoMatchSetId'+ -> Text -- ^ 'gmssName'+ -> GeoMatchSetSummary+geoMatchSetSummary pGeoMatchSetId_ pName_ =+ GeoMatchSetSummary' {_gmssGeoMatchSetId = pGeoMatchSetId_, _gmssName = pName_}+++-- | The @GeoMatchSetId@ for an 'GeoMatchSet' . You can use @GeoMatchSetId@ in a 'GetGeoMatchSet' request to get detailed information about an 'GeoMatchSet' .+gmssGeoMatchSetId :: Lens' GeoMatchSetSummary Text+gmssGeoMatchSetId = lens _gmssGeoMatchSetId (\ s a -> s{_gmssGeoMatchSetId = a});++-- | A friendly name or description of the 'GeoMatchSet' . You can't change the name of an @GeoMatchSet@ after you create it.+gmssName :: Lens' GeoMatchSetSummary Text+gmssName = lens _gmssName (\ s a -> s{_gmssName = a});++instance FromJSON GeoMatchSetSummary where+ parseJSON+ = withObject "GeoMatchSetSummary"+ (\ x ->+ GeoMatchSetSummary' <$>+ (x .: "GeoMatchSetId") <*> (x .: "Name"))++instance Hashable GeoMatchSetSummary where++instance NFData GeoMatchSetSummary where++-- | Specifies the type of update to perform to an 'GeoMatchSet' with 'UpdateGeoMatchSet' .+--+--+--+-- /See:/ 'geoMatchSetUpdate' smart constructor.+data GeoMatchSetUpdate = GeoMatchSetUpdate'+ { _gmsuAction :: !ChangeAction+ , _gmsuGeoMatchConstraint :: !GeoMatchConstraint+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'GeoMatchSetUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gmsuAction' - Specifies whether to insert or delete a country with 'UpdateGeoMatchSet' .+--+-- * 'gmsuGeoMatchConstraint' - The country from which web requests originate that you want AWS WAF to search for.+geoMatchSetUpdate+ :: ChangeAction -- ^ 'gmsuAction'+ -> GeoMatchConstraint -- ^ 'gmsuGeoMatchConstraint'+ -> GeoMatchSetUpdate+geoMatchSetUpdate pAction_ pGeoMatchConstraint_ =+ GeoMatchSetUpdate'+ {_gmsuAction = pAction_, _gmsuGeoMatchConstraint = pGeoMatchConstraint_}+++-- | Specifies whether to insert or delete a country with 'UpdateGeoMatchSet' .+gmsuAction :: Lens' GeoMatchSetUpdate ChangeAction+gmsuAction = lens _gmsuAction (\ s a -> s{_gmsuAction = a});++-- | The country from which web requests originate that you want AWS WAF to search for.+gmsuGeoMatchConstraint :: Lens' GeoMatchSetUpdate GeoMatchConstraint+gmsuGeoMatchConstraint = lens _gmsuGeoMatchConstraint (\ s a -> s{_gmsuGeoMatchConstraint = a});++instance Hashable GeoMatchSetUpdate where++instance NFData GeoMatchSetUpdate where++instance ToJSON GeoMatchSetUpdate where+ toJSON GeoMatchSetUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _gmsuAction),+ Just+ ("GeoMatchConstraint" .= _gmsuGeoMatchConstraint)])++-- | The response from a 'GetSampledRequests' request includes an @HTTPHeader@ complex type that appears as @Headers@ in the response syntax. @HTTPHeader@ contains the names and values of all of the headers that appear in one of the web requests that were returned by @GetSampledRequests@ .+--+--+--+-- /See:/ 'hTTPHeader' smart constructor.+data HTTPHeader = HTTPHeader'+ { _httphValue :: !(Maybe Text)+ , _httphName :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'HTTPHeader' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'httphValue' - The value of one of the headers in the sampled web request.+--+-- * 'httphName' - The name of one of the headers in the sampled web request.+hTTPHeader+ :: HTTPHeader+hTTPHeader = HTTPHeader' {_httphValue = Nothing, _httphName = Nothing}+++-- | The value of one of the headers in the sampled web request.+httphValue :: Lens' HTTPHeader (Maybe Text)+httphValue = lens _httphValue (\ s a -> s{_httphValue = a});++-- | The name of one of the headers in the sampled web request.+httphName :: Lens' HTTPHeader (Maybe Text)+httphName = lens _httphName (\ s a -> s{_httphName = a});++instance FromJSON HTTPHeader where+ parseJSON+ = withObject "HTTPHeader"+ (\ x ->+ HTTPHeader' <$> (x .:? "Value") <*> (x .:? "Name"))++instance Hashable HTTPHeader where++instance NFData HTTPHeader where++-- | The response from a 'GetSampledRequests' request includes an @HTTPRequest@ complex type that appears as @Request@ in the response syntax. @HTTPRequest@ contains information about one of the web requests that were returned by @GetSampledRequests@ .+--+--+--+-- /See:/ 'hTTPRequest' smart constructor.+data HTTPRequest = HTTPRequest'+ { _httprHTTPVersion :: !(Maybe Text)+ , _httprCountry :: !(Maybe Text)+ , _httprURI :: !(Maybe Text)+ , _httprHeaders :: !(Maybe [HTTPHeader])+ , _httprMethod :: !(Maybe Text)+ , _httprClientIP :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'HTTPRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'httprHTTPVersion' - The HTTP version specified in the sampled web request, for example, @HTTP/1.1@ .+--+-- * 'httprCountry' - The two-letter country code for the country that the request originated from. For a current list of country codes, see the Wikipedia entry <https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO 3166-1 alpha-2> .+--+-- * 'httprURI' - The part of a web request that identifies the resource, for example, @/images/daily-ad.jpg@ .+--+-- * 'httprHeaders' - A complex type that contains two values for each header in the sampled web request: the name of the header and the value of the header.+--+-- * 'httprMethod' - The HTTP method specified in the sampled web request. CloudFront supports the following methods: @DELETE@ , @GET@ , @HEAD@ , @OPTIONS@ , @PATCH@ , @POST@ , and @PUT@ .+--+-- * 'httprClientIP' - The IP address that the request originated from. If the @WebACL@ is associated with a CloudFront distribution, this is the value of one of the following fields in CloudFront access logs: * @c-ip@ , if the viewer did not use an HTTP proxy or a load balancer to send the request * @x-forwarded-for@ , if the viewer did use an HTTP proxy or a load balancer to send the request+hTTPRequest+ :: HTTPRequest+hTTPRequest =+ HTTPRequest'+ { _httprHTTPVersion = Nothing+ , _httprCountry = Nothing+ , _httprURI = Nothing+ , _httprHeaders = Nothing+ , _httprMethod = Nothing+ , _httprClientIP = Nothing+ }+++-- | The HTTP version specified in the sampled web request, for example, @HTTP/1.1@ .+httprHTTPVersion :: Lens' HTTPRequest (Maybe Text)+httprHTTPVersion = lens _httprHTTPVersion (\ s a -> s{_httprHTTPVersion = a});++-- | The two-letter country code for the country that the request originated from. For a current list of country codes, see the Wikipedia entry <https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO 3166-1 alpha-2> .+httprCountry :: Lens' HTTPRequest (Maybe Text)+httprCountry = lens _httprCountry (\ s a -> s{_httprCountry = a});++-- | The part of a web request that identifies the resource, for example, @/images/daily-ad.jpg@ .+httprURI :: Lens' HTTPRequest (Maybe Text)+httprURI = lens _httprURI (\ s a -> s{_httprURI = a});++-- | A complex type that contains two values for each header in the sampled web request: the name of the header and the value of the header.+httprHeaders :: Lens' HTTPRequest [HTTPHeader]+httprHeaders = lens _httprHeaders (\ s a -> s{_httprHeaders = a}) . _Default . _Coerce;++-- | The HTTP method specified in the sampled web request. CloudFront supports the following methods: @DELETE@ , @GET@ , @HEAD@ , @OPTIONS@ , @PATCH@ , @POST@ , and @PUT@ .+httprMethod :: Lens' HTTPRequest (Maybe Text)+httprMethod = lens _httprMethod (\ s a -> s{_httprMethod = a});++-- | The IP address that the request originated from. If the @WebACL@ is associated with a CloudFront distribution, this is the value of one of the following fields in CloudFront access logs: * @c-ip@ , if the viewer did not use an HTTP proxy or a load balancer to send the request * @x-forwarded-for@ , if the viewer did use an HTTP proxy or a load balancer to send the request+httprClientIP :: Lens' HTTPRequest (Maybe Text)+httprClientIP = lens _httprClientIP (\ s a -> s{_httprClientIP = a});++instance FromJSON HTTPRequest where+ parseJSON+ = withObject "HTTPRequest"+ (\ x ->+ HTTPRequest' <$>+ (x .:? "HTTPVersion") <*> (x .:? "Country") <*>+ (x .:? "URI")+ <*> (x .:? "Headers" .!= mempty)+ <*> (x .:? "Method")+ <*> (x .:? "ClientIP"))++instance Hashable HTTPRequest where++instance NFData HTTPRequest where++-- | Contains one or more IP addresses or blocks of IP addresses specified in Classless Inter-Domain Routing (CIDR) notation. AWS WAF supports /8, /16, /24, and /32 IP address ranges for IPv4, and /24, /32, /48, /56, /64 and /128 for IPv6.+--+--+-- To specify an individual IP address, you specify the four-part IP address followed by a @/32@ , for example, 192.0.2.0/31. To block a range of IP addresses, you can specify a @/128@ , @/64@ , @/56@ , @/48@ , @/32@ , @/24@ , @/16@ , or @/8@ CIDR. For more information about CIDR notation, see the Wikipedia entry <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing Classless Inter-Domain Routing> .+--+--+-- /See:/ 'ipSet' smart constructor.+data IPSet = IPSet'+ { _isName :: !(Maybe Text)+ , _isIPSetId :: !Text+ , _isIPSetDescriptors :: ![IPSetDescriptor]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'IPSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'isName' - A friendly name or description of the 'IPSet' . You can't change the name of an @IPSet@ after you create it.+--+-- * 'isIPSetId' - The @IPSetId@ for an @IPSet@ . You use @IPSetId@ to get information about an @IPSet@ (see 'GetIPSet' ), update an @IPSet@ (see 'UpdateIPSet' ), insert an @IPSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete an @IPSet@ from AWS WAF (see 'DeleteIPSet' ). @IPSetId@ is returned by 'CreateIPSet' and by 'ListIPSets' .+--+-- * 'isIPSetDescriptors' - The IP address type (@IPV4@ or @IPV6@ ) and the IP address range (in CIDR notation) that web requests originate from. If the @WebACL@ is associated with a CloudFront distribution and the viewer did not use an HTTP proxy or a load balancer to send the request, this is the value of the c-ip field in the CloudFront access logs.+ipSet+ :: Text -- ^ 'isIPSetId'+ -> IPSet+ipSet pIPSetId_ =+ IPSet'+ {_isName = Nothing, _isIPSetId = pIPSetId_, _isIPSetDescriptors = mempty}+++-- | A friendly name or description of the 'IPSet' . You can't change the name of an @IPSet@ after you create it.+isName :: Lens' IPSet (Maybe Text)+isName = lens _isName (\ s a -> s{_isName = a});++-- | The @IPSetId@ for an @IPSet@ . You use @IPSetId@ to get information about an @IPSet@ (see 'GetIPSet' ), update an @IPSet@ (see 'UpdateIPSet' ), insert an @IPSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete an @IPSet@ from AWS WAF (see 'DeleteIPSet' ). @IPSetId@ is returned by 'CreateIPSet' and by 'ListIPSets' .+isIPSetId :: Lens' IPSet Text+isIPSetId = lens _isIPSetId (\ s a -> s{_isIPSetId = a});++-- | The IP address type (@IPV4@ or @IPV6@ ) and the IP address range (in CIDR notation) that web requests originate from. If the @WebACL@ is associated with a CloudFront distribution and the viewer did not use an HTTP proxy or a load balancer to send the request, this is the value of the c-ip field in the CloudFront access logs.+isIPSetDescriptors :: Lens' IPSet [IPSetDescriptor]+isIPSetDescriptors = lens _isIPSetDescriptors (\ s a -> s{_isIPSetDescriptors = a}) . _Coerce;++instance FromJSON IPSet where+ parseJSON+ = withObject "IPSet"+ (\ x ->+ IPSet' <$>+ (x .:? "Name") <*> (x .: "IPSetId") <*>+ (x .:? "IPSetDescriptors" .!= mempty))++instance Hashable IPSet where++instance NFData IPSet where++-- | Specifies the IP address type (@IPV4@ or @IPV6@ ) and the IP address range (in CIDR format) that web requests originate from.+--+--+--+-- /See:/ 'ipSetDescriptor' smart constructor.+data IPSetDescriptor = IPSetDescriptor'+ { _isdType :: !IPSetDescriptorType+ , _isdValue :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'IPSetDescriptor' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'isdType' - Specify @IPV4@ or @IPV6@ .+--+-- * 'isdValue' - Specify an IPv4 address by using CIDR notation. For example: * To configure AWS WAF to allow, block, or count requests that originated from the IP address 192.0.2.44, specify @192.0.2.44/32@ . * To configure AWS WAF to allow, block, or count requests that originated from IP addresses from 192.0.2.0 to 192.0.2.255, specify @192.0.2.0/24@ . For more information about CIDR notation, see the Wikipedia entry <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing Classless Inter-Domain Routing> . Specify an IPv6 address by using CIDR notation. For example: * To configure AWS WAF to allow, block, or count requests that originated from the IP address 1111:0000:0000:0000:0000:0000:0000:0111, specify @1111:0000:0000:0000:0000:0000:0000:0111/128@ . * To configure AWS WAF to allow, block, or count requests that originated from IP addresses 1111:0000:0000:0000:0000:0000:0000:0000 to 1111:0000:0000:0000:ffff:ffff:ffff:ffff, specify @1111:0000:0000:0000:0000:0000:0000:0000/64@ .+ipSetDescriptor+ :: IPSetDescriptorType -- ^ 'isdType'+ -> Text -- ^ 'isdValue'+ -> IPSetDescriptor+ipSetDescriptor pType_ pValue_ =+ IPSetDescriptor' {_isdType = pType_, _isdValue = pValue_}+++-- | Specify @IPV4@ or @IPV6@ .+isdType :: Lens' IPSetDescriptor IPSetDescriptorType+isdType = lens _isdType (\ s a -> s{_isdType = a});++-- | Specify an IPv4 address by using CIDR notation. For example: * To configure AWS WAF to allow, block, or count requests that originated from the IP address 192.0.2.44, specify @192.0.2.44/32@ . * To configure AWS WAF to allow, block, or count requests that originated from IP addresses from 192.0.2.0 to 192.0.2.255, specify @192.0.2.0/24@ . For more information about CIDR notation, see the Wikipedia entry <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing Classless Inter-Domain Routing> . Specify an IPv6 address by using CIDR notation. For example: * To configure AWS WAF to allow, block, or count requests that originated from the IP address 1111:0000:0000:0000:0000:0000:0000:0111, specify @1111:0000:0000:0000:0000:0000:0000:0111/128@ . * To configure AWS WAF to allow, block, or count requests that originated from IP addresses 1111:0000:0000:0000:0000:0000:0000:0000 to 1111:0000:0000:0000:ffff:ffff:ffff:ffff, specify @1111:0000:0000:0000:0000:0000:0000:0000/64@ .+isdValue :: Lens' IPSetDescriptor Text+isdValue = lens _isdValue (\ s a -> s{_isdValue = a});++instance FromJSON IPSetDescriptor where+ parseJSON+ = withObject "IPSetDescriptor"+ (\ x ->+ IPSetDescriptor' <$>+ (x .: "Type") <*> (x .: "Value"))++instance Hashable IPSetDescriptor where++instance NFData IPSetDescriptor where++instance ToJSON IPSetDescriptor where+ toJSON IPSetDescriptor'{..}+ = object+ (catMaybes+ [Just ("Type" .= _isdType),+ Just ("Value" .= _isdValue)])++-- | Contains the identifier and the name of the @IPSet@ .+--+--+--+-- /See:/ 'ipSetSummary' smart constructor.+data IPSetSummary = IPSetSummary'+ { _issIPSetId :: !Text+ , _issName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'IPSetSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'issIPSetId' - The @IPSetId@ for an 'IPSet' . You can use @IPSetId@ in a 'GetIPSet' request to get detailed information about an 'IPSet' .+--+-- * 'issName' - A friendly name or description of the 'IPSet' . You can't change the name of an @IPSet@ after you create it.+ipSetSummary+ :: Text -- ^ 'issIPSetId'+ -> Text -- ^ 'issName'+ -> IPSetSummary+ipSetSummary pIPSetId_ pName_ =+ IPSetSummary' {_issIPSetId = pIPSetId_, _issName = pName_}+++-- | The @IPSetId@ for an 'IPSet' . You can use @IPSetId@ in a 'GetIPSet' request to get detailed information about an 'IPSet' .+issIPSetId :: Lens' IPSetSummary Text+issIPSetId = lens _issIPSetId (\ s a -> s{_issIPSetId = a});++-- | A friendly name or description of the 'IPSet' . You can't change the name of an @IPSet@ after you create it.+issName :: Lens' IPSetSummary Text+issName = lens _issName (\ s a -> s{_issName = a});++instance FromJSON IPSetSummary where+ parseJSON+ = withObject "IPSetSummary"+ (\ x ->+ IPSetSummary' <$> (x .: "IPSetId") <*> (x .: "Name"))++instance Hashable IPSetSummary where++instance NFData IPSetSummary where++-- | Specifies the type of update to perform to an 'IPSet' with 'UpdateIPSet' .+--+--+--+-- /See:/ 'ipSetUpdate' smart constructor.+data IPSetUpdate = IPSetUpdate'+ { _isuAction :: !ChangeAction+ , _isuIPSetDescriptor :: !IPSetDescriptor+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'IPSetUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'isuAction' - Specifies whether to insert or delete an IP address with 'UpdateIPSet' .+--+-- * 'isuIPSetDescriptor' - The IP address type (@IPV4@ or @IPV6@ ) and the IP address range (in CIDR notation) that web requests originate from.+ipSetUpdate+ :: ChangeAction -- ^ 'isuAction'+ -> IPSetDescriptor -- ^ 'isuIPSetDescriptor'+ -> IPSetUpdate+ipSetUpdate pAction_ pIPSetDescriptor_ =+ IPSetUpdate' {_isuAction = pAction_, _isuIPSetDescriptor = pIPSetDescriptor_}+++-- | Specifies whether to insert or delete an IP address with 'UpdateIPSet' .+isuAction :: Lens' IPSetUpdate ChangeAction+isuAction = lens _isuAction (\ s a -> s{_isuAction = a});++-- | The IP address type (@IPV4@ or @IPV6@ ) and the IP address range (in CIDR notation) that web requests originate from.+isuIPSetDescriptor :: Lens' IPSetUpdate IPSetDescriptor+isuIPSetDescriptor = lens _isuIPSetDescriptor (\ s a -> s{_isuIPSetDescriptor = a});++instance Hashable IPSetUpdate where++instance NFData IPSetUpdate where++instance ToJSON IPSetUpdate where+ toJSON IPSetUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _isuAction),+ Just ("IPSetDescriptor" .= _isuIPSetDescriptor)])++-- | Specifies the 'ByteMatchSet' , 'IPSet' , 'SqlInjectionMatchSet' , 'XssMatchSet' , 'RegexMatchSet' , 'GeoMatchSet' , and 'SizeConstraintSet' objects that you want to add to a @Rule@ and, for each object, indicates whether you want to negate the settings, for example, requests that do NOT originate from the IP address 192.0.2.44.+--+--+--+-- /See:/ 'predicate' smart constructor.+data Predicate = Predicate'+ { _pNegated :: !Bool+ , _pType :: !PredicateType+ , _pDataId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Predicate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pNegated' - Set @Negated@ to @False@ if you want AWS WAF to allow, block, or count requests based on the settings in the specified 'ByteMatchSet' , 'IPSet' , 'SqlInjectionMatchSet' , 'XssMatchSet' , 'RegexMatchSet' , 'GeoMatchSet' , or 'SizeConstraintSet' . For example, if an @IPSet@ includes the IP address @192.0.2.44@ , AWS WAF will allow or block requests based on that IP address. Set @Negated@ to @True@ if you want AWS WAF to allow or block a request based on the negation of the settings in the 'ByteMatchSet' , 'IPSet' , 'SqlInjectionMatchSet' , 'XssMatchSet' , 'RegexMatchSet' , 'GeoMatchSet' , or 'SizeConstraintSet' . For example, if an @IPSet@ includes the IP address @192.0.2.44@ , AWS WAF will allow, block, or count requests based on all IP addresses /except/ @192.0.2.44@ .+--+-- * 'pType' - The type of predicate in a @Rule@ , such as @ByteMatchSet@ or @IPSet@ .+--+-- * 'pDataId' - A unique identifier for a predicate in a @Rule@ , such as @ByteMatchSetId@ or @IPSetId@ . The ID is returned by the corresponding @Create@ or @List@ command.+predicate+ :: Bool -- ^ 'pNegated'+ -> PredicateType -- ^ 'pType'+ -> Text -- ^ 'pDataId'+ -> Predicate+predicate pNegated_ pType_ pDataId_ =+ Predicate' {_pNegated = pNegated_, _pType = pType_, _pDataId = pDataId_}+++-- | Set @Negated@ to @False@ if you want AWS WAF to allow, block, or count requests based on the settings in the specified 'ByteMatchSet' , 'IPSet' , 'SqlInjectionMatchSet' , 'XssMatchSet' , 'RegexMatchSet' , 'GeoMatchSet' , or 'SizeConstraintSet' . For example, if an @IPSet@ includes the IP address @192.0.2.44@ , AWS WAF will allow or block requests based on that IP address. Set @Negated@ to @True@ if you want AWS WAF to allow or block a request based on the negation of the settings in the 'ByteMatchSet' , 'IPSet' , 'SqlInjectionMatchSet' , 'XssMatchSet' , 'RegexMatchSet' , 'GeoMatchSet' , or 'SizeConstraintSet' . For example, if an @IPSet@ includes the IP address @192.0.2.44@ , AWS WAF will allow, block, or count requests based on all IP addresses /except/ @192.0.2.44@ .+pNegated :: Lens' Predicate Bool+pNegated = lens _pNegated (\ s a -> s{_pNegated = a});++-- | The type of predicate in a @Rule@ , such as @ByteMatchSet@ or @IPSet@ .+pType :: Lens' Predicate PredicateType+pType = lens _pType (\ s a -> s{_pType = a});++-- | A unique identifier for a predicate in a @Rule@ , such as @ByteMatchSetId@ or @IPSetId@ . The ID is returned by the corresponding @Create@ or @List@ command.+pDataId :: Lens' Predicate Text+pDataId = lens _pDataId (\ s a -> s{_pDataId = a});++instance FromJSON Predicate where+ parseJSON+ = withObject "Predicate"+ (\ x ->+ Predicate' <$>+ (x .: "Negated") <*> (x .: "Type") <*>+ (x .: "DataId"))++instance Hashable Predicate where++instance NFData Predicate where++instance ToJSON Predicate where+ toJSON Predicate'{..}+ = object+ (catMaybes+ [Just ("Negated" .= _pNegated),+ Just ("Type" .= _pType),+ Just ("DataId" .= _pDataId)])++-- | A @RateBasedRule@ is identical to a regular 'Rule' , with one addition: a @RateBasedRule@ counts the number of requests that arrive from a specified IP address every five minutes. For example, based on recent requests that you've seen from an attacker, you might create a @RateBasedRule@ that includes the following conditions:+--+--+-- * The requests come from 192.0.2.44.+--+-- * They contain the value @BadBot@ in the @User-Agent@ header.+--+--+--+-- In the rule, you also define the rate limit as 15,000.+--+-- Requests that meet both of these conditions and exceed 15,000 requests every five minutes trigger the rule's action (block or count), which is defined in the web ACL.+--+--+-- /See:/ 'rateBasedRule' smart constructor.+data RateBasedRule = RateBasedRule'+ { _rbrMetricName :: !(Maybe Text)+ , _rbrName :: !(Maybe Text)+ , _rbrRuleId :: !Text+ , _rbrMatchPredicates :: ![Predicate]+ , _rbrRateKey :: !RateKey+ , _rbrRateLimit :: !Nat+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RateBasedRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rbrMetricName' - A friendly name or description for the metrics for a @RateBasedRule@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the @RateBasedRule@ .+--+-- * 'rbrName' - A friendly name or description for a @RateBasedRule@ . You can't change the name of a @RateBasedRule@ after you create it.+--+-- * 'rbrRuleId' - A unique identifier for a @RateBasedRule@ . You use @RuleId@ to get more information about a @RateBasedRule@ (see 'GetRateBasedRule' ), update a @RateBasedRule@ (see 'UpdateRateBasedRule' ), insert a @RateBasedRule@ into a @WebACL@ or delete one from a @WebACL@ (see 'UpdateWebACL' ), or delete a @RateBasedRule@ from AWS WAF (see 'DeleteRateBasedRule' ).+--+-- * 'rbrMatchPredicates' - The @Predicates@ object contains one @Predicate@ element for each 'ByteMatchSet' , 'IPSet' , or 'SqlInjectionMatchSet' object that you want to include in a @RateBasedRule@ .+--+-- * 'rbrRateKey' - The field that AWS WAF uses to determine if requests are likely arriving from single source and thus subject to rate monitoring. The only valid value for @RateKey@ is @IP@ . @IP@ indicates that requests arriving from the same IP address are subject to the @RateLimit@ that is specified in the @RateBasedRule@ .+--+-- * 'rbrRateLimit' - The maximum number of requests, which have an identical value in the field specified by the @RateKey@ , allowed in a five-minute period. If the number of requests exceeds the @RateLimit@ and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule.+rateBasedRule+ :: Text -- ^ 'rbrRuleId'+ -> RateKey -- ^ 'rbrRateKey'+ -> Natural -- ^ 'rbrRateLimit'+ -> RateBasedRule+rateBasedRule pRuleId_ pRateKey_ pRateLimit_ =+ RateBasedRule'+ { _rbrMetricName = Nothing+ , _rbrName = Nothing+ , _rbrRuleId = pRuleId_+ , _rbrMatchPredicates = mempty+ , _rbrRateKey = pRateKey_+ , _rbrRateLimit = _Nat # pRateLimit_+ }+++-- | A friendly name or description for the metrics for a @RateBasedRule@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change the name of the metric after you create the @RateBasedRule@ .+rbrMetricName :: Lens' RateBasedRule (Maybe Text)+rbrMetricName = lens _rbrMetricName (\ s a -> s{_rbrMetricName = a});++-- | A friendly name or description for a @RateBasedRule@ . You can't change the name of a @RateBasedRule@ after you create it.+rbrName :: Lens' RateBasedRule (Maybe Text)+rbrName = lens _rbrName (\ s a -> s{_rbrName = a});++-- | A unique identifier for a @RateBasedRule@ . You use @RuleId@ to get more information about a @RateBasedRule@ (see 'GetRateBasedRule' ), update a @RateBasedRule@ (see 'UpdateRateBasedRule' ), insert a @RateBasedRule@ into a @WebACL@ or delete one from a @WebACL@ (see 'UpdateWebACL' ), or delete a @RateBasedRule@ from AWS WAF (see 'DeleteRateBasedRule' ).+rbrRuleId :: Lens' RateBasedRule Text+rbrRuleId = lens _rbrRuleId (\ s a -> s{_rbrRuleId = a});++-- | The @Predicates@ object contains one @Predicate@ element for each 'ByteMatchSet' , 'IPSet' , or 'SqlInjectionMatchSet' object that you want to include in a @RateBasedRule@ .+rbrMatchPredicates :: Lens' RateBasedRule [Predicate]+rbrMatchPredicates = lens _rbrMatchPredicates (\ s a -> s{_rbrMatchPredicates = a}) . _Coerce;++-- | The field that AWS WAF uses to determine if requests are likely arriving from single source and thus subject to rate monitoring. The only valid value for @RateKey@ is @IP@ . @IP@ indicates that requests arriving from the same IP address are subject to the @RateLimit@ that is specified in the @RateBasedRule@ .+rbrRateKey :: Lens' RateBasedRule RateKey+rbrRateKey = lens _rbrRateKey (\ s a -> s{_rbrRateKey = a});++-- | The maximum number of requests, which have an identical value in the field specified by the @RateKey@ , allowed in a five-minute period. If the number of requests exceeds the @RateLimit@ and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule.+rbrRateLimit :: Lens' RateBasedRule Natural+rbrRateLimit = lens _rbrRateLimit (\ s a -> s{_rbrRateLimit = a}) . _Nat;++instance FromJSON RateBasedRule where+ parseJSON+ = withObject "RateBasedRule"+ (\ x ->+ RateBasedRule' <$>+ (x .:? "MetricName") <*> (x .:? "Name") <*>+ (x .: "RuleId")+ <*> (x .:? "MatchPredicates" .!= mempty)+ <*> (x .: "RateKey")+ <*> (x .: "RateLimit"))++instance Hashable RateBasedRule where++instance NFData RateBasedRule where++-- | In a 'GetRegexMatchSet' request, @RegexMatchSet@ is a complex type that contains the @RegexMatchSetId@ and @Name@ of a @RegexMatchSet@ , and the values that you specified when you updated the @RegexMatchSet@ .+--+--+-- The values are contained in a @RegexMatchTuple@ object, which specify the parts of web requests that you want AWS WAF to inspect and the values that you want AWS WAF to search for. If a @RegexMatchSet@ contains more than one @RegexMatchTuple@ object, a request needs to match the settings in only one @ByteMatchTuple@ to be considered a match.+--+--+-- /See:/ 'regexMatchSet' smart constructor.+data RegexMatchSet = RegexMatchSet'+ { _rmsName :: !(Maybe Text)+ , _rmsRegexMatchTuples :: !(Maybe [RegexMatchTuple])+ , _rmsRegexMatchSetId :: !(Maybe Text)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RegexMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rmsName' - A friendly name or description of the 'RegexMatchSet' . You can't change @Name@ after you create a @RegexMatchSet@ .+--+-- * 'rmsRegexMatchTuples' - Contains an array of 'RegexMatchTuple' objects. Each @RegexMatchTuple@ object contains: * The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the @User-Agent@ header. * The identifier of the pattern (a regular expression) that you want AWS WAF to look for. For more information, see 'RegexPatternSet' . * Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for the specified string.+--+-- * 'rmsRegexMatchSetId' - The @RegexMatchSetId@ for a @RegexMatchSet@ . You use @RegexMatchSetId@ to get information about a @RegexMatchSet@ (see 'GetRegexMatchSet' ), update a @RegexMatchSet@ (see 'UpdateRegexMatchSet' ), insert a @RegexMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @RegexMatchSet@ from AWS WAF (see 'DeleteRegexMatchSet' ). @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+regexMatchSet+ :: RegexMatchSet+regexMatchSet =+ RegexMatchSet'+ { _rmsName = Nothing+ , _rmsRegexMatchTuples = Nothing+ , _rmsRegexMatchSetId = Nothing+ }+++-- | A friendly name or description of the 'RegexMatchSet' . You can't change @Name@ after you create a @RegexMatchSet@ .+rmsName :: Lens' RegexMatchSet (Maybe Text)+rmsName = lens _rmsName (\ s a -> s{_rmsName = a});++-- | Contains an array of 'RegexMatchTuple' objects. Each @RegexMatchTuple@ object contains: * The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the @User-Agent@ header. * The identifier of the pattern (a regular expression) that you want AWS WAF to look for. For more information, see 'RegexPatternSet' . * Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for the specified string.+rmsRegexMatchTuples :: Lens' RegexMatchSet [RegexMatchTuple]+rmsRegexMatchTuples = lens _rmsRegexMatchTuples (\ s a -> s{_rmsRegexMatchTuples = a}) . _Default . _Coerce;++-- | The @RegexMatchSetId@ for a @RegexMatchSet@ . You use @RegexMatchSetId@ to get information about a @RegexMatchSet@ (see 'GetRegexMatchSet' ), update a @RegexMatchSet@ (see 'UpdateRegexMatchSet' ), insert a @RegexMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @RegexMatchSet@ from AWS WAF (see 'DeleteRegexMatchSet' ). @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+rmsRegexMatchSetId :: Lens' RegexMatchSet (Maybe Text)+rmsRegexMatchSetId = lens _rmsRegexMatchSetId (\ s a -> s{_rmsRegexMatchSetId = a});++instance FromJSON RegexMatchSet where+ parseJSON+ = withObject "RegexMatchSet"+ (\ x ->+ RegexMatchSet' <$>+ (x .:? "Name") <*>+ (x .:? "RegexMatchTuples" .!= mempty)+ <*> (x .:? "RegexMatchSetId"))++instance Hashable RegexMatchSet where++instance NFData RegexMatchSet where++-- | Returned by 'ListRegexMatchSets' . Each @RegexMatchSetSummary@ object includes the @Name@ and @RegexMatchSetId@ for one 'RegexMatchSet' .+--+--+--+-- /See:/ 'regexMatchSetSummary' smart constructor.+data RegexMatchSetSummary = RegexMatchSetSummary'+ { _rmssRegexMatchSetId :: !Text+ , _rmssName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RegexMatchSetSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rmssRegexMatchSetId' - The @RegexMatchSetId@ for a @RegexMatchSet@ . You use @RegexMatchSetId@ to get information about a @RegexMatchSet@ , update a @RegexMatchSet@ , remove a @RegexMatchSet@ from a @Rule@ , and delete a @RegexMatchSet@ from AWS WAF. @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+--+-- * 'rmssName' - A friendly name or description of the 'RegexMatchSet' . You can't change @Name@ after you create a @RegexMatchSet@ .+regexMatchSetSummary+ :: Text -- ^ 'rmssRegexMatchSetId'+ -> Text -- ^ 'rmssName'+ -> RegexMatchSetSummary+regexMatchSetSummary pRegexMatchSetId_ pName_ =+ RegexMatchSetSummary'+ {_rmssRegexMatchSetId = pRegexMatchSetId_, _rmssName = pName_}+++-- | The @RegexMatchSetId@ for a @RegexMatchSet@ . You use @RegexMatchSetId@ to get information about a @RegexMatchSet@ , update a @RegexMatchSet@ , remove a @RegexMatchSet@ from a @Rule@ , and delete a @RegexMatchSet@ from AWS WAF. @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+rmssRegexMatchSetId :: Lens' RegexMatchSetSummary Text+rmssRegexMatchSetId = lens _rmssRegexMatchSetId (\ s a -> s{_rmssRegexMatchSetId = a});++-- | A friendly name or description of the 'RegexMatchSet' . You can't change @Name@ after you create a @RegexMatchSet@ .+rmssName :: Lens' RegexMatchSetSummary Text+rmssName = lens _rmssName (\ s a -> s{_rmssName = a});++instance FromJSON RegexMatchSetSummary where+ parseJSON+ = withObject "RegexMatchSetSummary"+ (\ x ->+ RegexMatchSetSummary' <$>+ (x .: "RegexMatchSetId") <*> (x .: "Name"))++instance Hashable RegexMatchSetSummary where++instance NFData RegexMatchSetSummary where++-- | In an 'UpdateRegexMatchSet' request, @RegexMatchSetUpdate@ specifies whether to insert or delete a 'RegexMatchTuple' and includes the settings for the @RegexMatchTuple@ .+--+--+--+-- /See:/ 'regexMatchSetUpdate' smart constructor.+data RegexMatchSetUpdate = RegexMatchSetUpdate'+ { _rmsuAction :: !ChangeAction+ , _rmsuRegexMatchTuple :: !RegexMatchTuple+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RegexMatchSetUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rmsuAction' - Specifies whether to insert or delete a 'RegexMatchTuple' .+--+-- * 'rmsuRegexMatchTuple' - Information about the part of a web request that you want AWS WAF to inspect and the identifier of the regular expression (regex) pattern that you want AWS WAF to search for. If you specify @DELETE@ for the value of @Action@ , the @RegexMatchTuple@ values must exactly match the values in the @RegexMatchTuple@ that you want to delete from the @RegexMatchSet@ .+regexMatchSetUpdate+ :: ChangeAction -- ^ 'rmsuAction'+ -> RegexMatchTuple -- ^ 'rmsuRegexMatchTuple'+ -> RegexMatchSetUpdate+regexMatchSetUpdate pAction_ pRegexMatchTuple_ =+ RegexMatchSetUpdate'+ {_rmsuAction = pAction_, _rmsuRegexMatchTuple = pRegexMatchTuple_}+++-- | Specifies whether to insert or delete a 'RegexMatchTuple' .+rmsuAction :: Lens' RegexMatchSetUpdate ChangeAction+rmsuAction = lens _rmsuAction (\ s a -> s{_rmsuAction = a});++-- | Information about the part of a web request that you want AWS WAF to inspect and the identifier of the regular expression (regex) pattern that you want AWS WAF to search for. If you specify @DELETE@ for the value of @Action@ , the @RegexMatchTuple@ values must exactly match the values in the @RegexMatchTuple@ that you want to delete from the @RegexMatchSet@ .+rmsuRegexMatchTuple :: Lens' RegexMatchSetUpdate RegexMatchTuple+rmsuRegexMatchTuple = lens _rmsuRegexMatchTuple (\ s a -> s{_rmsuRegexMatchTuple = a});++instance Hashable RegexMatchSetUpdate where++instance NFData RegexMatchSetUpdate where++instance ToJSON RegexMatchSetUpdate where+ toJSON RegexMatchSetUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _rmsuAction),+ Just ("RegexMatchTuple" .= _rmsuRegexMatchTuple)])++-- | The regular expression pattern that you want AWS WAF to search for in web requests, the location in requests that you want AWS WAF to search, and other settings. Each @RegexMatchTuple@ object contains:+--+--+-- * The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the @User-Agent@ header.+--+-- * The identifier of the pattern (a regular expression) that you want AWS WAF to look for. For more information, see 'RegexPatternSet' .+--+-- * Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for the specified string.+--+--+--+--+-- /See:/ 'regexMatchTuple' smart constructor.+data RegexMatchTuple = RegexMatchTuple'+ { _rmtFieldToMatch :: !FieldToMatch+ , _rmtTextTransformation :: !TextTransformation+ , _rmtRegexPatternSetId :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RegexMatchTuple' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rmtFieldToMatch' - Specifies where in a web request to look for the @RegexPatternSet@ .+--+-- * 'rmtTextTransformation' - Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @RegexPatternSet@ before inspecting a request for a match. __CMD_LINE__ When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value. __NONE__ Specify @NONE@ if you don't want to perform any text transformations.+--+-- * 'rmtRegexPatternSetId' - The @RegexPatternSetId@ for a @RegexPatternSet@ . You use @RegexPatternSetId@ to get information about a @RegexPatternSet@ (see 'GetRegexPatternSet' ), update a @RegexPatternSet@ (see 'UpdateRegexPatternSet' ), insert a @RegexPatternSet@ into a @RegexMatchSet@ or delete one from a @RegexMatchSet@ (see 'UpdateRegexMatchSet' ), and delete an @RegexPatternSet@ from AWS WAF (see 'DeleteRegexPatternSet' ). @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+regexMatchTuple+ :: FieldToMatch -- ^ 'rmtFieldToMatch'+ -> TextTransformation -- ^ 'rmtTextTransformation'+ -> Text -- ^ 'rmtRegexPatternSetId'+ -> RegexMatchTuple+regexMatchTuple pFieldToMatch_ pTextTransformation_ pRegexPatternSetId_ =+ RegexMatchTuple'+ { _rmtFieldToMatch = pFieldToMatch_+ , _rmtTextTransformation = pTextTransformation_+ , _rmtRegexPatternSetId = pRegexPatternSetId_+ }+++-- | Specifies where in a web request to look for the @RegexPatternSet@ .+rmtFieldToMatch :: Lens' RegexMatchTuple FieldToMatch+rmtFieldToMatch = lens _rmtFieldToMatch (\ s a -> s{_rmtFieldToMatch = a});++-- | Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @RegexPatternSet@ before inspecting a request for a match. __CMD_LINE__ When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value. __NONE__ Specify @NONE@ if you don't want to perform any text transformations.+rmtTextTransformation :: Lens' RegexMatchTuple TextTransformation+rmtTextTransformation = lens _rmtTextTransformation (\ s a -> s{_rmtTextTransformation = a});++-- | The @RegexPatternSetId@ for a @RegexPatternSet@ . You use @RegexPatternSetId@ to get information about a @RegexPatternSet@ (see 'GetRegexPatternSet' ), update a @RegexPatternSet@ (see 'UpdateRegexPatternSet' ), insert a @RegexPatternSet@ into a @RegexMatchSet@ or delete one from a @RegexMatchSet@ (see 'UpdateRegexMatchSet' ), and delete an @RegexPatternSet@ from AWS WAF (see 'DeleteRegexPatternSet' ). @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+rmtRegexPatternSetId :: Lens' RegexMatchTuple Text+rmtRegexPatternSetId = lens _rmtRegexPatternSetId (\ s a -> s{_rmtRegexPatternSetId = a});++instance FromJSON RegexMatchTuple where+ parseJSON+ = withObject "RegexMatchTuple"+ (\ x ->+ RegexMatchTuple' <$>+ (x .: "FieldToMatch") <*> (x .: "TextTransformation")+ <*> (x .: "RegexPatternSetId"))++instance Hashable RegexMatchTuple where++instance NFData RegexMatchTuple where++instance ToJSON RegexMatchTuple where+ toJSON RegexMatchTuple'{..}+ = object+ (catMaybes+ [Just ("FieldToMatch" .= _rmtFieldToMatch),+ Just+ ("TextTransformation" .= _rmtTextTransformation),+ Just ("RegexPatternSetId" .= _rmtRegexPatternSetId)])++-- | The @RegexPatternSet@ specifies the regular expression (regex) pattern that you want AWS WAF to search for, such as @B[a@]dB[o0]t@ . You can then configure AWS WAF to reject those requests.+--+--+--+-- /See:/ 'regexPatternSet' smart constructor.+data RegexPatternSet = RegexPatternSet'+ { _rpsName :: !(Maybe Text)+ , _rpsRegexPatternSetId :: !Text+ , _rpsRegexPatternStrings :: ![Text]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RegexPatternSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rpsName' - A friendly name or description of the 'RegexPatternSet' . You can't change @Name@ after you create a @RegexPatternSet@ .+--+-- * 'rpsRegexPatternSetId' - The identifier for the @RegexPatternSet@ . You use @RegexPatternSetId@ to get information about a @RegexPatternSet@ , update a @RegexPatternSet@ , remove a @RegexPatternSet@ from a @RegexMatchSet@ , and delete a @RegexPatternSet@ from AWS WAF. @RegexMatchSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+--+-- * 'rpsRegexPatternStrings' - Specifies the regular expression (regex) patterns that you want AWS WAF to search for, such as @B[a@]dB[o0]t@ .+regexPatternSet+ :: Text -- ^ 'rpsRegexPatternSetId'+ -> RegexPatternSet+regexPatternSet pRegexPatternSetId_ =+ RegexPatternSet'+ { _rpsName = Nothing+ , _rpsRegexPatternSetId = pRegexPatternSetId_+ , _rpsRegexPatternStrings = mempty+ }+++-- | A friendly name or description of the 'RegexPatternSet' . You can't change @Name@ after you create a @RegexPatternSet@ .+rpsName :: Lens' RegexPatternSet (Maybe Text)+rpsName = lens _rpsName (\ s a -> s{_rpsName = a});++-- | The identifier for the @RegexPatternSet@ . You use @RegexPatternSetId@ to get information about a @RegexPatternSet@ , update a @RegexPatternSet@ , remove a @RegexPatternSet@ from a @RegexMatchSet@ , and delete a @RegexPatternSet@ from AWS WAF. @RegexMatchSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+rpsRegexPatternSetId :: Lens' RegexPatternSet Text+rpsRegexPatternSetId = lens _rpsRegexPatternSetId (\ s a -> s{_rpsRegexPatternSetId = a});++-- | Specifies the regular expression (regex) patterns that you want AWS WAF to search for, such as @B[a@]dB[o0]t@ .+rpsRegexPatternStrings :: Lens' RegexPatternSet [Text]+rpsRegexPatternStrings = lens _rpsRegexPatternStrings (\ s a -> s{_rpsRegexPatternStrings = a}) . _Coerce;++instance FromJSON RegexPatternSet where+ parseJSON+ = withObject "RegexPatternSet"+ (\ x ->+ RegexPatternSet' <$>+ (x .:? "Name") <*> (x .: "RegexPatternSetId") <*>+ (x .:? "RegexPatternStrings" .!= mempty))++instance Hashable RegexPatternSet where++instance NFData RegexPatternSet where++-- | Returned by 'ListRegexPatternSets' . Each @RegexPatternSetSummary@ object includes the @Name@ and @RegexPatternSetId@ for one 'RegexPatternSet' .+--+--+--+-- /See:/ 'regexPatternSetSummary' smart constructor.+data RegexPatternSetSummary = RegexPatternSetSummary'+ { _rpssRegexPatternSetId :: !Text+ , _rpssName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RegexPatternSetSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rpssRegexPatternSetId' - The @RegexPatternSetId@ for a @RegexPatternSet@ . You use @RegexPatternSetId@ to get information about a @RegexPatternSet@ , update a @RegexPatternSet@ , remove a @RegexPatternSet@ from a @RegexMatchSet@ , and delete a @RegexPatternSet@ from AWS WAF. @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+--+-- * 'rpssName' - A friendly name or description of the 'RegexPatternSet' . You can't change @Name@ after you create a @RegexPatternSet@ .+regexPatternSetSummary+ :: Text -- ^ 'rpssRegexPatternSetId'+ -> Text -- ^ 'rpssName'+ -> RegexPatternSetSummary+regexPatternSetSummary pRegexPatternSetId_ pName_ =+ RegexPatternSetSummary'+ {_rpssRegexPatternSetId = pRegexPatternSetId_, _rpssName = pName_}+++-- | The @RegexPatternSetId@ for a @RegexPatternSet@ . You use @RegexPatternSetId@ to get information about a @RegexPatternSet@ , update a @RegexPatternSet@ , remove a @RegexPatternSet@ from a @RegexMatchSet@ , and delete a @RegexPatternSet@ from AWS WAF. @RegexPatternSetId@ is returned by 'CreateRegexPatternSet' and by 'ListRegexPatternSets' .+rpssRegexPatternSetId :: Lens' RegexPatternSetSummary Text+rpssRegexPatternSetId = lens _rpssRegexPatternSetId (\ s a -> s{_rpssRegexPatternSetId = a});++-- | A friendly name or description of the 'RegexPatternSet' . You can't change @Name@ after you create a @RegexPatternSet@ .+rpssName :: Lens' RegexPatternSetSummary Text+rpssName = lens _rpssName (\ s a -> s{_rpssName = a});++instance FromJSON RegexPatternSetSummary where+ parseJSON+ = withObject "RegexPatternSetSummary"+ (\ x ->+ RegexPatternSetSummary' <$>+ (x .: "RegexPatternSetId") <*> (x .: "Name"))++instance Hashable RegexPatternSetSummary where++instance NFData RegexPatternSetSummary where++-- | In an 'UpdateRegexPatternSet' request, @RegexPatternSetUpdate@ specifies whether to insert or delete a @RegexPatternString@ and includes the settings for the @RegexPatternString@ .+--+--+--+-- /See:/ 'regexPatternSetUpdate' smart constructor.+data RegexPatternSetUpdate = RegexPatternSetUpdate'+ { _rpsuAction :: !ChangeAction+ , _rpsuRegexPatternString :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RegexPatternSetUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rpsuAction' - Specifies whether to insert or delete a @RegexPatternString@ .+--+-- * 'rpsuRegexPatternString' - Specifies the regular expression (regex) pattern that you want AWS WAF to search for, such as @B[a@]dB[o0]t@ .+regexPatternSetUpdate+ :: ChangeAction -- ^ 'rpsuAction'+ -> Text -- ^ 'rpsuRegexPatternString'+ -> RegexPatternSetUpdate+regexPatternSetUpdate pAction_ pRegexPatternString_ =+ RegexPatternSetUpdate'+ {_rpsuAction = pAction_, _rpsuRegexPatternString = pRegexPatternString_}+++-- | Specifies whether to insert or delete a @RegexPatternString@ .+rpsuAction :: Lens' RegexPatternSetUpdate ChangeAction+rpsuAction = lens _rpsuAction (\ s a -> s{_rpsuAction = a});++-- | Specifies the regular expression (regex) pattern that you want AWS WAF to search for, such as @B[a@]dB[o0]t@ .+rpsuRegexPatternString :: Lens' RegexPatternSetUpdate Text+rpsuRegexPatternString = lens _rpsuRegexPatternString (\ s a -> s{_rpsuRegexPatternString = a});++instance Hashable RegexPatternSetUpdate where++instance NFData RegexPatternSetUpdate where++instance ToJSON RegexPatternSetUpdate where+ toJSON RegexPatternSetUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _rpsuAction),+ Just+ ("RegexPatternString" .= _rpsuRegexPatternString)])++-- | A combination of 'ByteMatchSet' , 'IPSet' , and/or 'SqlInjectionMatchSet' objects that identify the web requests that you want to allow, block, or count. For example, you might create a @Rule@ that includes the following predicates:+--+--+-- * An @IPSet@ that causes AWS WAF to search for web requests that originate from the IP address @192.0.2.44@+--+-- * A @ByteMatchSet@ that causes AWS WAF to search for web requests for which the value of the @User-Agent@ header is @BadBot@ .+--+--+--+-- To match the settings in this @Rule@ , a request must originate from @192.0.2.44@ AND include a @User-Agent@ header for which the value is @BadBot@ .+--+--+-- /See:/ 'rule' smart constructor.+data Rule = Rule'+ { _rMetricName :: !(Maybe Text)+ , _rName :: !(Maybe Text)+ , _rRuleId :: !Text+ , _rPredicates :: ![Predicate]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'Rule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rMetricName' - A friendly name or description for the metrics for this @Rule@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change @MetricName@ after you create the @Rule@ .+--+-- * 'rName' - The friendly name or description for the @Rule@ . You can't change the name of a @Rule@ after you create it.+--+-- * 'rRuleId' - A unique identifier for a @Rule@ . You use @RuleId@ to get more information about a @Rule@ (see 'GetRule' ), update a @Rule@ (see 'UpdateRule' ), insert a @Rule@ into a @WebACL@ or delete a one from a @WebACL@ (see 'UpdateWebACL' ), or delete a @Rule@ from AWS WAF (see 'DeleteRule' ). @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+--+-- * 'rPredicates' - The @Predicates@ object contains one @Predicate@ element for each 'ByteMatchSet' , 'IPSet' , or 'SqlInjectionMatchSet' object that you want to include in a @Rule@ .+rule+ :: Text -- ^ 'rRuleId'+ -> Rule+rule pRuleId_ =+ Rule'+ { _rMetricName = Nothing+ , _rName = Nothing+ , _rRuleId = pRuleId_+ , _rPredicates = mempty+ }+++-- | A friendly name or description for the metrics for this @Rule@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change @MetricName@ after you create the @Rule@ .+rMetricName :: Lens' Rule (Maybe Text)+rMetricName = lens _rMetricName (\ s a -> s{_rMetricName = a});++-- | The friendly name or description for the @Rule@ . You can't change the name of a @Rule@ after you create it.+rName :: Lens' Rule (Maybe Text)+rName = lens _rName (\ s a -> s{_rName = a});++-- | A unique identifier for a @Rule@ . You use @RuleId@ to get more information about a @Rule@ (see 'GetRule' ), update a @Rule@ (see 'UpdateRule' ), insert a @Rule@ into a @WebACL@ or delete a one from a @WebACL@ (see 'UpdateWebACL' ), or delete a @Rule@ from AWS WAF (see 'DeleteRule' ). @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+rRuleId :: Lens' Rule Text+rRuleId = lens _rRuleId (\ s a -> s{_rRuleId = a});++-- | The @Predicates@ object contains one @Predicate@ element for each 'ByteMatchSet' , 'IPSet' , or 'SqlInjectionMatchSet' object that you want to include in a @Rule@ .+rPredicates :: Lens' Rule [Predicate]+rPredicates = lens _rPredicates (\ s a -> s{_rPredicates = a}) . _Coerce;++instance FromJSON Rule where+ parseJSON+ = withObject "Rule"+ (\ x ->+ Rule' <$>+ (x .:? "MetricName") <*> (x .:? "Name") <*>+ (x .: "RuleId")+ <*> (x .:? "Predicates" .!= mempty))++instance Hashable Rule where++instance NFData Rule where++-- | Contains the identifier and the friendly name or description of the @Rule@ .+--+--+--+-- /See:/ 'ruleSummary' smart constructor.+data RuleSummary = RuleSummary'+ { _rsRuleId :: !Text+ , _rsName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RuleSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'rsRuleId' - A unique identifier for a @Rule@ . You use @RuleId@ to get more information about a @Rule@ (see 'GetRule' ), update a @Rule@ (see 'UpdateRule' ), insert a @Rule@ into a @WebACL@ or delete one from a @WebACL@ (see 'UpdateWebACL' ), or delete a @Rule@ from AWS WAF (see 'DeleteRule' ). @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+--+-- * 'rsName' - A friendly name or description of the 'Rule' . You can't change the name of a @Rule@ after you create it.+ruleSummary+ :: Text -- ^ 'rsRuleId'+ -> Text -- ^ 'rsName'+ -> RuleSummary+ruleSummary pRuleId_ pName_ =+ RuleSummary' {_rsRuleId = pRuleId_, _rsName = pName_}+++-- | A unique identifier for a @Rule@ . You use @RuleId@ to get more information about a @Rule@ (see 'GetRule' ), update a @Rule@ (see 'UpdateRule' ), insert a @Rule@ into a @WebACL@ or delete one from a @WebACL@ (see 'UpdateWebACL' ), or delete a @Rule@ from AWS WAF (see 'DeleteRule' ). @RuleId@ is returned by 'CreateRule' and by 'ListRules' .+rsRuleId :: Lens' RuleSummary Text+rsRuleId = lens _rsRuleId (\ s a -> s{_rsRuleId = a});++-- | A friendly name or description of the 'Rule' . You can't change the name of a @Rule@ after you create it.+rsName :: Lens' RuleSummary Text+rsName = lens _rsName (\ s a -> s{_rsName = a});++instance FromJSON RuleSummary where+ parseJSON+ = withObject "RuleSummary"+ (\ x ->+ RuleSummary' <$> (x .: "RuleId") <*> (x .: "Name"))++instance Hashable RuleSummary where++instance NFData RuleSummary where++-- | Specifies a @Predicate@ (such as an @IPSet@ ) and indicates whether you want to add it to a @Rule@ or delete it from a @Rule@ .+--+--+--+-- /See:/ 'ruleUpdate' smart constructor.+data RuleUpdate = RuleUpdate'+ { _ruAction :: !ChangeAction+ , _ruPredicate :: !Predicate+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'RuleUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ruAction' - Specify @INSERT@ to add a @Predicate@ to a @Rule@ . Use @DELETE@ to remove a @Predicate@ from a @Rule@ .+--+-- * 'ruPredicate' - The ID of the @Predicate@ (such as an @IPSet@ ) that you want to add to a @Rule@ .+ruleUpdate+ :: ChangeAction -- ^ 'ruAction'+ -> Predicate -- ^ 'ruPredicate'+ -> RuleUpdate+ruleUpdate pAction_ pPredicate_ =+ RuleUpdate' {_ruAction = pAction_, _ruPredicate = pPredicate_}+++-- | Specify @INSERT@ to add a @Predicate@ to a @Rule@ . Use @DELETE@ to remove a @Predicate@ from a @Rule@ .+ruAction :: Lens' RuleUpdate ChangeAction+ruAction = lens _ruAction (\ s a -> s{_ruAction = a});++-- | The ID of the @Predicate@ (such as an @IPSet@ ) that you want to add to a @Rule@ .+ruPredicate :: Lens' RuleUpdate Predicate+ruPredicate = lens _ruPredicate (\ s a -> s{_ruPredicate = a});++instance Hashable RuleUpdate where++instance NFData RuleUpdate where++instance ToJSON RuleUpdate where+ toJSON RuleUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _ruAction),+ Just ("Predicate" .= _ruPredicate)])++-- | The response from a 'GetSampledRequests' request includes a @SampledHTTPRequests@ complex type that appears as @SampledRequests@ in the response syntax. @SampledHTTPRequests@ contains one @SampledHTTPRequest@ object for each web request that is returned by @GetSampledRequests@ .+--+--+--+-- /See:/ 'sampledHTTPRequest' smart constructor.+data SampledHTTPRequest = SampledHTTPRequest'+ { _shttprAction :: !(Maybe Text)+ , _shttprTimestamp :: !(Maybe POSIX)+ , _shttprRequest :: !HTTPRequest+ , _shttprWeight :: !Nat+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SampledHTTPRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'shttprAction' - The action for the @Rule@ that the request matched: @ALLOW@ , @BLOCK@ , or @COUNT@ .+--+-- * 'shttprTimestamp' - The time at which AWS WAF received the request from your AWS resource, in Unix time format (in seconds).+--+-- * 'shttprRequest' - A complex type that contains detailed information about the request.+--+-- * 'shttprWeight' - A value that indicates how one result in the response relates proportionally to other results in the response. A result that has a weight of @2@ represents roughly twice as many CloudFront web requests as a result that has a weight of @1@ .+sampledHTTPRequest+ :: HTTPRequest -- ^ 'shttprRequest'+ -> Natural -- ^ 'shttprWeight'+ -> SampledHTTPRequest+sampledHTTPRequest pRequest_ pWeight_ =+ SampledHTTPRequest'+ { _shttprAction = Nothing+ , _shttprTimestamp = Nothing+ , _shttprRequest = pRequest_+ , _shttprWeight = _Nat # pWeight_+ }+++-- | The action for the @Rule@ that the request matched: @ALLOW@ , @BLOCK@ , or @COUNT@ .+shttprAction :: Lens' SampledHTTPRequest (Maybe Text)+shttprAction = lens _shttprAction (\ s a -> s{_shttprAction = a});++-- | The time at which AWS WAF received the request from your AWS resource, in Unix time format (in seconds).+shttprTimestamp :: Lens' SampledHTTPRequest (Maybe UTCTime)+shttprTimestamp = lens _shttprTimestamp (\ s a -> s{_shttprTimestamp = a}) . mapping _Time;++-- | A complex type that contains detailed information about the request.+shttprRequest :: Lens' SampledHTTPRequest HTTPRequest+shttprRequest = lens _shttprRequest (\ s a -> s{_shttprRequest = a});++-- | A value that indicates how one result in the response relates proportionally to other results in the response. A result that has a weight of @2@ represents roughly twice as many CloudFront web requests as a result that has a weight of @1@ .+shttprWeight :: Lens' SampledHTTPRequest Natural+shttprWeight = lens _shttprWeight (\ s a -> s{_shttprWeight = a}) . _Nat;++instance FromJSON SampledHTTPRequest where+ parseJSON+ = withObject "SampledHTTPRequest"+ (\ x ->+ SampledHTTPRequest' <$>+ (x .:? "Action") <*> (x .:? "Timestamp") <*>+ (x .: "Request")+ <*> (x .: "Weight"))++instance Hashable SampledHTTPRequest where++instance NFData SampledHTTPRequest where++-- | Specifies a constraint on the size of a part of the web request. AWS WAF uses the @Size@ , @ComparisonOperator@ , and @FieldToMatch@ to build an expression in the form of "@Size@ @ComparisonOperator@ size in bytes of @FieldToMatch@ ". If that expression is true, the @SizeConstraint@ is considered to match.+--+--+--+-- /See:/ 'sizeConstraint' smart constructor.+data SizeConstraint = SizeConstraint'+ { _scFieldToMatch :: !FieldToMatch+ , _scTextTransformation :: !TextTransformation+ , _scComparisonOperator :: !ComparisonOperator+ , _scSize :: !Nat+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SizeConstraint' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scFieldToMatch' - Specifies where in a web request to look for the size constraint.+--+-- * 'scTextTransformation' - Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @FieldToMatch@ before inspecting a request for a match. Note that if you choose @BODY@ for the value of @Type@ , you must choose @NONE@ for @TextTransformation@ because CloudFront forwards only the first 8192 bytes for inspection. __NONE__ Specify @NONE@ if you don't want to perform any text transformations. __CMD_LINE__ When you're concerned that attackers are injecting an operating system command line command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value.+--+-- * 'scComparisonOperator' - The type of comparison you want AWS WAF to perform. AWS WAF uses this in combination with the provided @Size@ and @FieldToMatch@ to build an expression in the form of "@Size@ @ComparisonOperator@ size in bytes of @FieldToMatch@ ". If that expression is true, the @SizeConstraint@ is considered to match. __EQ__ : Used to test if the @Size@ is equal to the size of the @FieldToMatch@ __NE__ : Used to test if the @Size@ is not equal to the size of the @FieldToMatch@ __LE__ : Used to test if the @Size@ is less than or equal to the size of the @FieldToMatch@ __LT__ : Used to test if the @Size@ is strictly less than the size of the @FieldToMatch@ __GE__ : Used to test if the @Size@ is greater than or equal to the size of the @FieldToMatch@ __GT__ : Used to test if the @Size@ is strictly greater than the size of the @FieldToMatch@+--+-- * 'scSize' - The size in bytes that you want AWS WAF to compare against the size of the specified @FieldToMatch@ . AWS WAF uses this in combination with @ComparisonOperator@ and @FieldToMatch@ to build an expression in the form of "@Size@ @ComparisonOperator@ size in bytes of @FieldToMatch@ ". If that expression is true, the @SizeConstraint@ is considered to match. Valid values for size are 0 - 21474836480 bytes (0 - 20 GB). If you specify @URI@ for the value of @Type@ , the / in the URI counts as one character. For example, the URI @/logo.jpg@ is nine characters long.+sizeConstraint+ :: FieldToMatch -- ^ 'scFieldToMatch'+ -> TextTransformation -- ^ 'scTextTransformation'+ -> ComparisonOperator -- ^ 'scComparisonOperator'+ -> Natural -- ^ 'scSize'+ -> SizeConstraint+sizeConstraint pFieldToMatch_ pTextTransformation_ pComparisonOperator_ pSize_ =+ SizeConstraint'+ { _scFieldToMatch = pFieldToMatch_+ , _scTextTransformation = pTextTransformation_+ , _scComparisonOperator = pComparisonOperator_+ , _scSize = _Nat # pSize_+ }+++-- | Specifies where in a web request to look for the size constraint.+scFieldToMatch :: Lens' SizeConstraint FieldToMatch+scFieldToMatch = lens _scFieldToMatch (\ s a -> s{_scFieldToMatch = a});++-- | Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @FieldToMatch@ before inspecting a request for a match. Note that if you choose @BODY@ for the value of @Type@ , you must choose @NONE@ for @TextTransformation@ because CloudFront forwards only the first 8192 bytes for inspection. __NONE__ Specify @NONE@ if you don't want to perform any text transformations. __CMD_LINE__ When you're concerned that attackers are injecting an operating system command line command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value.+scTextTransformation :: Lens' SizeConstraint TextTransformation+scTextTransformation = lens _scTextTransformation (\ s a -> s{_scTextTransformation = a});++-- | The type of comparison you want AWS WAF to perform. AWS WAF uses this in combination with the provided @Size@ and @FieldToMatch@ to build an expression in the form of "@Size@ @ComparisonOperator@ size in bytes of @FieldToMatch@ ". If that expression is true, the @SizeConstraint@ is considered to match. __EQ__ : Used to test if the @Size@ is equal to the size of the @FieldToMatch@ __NE__ : Used to test if the @Size@ is not equal to the size of the @FieldToMatch@ __LE__ : Used to test if the @Size@ is less than or equal to the size of the @FieldToMatch@ __LT__ : Used to test if the @Size@ is strictly less than the size of the @FieldToMatch@ __GE__ : Used to test if the @Size@ is greater than or equal to the size of the @FieldToMatch@ __GT__ : Used to test if the @Size@ is strictly greater than the size of the @FieldToMatch@+scComparisonOperator :: Lens' SizeConstraint ComparisonOperator+scComparisonOperator = lens _scComparisonOperator (\ s a -> s{_scComparisonOperator = a});++-- | The size in bytes that you want AWS WAF to compare against the size of the specified @FieldToMatch@ . AWS WAF uses this in combination with @ComparisonOperator@ and @FieldToMatch@ to build an expression in the form of "@Size@ @ComparisonOperator@ size in bytes of @FieldToMatch@ ". If that expression is true, the @SizeConstraint@ is considered to match. Valid values for size are 0 - 21474836480 bytes (0 - 20 GB). If you specify @URI@ for the value of @Type@ , the / in the URI counts as one character. For example, the URI @/logo.jpg@ is nine characters long.+scSize :: Lens' SizeConstraint Natural+scSize = lens _scSize (\ s a -> s{_scSize = a}) . _Nat;++instance FromJSON SizeConstraint where+ parseJSON+ = withObject "SizeConstraint"+ (\ x ->+ SizeConstraint' <$>+ (x .: "FieldToMatch") <*> (x .: "TextTransformation")+ <*> (x .: "ComparisonOperator")+ <*> (x .: "Size"))++instance Hashable SizeConstraint where++instance NFData SizeConstraint where++instance ToJSON SizeConstraint where+ toJSON SizeConstraint'{..}+ = object+ (catMaybes+ [Just ("FieldToMatch" .= _scFieldToMatch),+ Just ("TextTransformation" .= _scTextTransformation),+ Just ("ComparisonOperator" .= _scComparisonOperator),+ Just ("Size" .= _scSize)])++-- | A complex type that contains @SizeConstraint@ objects, which specify the parts of web requests that you want AWS WAF to inspect the size of. If a @SizeConstraintSet@ contains more than one @SizeConstraint@ object, a request only needs to match one constraint to be considered a match.+--+--+--+-- /See:/ 'sizeConstraintSet' smart constructor.+data SizeConstraintSet = SizeConstraintSet'+ { _scsName :: !(Maybe Text)+ , _scsSizeConstraintSetId :: !Text+ , _scsSizeConstraints :: ![SizeConstraint]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SizeConstraintSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scsName' - The name, if any, of the @SizeConstraintSet@ .+--+-- * 'scsSizeConstraintSetId' - A unique identifier for a @SizeConstraintSet@ . You use @SizeConstraintSetId@ to get information about a @SizeConstraintSet@ (see 'GetSizeConstraintSet' ), update a @SizeConstraintSet@ (see 'UpdateSizeConstraintSet' ), insert a @SizeConstraintSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @SizeConstraintSet@ from AWS WAF (see 'DeleteSizeConstraintSet' ). @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+--+-- * 'scsSizeConstraints' - Specifies the parts of web requests that you want to inspect the size of.+sizeConstraintSet+ :: Text -- ^ 'scsSizeConstraintSetId'+ -> SizeConstraintSet+sizeConstraintSet pSizeConstraintSetId_ =+ SizeConstraintSet'+ { _scsName = Nothing+ , _scsSizeConstraintSetId = pSizeConstraintSetId_+ , _scsSizeConstraints = mempty+ }+++-- | The name, if any, of the @SizeConstraintSet@ .+scsName :: Lens' SizeConstraintSet (Maybe Text)+scsName = lens _scsName (\ s a -> s{_scsName = a});++-- | A unique identifier for a @SizeConstraintSet@ . You use @SizeConstraintSetId@ to get information about a @SizeConstraintSet@ (see 'GetSizeConstraintSet' ), update a @SizeConstraintSet@ (see 'UpdateSizeConstraintSet' ), insert a @SizeConstraintSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @SizeConstraintSet@ from AWS WAF (see 'DeleteSizeConstraintSet' ). @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+scsSizeConstraintSetId :: Lens' SizeConstraintSet Text+scsSizeConstraintSetId = lens _scsSizeConstraintSetId (\ s a -> s{_scsSizeConstraintSetId = a});++-- | Specifies the parts of web requests that you want to inspect the size of.+scsSizeConstraints :: Lens' SizeConstraintSet [SizeConstraint]+scsSizeConstraints = lens _scsSizeConstraints (\ s a -> s{_scsSizeConstraints = a}) . _Coerce;++instance FromJSON SizeConstraintSet where+ parseJSON+ = withObject "SizeConstraintSet"+ (\ x ->+ SizeConstraintSet' <$>+ (x .:? "Name") <*> (x .: "SizeConstraintSetId") <*>+ (x .:? "SizeConstraints" .!= mempty))++instance Hashable SizeConstraintSet where++instance NFData SizeConstraintSet where++-- | The @Id@ and @Name@ of a @SizeConstraintSet@ .+--+--+--+-- /See:/ 'sizeConstraintSetSummary' smart constructor.+data SizeConstraintSetSummary = SizeConstraintSetSummary'+ { _scssSizeConstraintSetId :: !Text+ , _scssName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SizeConstraintSetSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scssSizeConstraintSetId' - A unique identifier for a @SizeConstraintSet@ . You use @SizeConstraintSetId@ to get information about a @SizeConstraintSet@ (see 'GetSizeConstraintSet' ), update a @SizeConstraintSet@ (see 'UpdateSizeConstraintSet' ), insert a @SizeConstraintSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @SizeConstraintSet@ from AWS WAF (see 'DeleteSizeConstraintSet' ). @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+--+-- * 'scssName' - The name of the @SizeConstraintSet@ , if any.+sizeConstraintSetSummary+ :: Text -- ^ 'scssSizeConstraintSetId'+ -> Text -- ^ 'scssName'+ -> SizeConstraintSetSummary+sizeConstraintSetSummary pSizeConstraintSetId_ pName_ =+ SizeConstraintSetSummary'+ {_scssSizeConstraintSetId = pSizeConstraintSetId_, _scssName = pName_}+++-- | A unique identifier for a @SizeConstraintSet@ . You use @SizeConstraintSetId@ to get information about a @SizeConstraintSet@ (see 'GetSizeConstraintSet' ), update a @SizeConstraintSet@ (see 'UpdateSizeConstraintSet' ), insert a @SizeConstraintSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @SizeConstraintSet@ from AWS WAF (see 'DeleteSizeConstraintSet' ). @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+scssSizeConstraintSetId :: Lens' SizeConstraintSetSummary Text+scssSizeConstraintSetId = lens _scssSizeConstraintSetId (\ s a -> s{_scssSizeConstraintSetId = a});++-- | The name of the @SizeConstraintSet@ , if any.+scssName :: Lens' SizeConstraintSetSummary Text+scssName = lens _scssName (\ s a -> s{_scssName = a});++instance FromJSON SizeConstraintSetSummary where+ parseJSON+ = withObject "SizeConstraintSetSummary"+ (\ x ->+ SizeConstraintSetSummary' <$>+ (x .: "SizeConstraintSetId") <*> (x .: "Name"))++instance Hashable SizeConstraintSetSummary where++instance NFData SizeConstraintSetSummary where++-- | Specifies the part of a web request that you want to inspect the size of and indicates whether you want to add the specification to a 'SizeConstraintSet' or delete it from a @SizeConstraintSet@ .+--+--+--+-- /See:/ 'sizeConstraintSetUpdate' smart constructor.+data SizeConstraintSetUpdate = SizeConstraintSetUpdate'+ { _scsuAction :: !ChangeAction+ , _scsuSizeConstraint :: !SizeConstraint+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SizeConstraintSetUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'scsuAction' - Specify @INSERT@ to add a 'SizeConstraintSetUpdate' to a 'SizeConstraintSet' . Use @DELETE@ to remove a @SizeConstraintSetUpdate@ from a @SizeConstraintSet@ .+--+-- * 'scsuSizeConstraint' - Specifies a constraint on the size of a part of the web request. AWS WAF uses the @Size@ , @ComparisonOperator@ , and @FieldToMatch@ to build an expression in the form of "@Size@ @ComparisonOperator@ size in bytes of @FieldToMatch@ ". If that expression is true, the @SizeConstraint@ is considered to match.+sizeConstraintSetUpdate+ :: ChangeAction -- ^ 'scsuAction'+ -> SizeConstraint -- ^ 'scsuSizeConstraint'+ -> SizeConstraintSetUpdate+sizeConstraintSetUpdate pAction_ pSizeConstraint_ =+ SizeConstraintSetUpdate'+ {_scsuAction = pAction_, _scsuSizeConstraint = pSizeConstraint_}+++-- | Specify @INSERT@ to add a 'SizeConstraintSetUpdate' to a 'SizeConstraintSet' . Use @DELETE@ to remove a @SizeConstraintSetUpdate@ from a @SizeConstraintSet@ .+scsuAction :: Lens' SizeConstraintSetUpdate ChangeAction+scsuAction = lens _scsuAction (\ s a -> s{_scsuAction = a});++-- | Specifies a constraint on the size of a part of the web request. AWS WAF uses the @Size@ , @ComparisonOperator@ , and @FieldToMatch@ to build an expression in the form of "@Size@ @ComparisonOperator@ size in bytes of @FieldToMatch@ ". If that expression is true, the @SizeConstraint@ is considered to match.+scsuSizeConstraint :: Lens' SizeConstraintSetUpdate SizeConstraint+scsuSizeConstraint = lens _scsuSizeConstraint (\ s a -> s{_scsuSizeConstraint = a});++instance Hashable SizeConstraintSetUpdate where++instance NFData SizeConstraintSetUpdate where++instance ToJSON SizeConstraintSetUpdate where+ toJSON SizeConstraintSetUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _scsuAction),+ Just ("SizeConstraint" .= _scsuSizeConstraint)])++-- | A complex type that contains @SqlInjectionMatchTuple@ objects, which specify the parts of web requests that you want AWS WAF to inspect for snippets of malicious SQL code and, if you want AWS WAF to inspect a header, the name of the header. If a @SqlInjectionMatchSet@ contains more than one @SqlInjectionMatchTuple@ object, a request needs to include snippets of SQL code in only one of the specified parts of the request to be considered a match.+--+--+--+-- /See:/ 'sqlInjectionMatchSet' smart constructor.+data SqlInjectionMatchSet = SqlInjectionMatchSet'+ { _simsName :: !(Maybe Text)+ , _simsSqlInjectionMatchSetId :: !Text+ , _simsSqlInjectionMatchTuples :: ![SqlInjectionMatchTuple]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SqlInjectionMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'simsName' - The name, if any, of the @SqlInjectionMatchSet@ .+--+-- * 'simsSqlInjectionMatchSetId' - A unique identifier for a @SqlInjectionMatchSet@ . You use @SqlInjectionMatchSetId@ to get information about a @SqlInjectionMatchSet@ (see 'GetSqlInjectionMatchSet' ), update a @SqlInjectionMatchSet@ (see 'UpdateSqlInjectionMatchSet' ), insert a @SqlInjectionMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @SqlInjectionMatchSet@ from AWS WAF (see 'DeleteSqlInjectionMatchSet' ). @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+--+-- * 'simsSqlInjectionMatchTuples' - Specifies the parts of web requests that you want to inspect for snippets of malicious SQL code.+sqlInjectionMatchSet+ :: Text -- ^ 'simsSqlInjectionMatchSetId'+ -> SqlInjectionMatchSet+sqlInjectionMatchSet pSqlInjectionMatchSetId_ =+ SqlInjectionMatchSet'+ { _simsName = Nothing+ , _simsSqlInjectionMatchSetId = pSqlInjectionMatchSetId_+ , _simsSqlInjectionMatchTuples = mempty+ }+++-- | The name, if any, of the @SqlInjectionMatchSet@ .+simsName :: Lens' SqlInjectionMatchSet (Maybe Text)+simsName = lens _simsName (\ s a -> s{_simsName = a});++-- | A unique identifier for a @SqlInjectionMatchSet@ . You use @SqlInjectionMatchSetId@ to get information about a @SqlInjectionMatchSet@ (see 'GetSqlInjectionMatchSet' ), update a @SqlInjectionMatchSet@ (see 'UpdateSqlInjectionMatchSet' ), insert a @SqlInjectionMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @SqlInjectionMatchSet@ from AWS WAF (see 'DeleteSqlInjectionMatchSet' ). @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+simsSqlInjectionMatchSetId :: Lens' SqlInjectionMatchSet Text+simsSqlInjectionMatchSetId = lens _simsSqlInjectionMatchSetId (\ s a -> s{_simsSqlInjectionMatchSetId = a});++-- | Specifies the parts of web requests that you want to inspect for snippets of malicious SQL code.+simsSqlInjectionMatchTuples :: Lens' SqlInjectionMatchSet [SqlInjectionMatchTuple]+simsSqlInjectionMatchTuples = lens _simsSqlInjectionMatchTuples (\ s a -> s{_simsSqlInjectionMatchTuples = a}) . _Coerce;++instance FromJSON SqlInjectionMatchSet where+ parseJSON+ = withObject "SqlInjectionMatchSet"+ (\ x ->+ SqlInjectionMatchSet' <$>+ (x .:? "Name") <*> (x .: "SqlInjectionMatchSetId")+ <*> (x .:? "SqlInjectionMatchTuples" .!= mempty))++instance Hashable SqlInjectionMatchSet where++instance NFData SqlInjectionMatchSet where++-- | The @Id@ and @Name@ of a @SqlInjectionMatchSet@ .+--+--+--+-- /See:/ 'sqlInjectionMatchSetSummary' smart constructor.+data SqlInjectionMatchSetSummary = SqlInjectionMatchSetSummary'+ { _simssSqlInjectionMatchSetId :: !Text+ , _simssName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SqlInjectionMatchSetSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'simssSqlInjectionMatchSetId' - A unique identifier for a @SqlInjectionMatchSet@ . You use @SqlInjectionMatchSetId@ to get information about a @SqlInjectionMatchSet@ (see 'GetSqlInjectionMatchSet' ), update a @SqlInjectionMatchSet@ (see 'UpdateSqlInjectionMatchSet' ), insert a @SqlInjectionMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @SqlInjectionMatchSet@ from AWS WAF (see 'DeleteSqlInjectionMatchSet' ). @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+--+-- * 'simssName' - The name of the @SqlInjectionMatchSet@ , if any, specified by @Id@ .+sqlInjectionMatchSetSummary+ :: Text -- ^ 'simssSqlInjectionMatchSetId'+ -> Text -- ^ 'simssName'+ -> SqlInjectionMatchSetSummary+sqlInjectionMatchSetSummary pSqlInjectionMatchSetId_ pName_ =+ SqlInjectionMatchSetSummary'+ {_simssSqlInjectionMatchSetId = pSqlInjectionMatchSetId_, _simssName = pName_}+++-- | A unique identifier for a @SqlInjectionMatchSet@ . You use @SqlInjectionMatchSetId@ to get information about a @SqlInjectionMatchSet@ (see 'GetSqlInjectionMatchSet' ), update a @SqlInjectionMatchSet@ (see 'UpdateSqlInjectionMatchSet' ), insert a @SqlInjectionMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete a @SqlInjectionMatchSet@ from AWS WAF (see 'DeleteSqlInjectionMatchSet' ). @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+simssSqlInjectionMatchSetId :: Lens' SqlInjectionMatchSetSummary Text+simssSqlInjectionMatchSetId = lens _simssSqlInjectionMatchSetId (\ s a -> s{_simssSqlInjectionMatchSetId = a});++-- | The name of the @SqlInjectionMatchSet@ , if any, specified by @Id@ .+simssName :: Lens' SqlInjectionMatchSetSummary Text+simssName = lens _simssName (\ s a -> s{_simssName = a});++instance FromJSON SqlInjectionMatchSetSummary where+ parseJSON+ = withObject "SqlInjectionMatchSetSummary"+ (\ x ->+ SqlInjectionMatchSetSummary' <$>+ (x .: "SqlInjectionMatchSetId") <*> (x .: "Name"))++instance Hashable SqlInjectionMatchSetSummary where++instance NFData SqlInjectionMatchSetSummary where++-- | Specifies the part of a web request that you want to inspect for snippets of malicious SQL code and indicates whether you want to add the specification to a 'SqlInjectionMatchSet' or delete it from a @SqlInjectionMatchSet@ .+--+--+--+-- /See:/ 'sqlInjectionMatchSetUpdate' smart constructor.+data SqlInjectionMatchSetUpdate = SqlInjectionMatchSetUpdate'+ { _simsuAction :: !ChangeAction+ , _simsuSqlInjectionMatchTuple :: !SqlInjectionMatchTuple+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SqlInjectionMatchSetUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'simsuAction' - Specify @INSERT@ to add a 'SqlInjectionMatchSetUpdate' to a 'SqlInjectionMatchSet' . Use @DELETE@ to remove a @SqlInjectionMatchSetUpdate@ from a @SqlInjectionMatchSet@ .+--+-- * 'simsuSqlInjectionMatchTuple' - Specifies the part of a web request that you want AWS WAF to inspect for snippets of malicious SQL code and, if you want AWS WAF to inspect a header, the name of the header.+sqlInjectionMatchSetUpdate+ :: ChangeAction -- ^ 'simsuAction'+ -> SqlInjectionMatchTuple -- ^ 'simsuSqlInjectionMatchTuple'+ -> SqlInjectionMatchSetUpdate+sqlInjectionMatchSetUpdate pAction_ pSqlInjectionMatchTuple_ =+ SqlInjectionMatchSetUpdate'+ { _simsuAction = pAction_+ , _simsuSqlInjectionMatchTuple = pSqlInjectionMatchTuple_+ }+++-- | Specify @INSERT@ to add a 'SqlInjectionMatchSetUpdate' to a 'SqlInjectionMatchSet' . Use @DELETE@ to remove a @SqlInjectionMatchSetUpdate@ from a @SqlInjectionMatchSet@ .+simsuAction :: Lens' SqlInjectionMatchSetUpdate ChangeAction+simsuAction = lens _simsuAction (\ s a -> s{_simsuAction = a});++-- | Specifies the part of a web request that you want AWS WAF to inspect for snippets of malicious SQL code and, if you want AWS WAF to inspect a header, the name of the header.+simsuSqlInjectionMatchTuple :: Lens' SqlInjectionMatchSetUpdate SqlInjectionMatchTuple+simsuSqlInjectionMatchTuple = lens _simsuSqlInjectionMatchTuple (\ s a -> s{_simsuSqlInjectionMatchTuple = a});++instance Hashable SqlInjectionMatchSetUpdate where++instance NFData SqlInjectionMatchSetUpdate where++instance ToJSON SqlInjectionMatchSetUpdate where+ toJSON SqlInjectionMatchSetUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _simsuAction),+ Just+ ("SqlInjectionMatchTuple" .=+ _simsuSqlInjectionMatchTuple)])++-- | Specifies the part of a web request that you want AWS WAF to inspect for snippets of malicious SQL code and, if you want AWS WAF to inspect a header, the name of the header.+--+--+--+-- /See:/ 'sqlInjectionMatchTuple' smart constructor.+data SqlInjectionMatchTuple = SqlInjectionMatchTuple'+ { _simtFieldToMatch :: !FieldToMatch+ , _simtTextTransformation :: !TextTransformation+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'SqlInjectionMatchTuple' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'simtFieldToMatch' - Specifies where in a web request to look for snippets of malicious SQL code.+--+-- * 'simtTextTransformation' - Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @FieldToMatch@ before inspecting a request for a match. __CMD_LINE__ When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value. __NONE__ Specify @NONE@ if you don't want to perform any text transformations.+sqlInjectionMatchTuple+ :: FieldToMatch -- ^ 'simtFieldToMatch'+ -> TextTransformation -- ^ 'simtTextTransformation'+ -> SqlInjectionMatchTuple+sqlInjectionMatchTuple pFieldToMatch_ pTextTransformation_ =+ SqlInjectionMatchTuple'+ { _simtFieldToMatch = pFieldToMatch_+ , _simtTextTransformation = pTextTransformation_+ }+++-- | Specifies where in a web request to look for snippets of malicious SQL code.+simtFieldToMatch :: Lens' SqlInjectionMatchTuple FieldToMatch+simtFieldToMatch = lens _simtFieldToMatch (\ s a -> s{_simtFieldToMatch = a});++-- | Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @FieldToMatch@ before inspecting a request for a match. __CMD_LINE__ When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value. __NONE__ Specify @NONE@ if you don't want to perform any text transformations.+simtTextTransformation :: Lens' SqlInjectionMatchTuple TextTransformation+simtTextTransformation = lens _simtTextTransformation (\ s a -> s{_simtTextTransformation = a});++instance FromJSON SqlInjectionMatchTuple where+ parseJSON+ = withObject "SqlInjectionMatchTuple"+ (\ x ->+ SqlInjectionMatchTuple' <$>+ (x .: "FieldToMatch") <*>+ (x .: "TextTransformation"))++instance Hashable SqlInjectionMatchTuple where++instance NFData SqlInjectionMatchTuple where++instance ToJSON SqlInjectionMatchTuple where+ toJSON SqlInjectionMatchTuple'{..}+ = object+ (catMaybes+ [Just ("FieldToMatch" .= _simtFieldToMatch),+ Just+ ("TextTransformation" .= _simtTextTransformation)])++-- | In a 'GetSampledRequests' request, the @StartTime@ and @EndTime@ objects specify the time range for which you want AWS WAF to return a sample of web requests.+--+--+-- In a 'GetSampledRequests' response, the @StartTime@ and @EndTime@ objects specify the time range for which AWS WAF actually returned a sample of web requests. AWS WAF gets the specified number of requests from among the first 5,000 requests that your AWS resource receives during the specified time period. If your resource receives more than 5,000 requests during that period, AWS WAF stops sampling after the 5,000th request. In that case, @EndTime@ is the time that AWS WAF received the 5,000th request.+--+--+-- /See:/ 'timeWindow' smart constructor.+data TimeWindow = TimeWindow'+ { _twStartTime :: !POSIX+ , _twEndTime :: !POSIX+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'TimeWindow' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'twStartTime' - The beginning of the time range from which you want @GetSampledRequests@ to return a sample of the requests that your AWS resource received. Specify the date and time in the following format: @"2016-09-27T14:50Z"@ . You can specify any time range in the previous three hours.+--+-- * 'twEndTime' - The end of the time range from which you want @GetSampledRequests@ to return a sample of the requests that your AWS resource received. Specify the date and time in the following format: @"2016-09-27T14:50Z"@ . You can specify any time range in the previous three hours.+timeWindow+ :: UTCTime -- ^ 'twStartTime'+ -> UTCTime -- ^ 'twEndTime'+ -> TimeWindow+timeWindow pStartTime_ pEndTime_ =+ TimeWindow'+ {_twStartTime = _Time # pStartTime_, _twEndTime = _Time # pEndTime_}+++-- | The beginning of the time range from which you want @GetSampledRequests@ to return a sample of the requests that your AWS resource received. Specify the date and time in the following format: @"2016-09-27T14:50Z"@ . You can specify any time range in the previous three hours.+twStartTime :: Lens' TimeWindow UTCTime+twStartTime = lens _twStartTime (\ s a -> s{_twStartTime = a}) . _Time;++-- | The end of the time range from which you want @GetSampledRequests@ to return a sample of the requests that your AWS resource received. Specify the date and time in the following format: @"2016-09-27T14:50Z"@ . You can specify any time range in the previous three hours.+twEndTime :: Lens' TimeWindow UTCTime+twEndTime = lens _twEndTime (\ s a -> s{_twEndTime = a}) . _Time;++instance FromJSON TimeWindow where+ parseJSON+ = withObject "TimeWindow"+ (\ x ->+ TimeWindow' <$>+ (x .: "StartTime") <*> (x .: "EndTime"))++instance Hashable TimeWindow where++instance NFData TimeWindow where++instance ToJSON TimeWindow where+ toJSON TimeWindow'{..}+ = object+ (catMaybes+ [Just ("StartTime" .= _twStartTime),+ Just ("EndTime" .= _twEndTime)])++-- | For the action that is associated with a rule in a @WebACL@ , specifies the action that you want AWS WAF to perform when a web request matches all of the conditions in a rule. For the default action in a @WebACL@ , specifies the action that you want AWS WAF to take when a web request doesn't match all of the conditions in any of the rules in a @WebACL@ .+--+--+--+-- /See:/ 'wafAction' smart constructor.+newtype WafAction = WafAction'+ { _waType :: WafActionType+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'WafAction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'waType' - Specifies how you want AWS WAF to respond to requests that match the settings in a @Rule@ . Valid settings include the following: * @ALLOW@ : AWS WAF allows requests * @BLOCK@ : AWS WAF blocks requests * @COUNT@ : AWS WAF increments a counter of the requests that match all of the conditions in the rule. AWS WAF then continues to inspect the web request based on the remaining rules in the web ACL. You can't specify @COUNT@ for the default action for a @WebACL@ .+wafAction+ :: WafActionType -- ^ 'waType'+ -> WafAction+wafAction pType_ = WafAction' {_waType = pType_}+++-- | Specifies how you want AWS WAF to respond to requests that match the settings in a @Rule@ . Valid settings include the following: * @ALLOW@ : AWS WAF allows requests * @BLOCK@ : AWS WAF blocks requests * @COUNT@ : AWS WAF increments a counter of the requests that match all of the conditions in the rule. AWS WAF then continues to inspect the web request based on the remaining rules in the web ACL. You can't specify @COUNT@ for the default action for a @WebACL@ .+waType :: Lens' WafAction WafActionType+waType = lens _waType (\ s a -> s{_waType = a});++instance FromJSON WafAction where+ parseJSON+ = withObject "WafAction"+ (\ x -> WafAction' <$> (x .: "Type"))++instance Hashable WafAction where++instance NFData WafAction where++instance ToJSON WafAction where+ toJSON WafAction'{..}+ = object (catMaybes [Just ("Type" .= _waType)])++-- | Contains the @Rules@ that identify the requests that you want to allow, block, or count. In a @WebACL@ , you also specify a default action (@ALLOW@ or @BLOCK@ ), and the action for each @Rule@ that you add to a @WebACL@ , for example, block requests from specified IP addresses or block requests from specified referrers. You also associate the @WebACL@ with a CloudFront distribution to identify the requests that you want AWS WAF to filter. If you add more than one @Rule@ to a @WebACL@ , a request needs to match only one of the specifications to be allowed, blocked, or counted. For more information, see 'UpdateWebACL' .+--+--+--+-- /See:/ 'webACL' smart constructor.+data WebACL = WebACL'+ { _waMetricName :: !(Maybe Text)+ , _waName :: !(Maybe Text)+ , _waWebACLId :: !Text+ , _waDefaultAction :: !WafAction+ , _waRules :: ![ActivatedRule]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'WebACL' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'waMetricName' - A friendly name or description for the metrics for this @WebACL@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change @MetricName@ after you create the @WebACL@ .+--+-- * 'waName' - A friendly name or description of the @WebACL@ . You can't change the name of a @WebACL@ after you create it.+--+-- * 'waWebACLId' - A unique identifier for a @WebACL@ . You use @WebACLId@ to get information about a @WebACL@ (see 'GetWebACL' ), update a @WebACL@ (see 'UpdateWebACL' ), and delete a @WebACL@ from AWS WAF (see 'DeleteWebACL' ). @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+--+-- * 'waDefaultAction' - The action to perform if none of the @Rules@ contained in the @WebACL@ match. The action is specified by the 'WafAction' object.+--+-- * 'waRules' - An array that contains the action for each @Rule@ in a @WebACL@ , the priority of the @Rule@ , and the ID of the @Rule@ .+webACL+ :: Text -- ^ 'waWebACLId'+ -> WafAction -- ^ 'waDefaultAction'+ -> WebACL+webACL pWebACLId_ pDefaultAction_ =+ WebACL'+ { _waMetricName = Nothing+ , _waName = Nothing+ , _waWebACLId = pWebACLId_+ , _waDefaultAction = pDefaultAction_+ , _waRules = mempty+ }+++-- | A friendly name or description for the metrics for this @WebACL@ . The name can contain only alphanumeric characters (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change @MetricName@ after you create the @WebACL@ .+waMetricName :: Lens' WebACL (Maybe Text)+waMetricName = lens _waMetricName (\ s a -> s{_waMetricName = a});++-- | A friendly name or description of the @WebACL@ . You can't change the name of a @WebACL@ after you create it.+waName :: Lens' WebACL (Maybe Text)+waName = lens _waName (\ s a -> s{_waName = a});++-- | A unique identifier for a @WebACL@ . You use @WebACLId@ to get information about a @WebACL@ (see 'GetWebACL' ), update a @WebACL@ (see 'UpdateWebACL' ), and delete a @WebACL@ from AWS WAF (see 'DeleteWebACL' ). @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+waWebACLId :: Lens' WebACL Text+waWebACLId = lens _waWebACLId (\ s a -> s{_waWebACLId = a});++-- | The action to perform if none of the @Rules@ contained in the @WebACL@ match. The action is specified by the 'WafAction' object.+waDefaultAction :: Lens' WebACL WafAction+waDefaultAction = lens _waDefaultAction (\ s a -> s{_waDefaultAction = a});++-- | An array that contains the action for each @Rule@ in a @WebACL@ , the priority of the @Rule@ , and the ID of the @Rule@ .+waRules :: Lens' WebACL [ActivatedRule]+waRules = lens _waRules (\ s a -> s{_waRules = a}) . _Coerce;++instance FromJSON WebACL where+ parseJSON+ = withObject "WebACL"+ (\ x ->+ WebACL' <$>+ (x .:? "MetricName") <*> (x .:? "Name") <*>+ (x .: "WebACLId")+ <*> (x .: "DefaultAction")+ <*> (x .:? "Rules" .!= mempty))++instance Hashable WebACL where++instance NFData WebACL where++-- | Contains the identifier and the name or description of the 'WebACL' .+--+--+--+-- /See:/ 'webACLSummary' smart constructor.+data WebACLSummary = WebACLSummary'+ { _wasWebACLId :: !Text+ , _wasName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'WebACLSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wasWebACLId' - A unique identifier for a @WebACL@ . You use @WebACLId@ to get information about a @WebACL@ (see 'GetWebACL' ), update a @WebACL@ (see 'UpdateWebACL' ), and delete a @WebACL@ from AWS WAF (see 'DeleteWebACL' ). @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+--+-- * 'wasName' - A friendly name or description of the 'WebACL' . You can't change the name of a @WebACL@ after you create it.+webACLSummary+ :: Text -- ^ 'wasWebACLId'+ -> Text -- ^ 'wasName'+ -> WebACLSummary+webACLSummary pWebACLId_ pName_ =+ WebACLSummary' {_wasWebACLId = pWebACLId_, _wasName = pName_}+++-- | A unique identifier for a @WebACL@ . You use @WebACLId@ to get information about a @WebACL@ (see 'GetWebACL' ), update a @WebACL@ (see 'UpdateWebACL' ), and delete a @WebACL@ from AWS WAF (see 'DeleteWebACL' ). @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+wasWebACLId :: Lens' WebACLSummary Text+wasWebACLId = lens _wasWebACLId (\ s a -> s{_wasWebACLId = a});++-- | A friendly name or description of the 'WebACL' . You can't change the name of a @WebACL@ after you create it.+wasName :: Lens' WebACLSummary Text+wasName = lens _wasName (\ s a -> s{_wasName = a});++instance FromJSON WebACLSummary where+ parseJSON+ = withObject "WebACLSummary"+ (\ x ->+ WebACLSummary' <$>+ (x .: "WebACLId") <*> (x .: "Name"))++instance Hashable WebACLSummary where++instance NFData WebACLSummary where++-- | Specifies whether to insert a @Rule@ into or delete a @Rule@ from a @WebACL@ .+--+--+--+-- /See:/ 'webACLUpdate' smart constructor.+data WebACLUpdate = WebACLUpdate'+ { _wauAction :: !ChangeAction+ , _wauActivatedRule :: !ActivatedRule+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'WebACLUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wauAction' - Specifies whether to insert a @Rule@ into or delete a @Rule@ from a @WebACL@ .+--+-- * 'wauActivatedRule' - The @ActivatedRule@ object in an 'UpdateWebACL' request specifies a @Rule@ that you want to insert or delete, the priority of the @Rule@ in the @WebACL@ , and the action that you want AWS WAF to take when a web request matches the @Rule@ (@ALLOW@ , @BLOCK@ , or @COUNT@ ).+webACLUpdate+ :: ChangeAction -- ^ 'wauAction'+ -> ActivatedRule -- ^ 'wauActivatedRule'+ -> WebACLUpdate+webACLUpdate pAction_ pActivatedRule_ =+ WebACLUpdate' {_wauAction = pAction_, _wauActivatedRule = pActivatedRule_}+++-- | Specifies whether to insert a @Rule@ into or delete a @Rule@ from a @WebACL@ .+wauAction :: Lens' WebACLUpdate ChangeAction+wauAction = lens _wauAction (\ s a -> s{_wauAction = a});++-- | The @ActivatedRule@ object in an 'UpdateWebACL' request specifies a @Rule@ that you want to insert or delete, the priority of the @Rule@ in the @WebACL@ , and the action that you want AWS WAF to take when a web request matches the @Rule@ (@ALLOW@ , @BLOCK@ , or @COUNT@ ).+wauActivatedRule :: Lens' WebACLUpdate ActivatedRule+wauActivatedRule = lens _wauActivatedRule (\ s a -> s{_wauActivatedRule = a});++instance Hashable WebACLUpdate where++instance NFData WebACLUpdate where++instance ToJSON WebACLUpdate where+ toJSON WebACLUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _wauAction),+ Just ("ActivatedRule" .= _wauActivatedRule)])++-- | A complex type that contains @XssMatchTuple@ objects, which specify the parts of web requests that you want AWS WAF to inspect for cross-site scripting attacks and, if you want AWS WAF to inspect a header, the name of the header. If a @XssMatchSet@ contains more than one @XssMatchTuple@ object, a request needs to include cross-site scripting attacks in only one of the specified parts of the request to be considered a match.+--+--+--+-- /See:/ 'xssMatchSet' smart constructor.+data XSSMatchSet = XSSMatchSet'+ { _xmsName :: !(Maybe Text)+ , _xmsXSSMatchSetId :: !Text+ , _xmsXSSMatchTuples :: ![XSSMatchTuple]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'XSSMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'xmsName' - The name, if any, of the @XssMatchSet@ .+--+-- * 'xmsXSSMatchSetId' - A unique identifier for an @XssMatchSet@ . You use @XssMatchSetId@ to get information about an @XssMatchSet@ (see 'GetXssMatchSet' ), update an @XssMatchSet@ (see 'UpdateXssMatchSet' ), insert an @XssMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete an @XssMatchSet@ from AWS WAF (see 'DeleteXssMatchSet' ). @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+--+-- * 'xmsXSSMatchTuples' - Specifies the parts of web requests that you want to inspect for cross-site scripting attacks.+xssMatchSet+ :: Text -- ^ 'xmsXSSMatchSetId'+ -> XSSMatchSet+xssMatchSet pXSSMatchSetId_ =+ XSSMatchSet'+ { _xmsName = Nothing+ , _xmsXSSMatchSetId = pXSSMatchSetId_+ , _xmsXSSMatchTuples = mempty+ }+++-- | The name, if any, of the @XssMatchSet@ .+xmsName :: Lens' XSSMatchSet (Maybe Text)+xmsName = lens _xmsName (\ s a -> s{_xmsName = a});++-- | A unique identifier for an @XssMatchSet@ . You use @XssMatchSetId@ to get information about an @XssMatchSet@ (see 'GetXssMatchSet' ), update an @XssMatchSet@ (see 'UpdateXssMatchSet' ), insert an @XssMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete an @XssMatchSet@ from AWS WAF (see 'DeleteXssMatchSet' ). @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+xmsXSSMatchSetId :: Lens' XSSMatchSet Text+xmsXSSMatchSetId = lens _xmsXSSMatchSetId (\ s a -> s{_xmsXSSMatchSetId = a});++-- | Specifies the parts of web requests that you want to inspect for cross-site scripting attacks.+xmsXSSMatchTuples :: Lens' XSSMatchSet [XSSMatchTuple]+xmsXSSMatchTuples = lens _xmsXSSMatchTuples (\ s a -> s{_xmsXSSMatchTuples = a}) . _Coerce;++instance FromJSON XSSMatchSet where+ parseJSON+ = withObject "XSSMatchSet"+ (\ x ->+ XSSMatchSet' <$>+ (x .:? "Name") <*> (x .: "XssMatchSetId") <*>+ (x .:? "XssMatchTuples" .!= mempty))++instance Hashable XSSMatchSet where++instance NFData XSSMatchSet where++-- | The @Id@ and @Name@ of an @XssMatchSet@ .+--+--+--+-- /See:/ 'xssMatchSetSummary' smart constructor.+data XSSMatchSetSummary = XSSMatchSetSummary'+ { _xmssXSSMatchSetId :: !Text+ , _xmssName :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'XSSMatchSetSummary' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'xmssXSSMatchSetId' - A unique identifier for an @XssMatchSet@ . You use @XssMatchSetId@ to get information about a @XssMatchSet@ (see 'GetXssMatchSet' ), update an @XssMatchSet@ (see 'UpdateXssMatchSet' ), insert an @XssMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete an @XssMatchSet@ from AWS WAF (see 'DeleteXssMatchSet' ). @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+--+-- * 'xmssName' - The name of the @XssMatchSet@ , if any, specified by @Id@ .+xssMatchSetSummary+ :: Text -- ^ 'xmssXSSMatchSetId'+ -> Text -- ^ 'xmssName'+ -> XSSMatchSetSummary+xssMatchSetSummary pXSSMatchSetId_ pName_ =+ XSSMatchSetSummary' {_xmssXSSMatchSetId = pXSSMatchSetId_, _xmssName = pName_}+++-- | A unique identifier for an @XssMatchSet@ . You use @XssMatchSetId@ to get information about a @XssMatchSet@ (see 'GetXssMatchSet' ), update an @XssMatchSet@ (see 'UpdateXssMatchSet' ), insert an @XssMatchSet@ into a @Rule@ or delete one from a @Rule@ (see 'UpdateRule' ), and delete an @XssMatchSet@ from AWS WAF (see 'DeleteXssMatchSet' ). @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+xmssXSSMatchSetId :: Lens' XSSMatchSetSummary Text+xmssXSSMatchSetId = lens _xmssXSSMatchSetId (\ s a -> s{_xmssXSSMatchSetId = a});++-- | The name of the @XssMatchSet@ , if any, specified by @Id@ .+xmssName :: Lens' XSSMatchSetSummary Text+xmssName = lens _xmssName (\ s a -> s{_xmssName = a});++instance FromJSON XSSMatchSetSummary where+ parseJSON+ = withObject "XSSMatchSetSummary"+ (\ x ->+ XSSMatchSetSummary' <$>+ (x .: "XssMatchSetId") <*> (x .: "Name"))++instance Hashable XSSMatchSetSummary where++instance NFData XSSMatchSetSummary where++-- | Specifies the part of a web request that you want to inspect for cross-site scripting attacks and indicates whether you want to add the specification to an 'XssMatchSet' or delete it from an @XssMatchSet@ .+--+--+--+-- /See:/ 'xssMatchSetUpdate' smart constructor.+data XSSMatchSetUpdate = XSSMatchSetUpdate'+ { _xmsuAction :: !ChangeAction+ , _xmsuXSSMatchTuple :: !XSSMatchTuple+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'XSSMatchSetUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'xmsuAction' - Specify @INSERT@ to add a 'XssMatchSetUpdate' to an 'XssMatchSet' . Use @DELETE@ to remove a @XssMatchSetUpdate@ from an @XssMatchSet@ .+--+-- * 'xmsuXSSMatchTuple' - Specifies the part of a web request that you want AWS WAF to inspect for cross-site scripting attacks and, if you want AWS WAF to inspect a header, the name of the header.+xssMatchSetUpdate+ :: ChangeAction -- ^ 'xmsuAction'+ -> XSSMatchTuple -- ^ 'xmsuXSSMatchTuple'+ -> XSSMatchSetUpdate+xssMatchSetUpdate pAction_ pXSSMatchTuple_ =+ XSSMatchSetUpdate'+ {_xmsuAction = pAction_, _xmsuXSSMatchTuple = pXSSMatchTuple_}+++-- | Specify @INSERT@ to add a 'XssMatchSetUpdate' to an 'XssMatchSet' . Use @DELETE@ to remove a @XssMatchSetUpdate@ from an @XssMatchSet@ .+xmsuAction :: Lens' XSSMatchSetUpdate ChangeAction+xmsuAction = lens _xmsuAction (\ s a -> s{_xmsuAction = a});++-- | Specifies the part of a web request that you want AWS WAF to inspect for cross-site scripting attacks and, if you want AWS WAF to inspect a header, the name of the header.+xmsuXSSMatchTuple :: Lens' XSSMatchSetUpdate XSSMatchTuple+xmsuXSSMatchTuple = lens _xmsuXSSMatchTuple (\ s a -> s{_xmsuXSSMatchTuple = a});++instance Hashable XSSMatchSetUpdate where++instance NFData XSSMatchSetUpdate where++instance ToJSON XSSMatchSetUpdate where+ toJSON XSSMatchSetUpdate'{..}+ = object+ (catMaybes+ [Just ("Action" .= _xmsuAction),+ Just ("XssMatchTuple" .= _xmsuXSSMatchTuple)])++-- | Specifies the part of a web request that you want AWS WAF to inspect for cross-site scripting attacks and, if you want AWS WAF to inspect a header, the name of the header.+--+--+--+-- /See:/ 'xssMatchTuple' smart constructor.+data XSSMatchTuple = XSSMatchTuple'+ { _xmtFieldToMatch :: !FieldToMatch+ , _xmtTextTransformation :: !TextTransformation+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'XSSMatchTuple' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'xmtFieldToMatch' - Specifies where in a web request to look for cross-site scripting attacks.+--+-- * 'xmtTextTransformation' - Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @FieldToMatch@ before inspecting a request for a match. __CMD_LINE__ When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value. __NONE__ Specify @NONE@ if you don't want to perform any text transformations.+xssMatchTuple+ :: FieldToMatch -- ^ 'xmtFieldToMatch'+ -> TextTransformation -- ^ 'xmtTextTransformation'+ -> XSSMatchTuple+xssMatchTuple pFieldToMatch_ pTextTransformation_ =+ XSSMatchTuple'+ { _xmtFieldToMatch = pFieldToMatch_+ , _xmtTextTransformation = pTextTransformation_+ }+++-- | Specifies where in a web request to look for cross-site scripting attacks.+xmtFieldToMatch :: Lens' XSSMatchTuple FieldToMatch+xmtFieldToMatch = lens _xmtFieldToMatch (\ s a -> s{_xmtFieldToMatch = a});++-- | Text transformations eliminate some of the unusual formatting that attackers use in web requests in an effort to bypass AWS WAF. If you specify a transformation, AWS WAF performs the transformation on @FieldToMatch@ before inspecting a request for a match. __CMD_LINE__ When you're concerned that attackers are injecting an operating system commandline command and using unusual formatting to disguise some or all of the command, use this option to perform the following transformations: * Delete the following characters: \ " ' ^ * Delete spaces before the following characters: / ( * Replace the following characters with a space: , ; * Replace multiple spaces with one space * Convert uppercase letters (A-Z) to lowercase (a-z) __COMPRESS_WHITE_SPACE__ Use this option to replace the following characters with a space character (decimal 32): * \f, formfeed, decimal 12 * \t, tab, decimal 9 * \n, newline, decimal 10 * \r, carriage return, decimal 13 * \v, vertical tab, decimal 11 * non-breaking space, decimal 160 @COMPRESS_WHITE_SPACE@ also replaces multiple spaces with one space. __HTML_ENTITY_DECODE__ Use this option to replace HTML-encoded characters with unencoded characters. @HTML_ENTITY_DECODE@ performs the following operations: * Replaces @(ampersand)quot;@ with @"@ * Replaces @(ampersand)nbsp;@ with a non-breaking space, decimal 160 * Replaces @(ampersand)lt;@ with a "less than" symbol * Replaces @(ampersand)gt;@ with @>@ * Replaces characters that are represented in hexadecimal format, @(ampersand)#xhhhh;@ , with the corresponding characters * Replaces characters that are represented in decimal format, @(ampersand)#nnnn;@ , with the corresponding characters __LOWERCASE__ Use this option to convert uppercase letters (A-Z) to lowercase (a-z). __URL_DECODE__ Use this option to decode a URL-encoded value. __NONE__ Specify @NONE@ if you don't want to perform any text transformations.+xmtTextTransformation :: Lens' XSSMatchTuple TextTransformation+xmtTextTransformation = lens _xmtTextTransformation (\ s a -> s{_xmtTextTransformation = a});++instance FromJSON XSSMatchTuple where+ parseJSON+ = withObject "XSSMatchTuple"+ (\ x ->+ XSSMatchTuple' <$>+ (x .: "FieldToMatch") <*>+ (x .: "TextTransformation"))++instance Hashable XSSMatchTuple where++instance NFData XSSMatchTuple where++instance ToJSON XSSMatchTuple where+ toJSON XSSMatchTuple'{..}+ = object+ (catMaybes+ [Just ("FieldToMatch" .= _xmtFieldToMatch),+ Just+ ("TextTransformation" .= _xmtTextTransformation)])
+ gen/Network/AWS/WAFRegional/Types/Sum.hs view
@@ -0,0 +1,1202 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.WAFRegional.Types.Sum+-- Copyright : (c) 2013-2017 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)+--+module Network.AWS.WAFRegional.Types.Sum where++import Network.AWS.Prelude++data ChangeAction+ = Delete+ | Insert+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText ChangeAction where+ parser = takeLowerText >>= \case+ "delete" -> pure Delete+ "insert" -> pure Insert+ e -> fromTextError $ "Failure parsing ChangeAction from value: '" <> e+ <> "'. Accepted values: delete, insert"++instance ToText ChangeAction where+ toText = \case+ Delete -> "DELETE"+ Insert -> "INSERT"++instance Hashable ChangeAction+instance NFData ChangeAction+instance ToByteString ChangeAction+instance ToQuery ChangeAction+instance ToHeader ChangeAction++instance ToJSON ChangeAction where+ toJSON = toJSONText++data ChangeTokenStatus+ = Insync+ | Pending+ | Provisioned+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText ChangeTokenStatus where+ parser = takeLowerText >>= \case+ "insync" -> pure Insync+ "pending" -> pure Pending+ "provisioned" -> pure Provisioned+ e -> fromTextError $ "Failure parsing ChangeTokenStatus from value: '" <> e+ <> "'. Accepted values: insync, pending, provisioned"++instance ToText ChangeTokenStatus where+ toText = \case+ Insync -> "INSYNC"+ Pending -> "PENDING"+ Provisioned -> "PROVISIONED"++instance Hashable ChangeTokenStatus+instance NFData ChangeTokenStatus+instance ToByteString ChangeTokenStatus+instance ToQuery ChangeTokenStatus+instance ToHeader ChangeTokenStatus++instance FromJSON ChangeTokenStatus where+ parseJSON = parseJSONText "ChangeTokenStatus"++data ComparisonOperator+ = EQ'+ | GE+ | GT'+ | LE+ | LT'+ | NE+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText ComparisonOperator where+ parser = takeLowerText >>= \case+ "eq" -> pure EQ'+ "ge" -> pure GE+ "gt" -> pure GT'+ "le" -> pure LE+ "lt" -> pure LT'+ "ne" -> pure NE+ e -> fromTextError $ "Failure parsing ComparisonOperator from value: '" <> e+ <> "'. Accepted values: eq, ge, gt, le, lt, ne"++instance ToText ComparisonOperator where+ toText = \case+ EQ' -> "EQ"+ GE -> "GE"+ GT' -> "GT"+ LE -> "LE"+ LT' -> "LT"+ NE -> "NE"++instance Hashable ComparisonOperator+instance NFData ComparisonOperator+instance ToByteString ComparisonOperator+instance ToQuery ComparisonOperator+instance ToHeader ComparisonOperator++instance ToJSON ComparisonOperator where+ toJSON = toJSONText++instance FromJSON ComparisonOperator where+ parseJSON = parseJSONText "ComparisonOperator"++data GeoMatchConstraintType =+ Country+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText GeoMatchConstraintType where+ parser = takeLowerText >>= \case+ "country" -> pure Country+ e -> fromTextError $ "Failure parsing GeoMatchConstraintType from value: '" <> e+ <> "'. Accepted values: country"++instance ToText GeoMatchConstraintType where+ toText = \case+ Country -> "Country"++instance Hashable GeoMatchConstraintType+instance NFData GeoMatchConstraintType+instance ToByteString GeoMatchConstraintType+instance ToQuery GeoMatchConstraintType+instance ToHeader GeoMatchConstraintType++instance ToJSON GeoMatchConstraintType where+ toJSON = toJSONText++instance FromJSON GeoMatchConstraintType where+ parseJSON = parseJSONText "GeoMatchConstraintType"++data GeoMatchConstraintValue+ = GMCVAD+ | GMCVAE+ | GMCVAF+ | GMCVAG+ | GMCVAI+ | GMCVAL+ | GMCVAM+ | GMCVAO+ | GMCVAQ+ | GMCVAR+ | GMCVAS+ | GMCVAT+ | GMCVAU+ | GMCVAW+ | GMCVAX+ | GMCVAZ+ | GMCVBA+ | GMCVBB+ | GMCVBD+ | GMCVBE+ | GMCVBF+ | GMCVBG+ | GMCVBH+ | GMCVBI+ | GMCVBJ+ | GMCVBL+ | GMCVBM+ | GMCVBN+ | GMCVBO+ | GMCVBQ+ | GMCVBR+ | GMCVBS+ | GMCVBT+ | GMCVBV+ | GMCVBW+ | GMCVBY+ | GMCVBZ+ | GMCVCA+ | GMCVCC+ | GMCVCD+ | GMCVCF+ | GMCVCG+ | GMCVCH+ | GMCVCI+ | GMCVCK+ | GMCVCL+ | GMCVCM+ | GMCVCN+ | GMCVCO+ | GMCVCR+ | GMCVCU+ | GMCVCV+ | GMCVCW+ | GMCVCX+ | GMCVCY+ | GMCVCZ+ | GMCVDE+ | GMCVDJ+ | GMCVDK+ | GMCVDM+ | GMCVDO+ | GMCVDZ+ | GMCVEC+ | GMCVEE+ | GMCVEG+ | GMCVEH+ | GMCVER+ | GMCVES+ | GMCVET+ | GMCVFI+ | GMCVFJ+ | GMCVFK+ | GMCVFM+ | GMCVFO+ | GMCVFR+ | GMCVGA+ | GMCVGB+ | GMCVGD+ | GMCVGE+ | GMCVGF+ | GMCVGG+ | GMCVGH+ | GMCVGI+ | GMCVGL+ | GMCVGM+ | GMCVGN+ | GMCVGP+ | GMCVGQ+ | GMCVGR+ | GMCVGS+ | GMCVGT'+ | GMCVGU+ | GMCVGW+ | GMCVGY+ | GMCVHK+ | GMCVHM+ | GMCVHN+ | GMCVHR+ | GMCVHT+ | GMCVHU+ | GMCVIE+ | GMCVIL+ | GMCVIM+ | GMCVIN+ | GMCVIO+ | GMCVIQ+ | GMCVIR+ | GMCVIS+ | GMCVIT+ | GMCVId+ | GMCVJE+ | GMCVJM+ | GMCVJO+ | GMCVJP+ | GMCVKE+ | GMCVKG+ | GMCVKH+ | GMCVKI+ | GMCVKM+ | GMCVKN+ | GMCVKP+ | GMCVKR+ | GMCVKW+ | GMCVKY+ | GMCVKZ+ | GMCVLA+ | GMCVLB+ | GMCVLC+ | GMCVLI+ | GMCVLK+ | GMCVLR+ | GMCVLS+ | GMCVLT'+ | GMCVLU+ | GMCVLV+ | GMCVLY+ | GMCVMA+ | GMCVMC+ | GMCVMD+ | GMCVME+ | GMCVMF+ | GMCVMG+ | GMCVMH+ | GMCVMK+ | GMCVML+ | GMCVMM+ | GMCVMN+ | GMCVMO+ | GMCVMP+ | GMCVMQ+ | GMCVMR+ | GMCVMS+ | GMCVMT+ | GMCVMU+ | GMCVMV+ | GMCVMW+ | GMCVMX+ | GMCVMY+ | GMCVMZ+ | GMCVNA+ | GMCVNC+ | GMCVNE+ | GMCVNF+ | GMCVNG+ | GMCVNI+ | GMCVNL+ | GMCVNO+ | GMCVNP+ | GMCVNR+ | GMCVNU+ | GMCVNZ+ | GMCVOM+ | GMCVPA+ | GMCVPE+ | GMCVPF+ | GMCVPG+ | GMCVPH+ | GMCVPK+ | GMCVPL+ | GMCVPM+ | GMCVPN+ | GMCVPR+ | GMCVPS+ | GMCVPT+ | GMCVPW+ | GMCVPY+ | GMCVQA+ | GMCVRE+ | GMCVRO+ | GMCVRS+ | GMCVRU+ | GMCVRW+ | GMCVSA+ | GMCVSB+ | GMCVSC+ | GMCVSD+ | GMCVSE+ | GMCVSG+ | GMCVSH+ | GMCVSI+ | GMCVSJ+ | GMCVSK+ | GMCVSL+ | GMCVSM+ | GMCVSN+ | GMCVSO+ | GMCVSR+ | GMCVSS+ | GMCVST+ | GMCVSV+ | GMCVSX+ | GMCVSY+ | GMCVSZ+ | GMCVTC+ | GMCVTD+ | GMCVTF+ | GMCVTG+ | GMCVTH+ | GMCVTJ+ | GMCVTK+ | GMCVTL+ | GMCVTM+ | GMCVTN+ | GMCVTO+ | GMCVTR+ | GMCVTT+ | GMCVTV+ | GMCVTW+ | GMCVTZ+ | GMCVUA+ | GMCVUG+ | GMCVUM+ | GMCVUS+ | GMCVUY+ | GMCVUZ+ | GMCVVA+ | GMCVVC+ | GMCVVE+ | GMCVVG+ | GMCVVI+ | GMCVVN+ | GMCVVU+ | GMCVWF+ | GMCVWS+ | GMCVYE+ | GMCVYT+ | GMCVZA+ | GMCVZM+ | GMCVZW+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText GeoMatchConstraintValue where+ parser = takeLowerText >>= \case+ "ad" -> pure GMCVAD+ "ae" -> pure GMCVAE+ "af" -> pure GMCVAF+ "ag" -> pure GMCVAG+ "ai" -> pure GMCVAI+ "al" -> pure GMCVAL+ "am" -> pure GMCVAM+ "ao" -> pure GMCVAO+ "aq" -> pure GMCVAQ+ "ar" -> pure GMCVAR+ "as" -> pure GMCVAS+ "at" -> pure GMCVAT+ "au" -> pure GMCVAU+ "aw" -> pure GMCVAW+ "ax" -> pure GMCVAX+ "az" -> pure GMCVAZ+ "ba" -> pure GMCVBA+ "bb" -> pure GMCVBB+ "bd" -> pure GMCVBD+ "be" -> pure GMCVBE+ "bf" -> pure GMCVBF+ "bg" -> pure GMCVBG+ "bh" -> pure GMCVBH+ "bi" -> pure GMCVBI+ "bj" -> pure GMCVBJ+ "bl" -> pure GMCVBL+ "bm" -> pure GMCVBM+ "bn" -> pure GMCVBN+ "bo" -> pure GMCVBO+ "bq" -> pure GMCVBQ+ "br" -> pure GMCVBR+ "bs" -> pure GMCVBS+ "bt" -> pure GMCVBT+ "bv" -> pure GMCVBV+ "bw" -> pure GMCVBW+ "by" -> pure GMCVBY+ "bz" -> pure GMCVBZ+ "ca" -> pure GMCVCA+ "cc" -> pure GMCVCC+ "cd" -> pure GMCVCD+ "cf" -> pure GMCVCF+ "cg" -> pure GMCVCG+ "ch" -> pure GMCVCH+ "ci" -> pure GMCVCI+ "ck" -> pure GMCVCK+ "cl" -> pure GMCVCL+ "cm" -> pure GMCVCM+ "cn" -> pure GMCVCN+ "co" -> pure GMCVCO+ "cr" -> pure GMCVCR+ "cu" -> pure GMCVCU+ "cv" -> pure GMCVCV+ "cw" -> pure GMCVCW+ "cx" -> pure GMCVCX+ "cy" -> pure GMCVCY+ "cz" -> pure GMCVCZ+ "de" -> pure GMCVDE+ "dj" -> pure GMCVDJ+ "dk" -> pure GMCVDK+ "dm" -> pure GMCVDM+ "do" -> pure GMCVDO+ "dz" -> pure GMCVDZ+ "ec" -> pure GMCVEC+ "ee" -> pure GMCVEE+ "eg" -> pure GMCVEG+ "eh" -> pure GMCVEH+ "er" -> pure GMCVER+ "es" -> pure GMCVES+ "et" -> pure GMCVET+ "fi" -> pure GMCVFI+ "fj" -> pure GMCVFJ+ "fk" -> pure GMCVFK+ "fm" -> pure GMCVFM+ "fo" -> pure GMCVFO+ "fr" -> pure GMCVFR+ "ga" -> pure GMCVGA+ "gb" -> pure GMCVGB+ "gd" -> pure GMCVGD+ "ge" -> pure GMCVGE+ "gf" -> pure GMCVGF+ "gg" -> pure GMCVGG+ "gh" -> pure GMCVGH+ "gi" -> pure GMCVGI+ "gl" -> pure GMCVGL+ "gm" -> pure GMCVGM+ "gn" -> pure GMCVGN+ "gp" -> pure GMCVGP+ "gq" -> pure GMCVGQ+ "gr" -> pure GMCVGR+ "gs" -> pure GMCVGS+ "gt" -> pure GMCVGT'+ "gu" -> pure GMCVGU+ "gw" -> pure GMCVGW+ "gy" -> pure GMCVGY+ "hk" -> pure GMCVHK+ "hm" -> pure GMCVHM+ "hn" -> pure GMCVHN+ "hr" -> pure GMCVHR+ "ht" -> pure GMCVHT+ "hu" -> pure GMCVHU+ "ie" -> pure GMCVIE+ "il" -> pure GMCVIL+ "im" -> pure GMCVIM+ "in" -> pure GMCVIN+ "io" -> pure GMCVIO+ "iq" -> pure GMCVIQ+ "ir" -> pure GMCVIR+ "is" -> pure GMCVIS+ "it" -> pure GMCVIT+ "id" -> pure GMCVId+ "je" -> pure GMCVJE+ "jm" -> pure GMCVJM+ "jo" -> pure GMCVJO+ "jp" -> pure GMCVJP+ "ke" -> pure GMCVKE+ "kg" -> pure GMCVKG+ "kh" -> pure GMCVKH+ "ki" -> pure GMCVKI+ "km" -> pure GMCVKM+ "kn" -> pure GMCVKN+ "kp" -> pure GMCVKP+ "kr" -> pure GMCVKR+ "kw" -> pure GMCVKW+ "ky" -> pure GMCVKY+ "kz" -> pure GMCVKZ+ "la" -> pure GMCVLA+ "lb" -> pure GMCVLB+ "lc" -> pure GMCVLC+ "li" -> pure GMCVLI+ "lk" -> pure GMCVLK+ "lr" -> pure GMCVLR+ "ls" -> pure GMCVLS+ "lt" -> pure GMCVLT'+ "lu" -> pure GMCVLU+ "lv" -> pure GMCVLV+ "ly" -> pure GMCVLY+ "ma" -> pure GMCVMA+ "mc" -> pure GMCVMC+ "md" -> pure GMCVMD+ "me" -> pure GMCVME+ "mf" -> pure GMCVMF+ "mg" -> pure GMCVMG+ "mh" -> pure GMCVMH+ "mk" -> pure GMCVMK+ "ml" -> pure GMCVML+ "mm" -> pure GMCVMM+ "mn" -> pure GMCVMN+ "mo" -> pure GMCVMO+ "mp" -> pure GMCVMP+ "mq" -> pure GMCVMQ+ "mr" -> pure GMCVMR+ "ms" -> pure GMCVMS+ "mt" -> pure GMCVMT+ "mu" -> pure GMCVMU+ "mv" -> pure GMCVMV+ "mw" -> pure GMCVMW+ "mx" -> pure GMCVMX+ "my" -> pure GMCVMY+ "mz" -> pure GMCVMZ+ "na" -> pure GMCVNA+ "nc" -> pure GMCVNC+ "ne" -> pure GMCVNE+ "nf" -> pure GMCVNF+ "ng" -> pure GMCVNG+ "ni" -> pure GMCVNI+ "nl" -> pure GMCVNL+ "no" -> pure GMCVNO+ "np" -> pure GMCVNP+ "nr" -> pure GMCVNR+ "nu" -> pure GMCVNU+ "nz" -> pure GMCVNZ+ "om" -> pure GMCVOM+ "pa" -> pure GMCVPA+ "pe" -> pure GMCVPE+ "pf" -> pure GMCVPF+ "pg" -> pure GMCVPG+ "ph" -> pure GMCVPH+ "pk" -> pure GMCVPK+ "pl" -> pure GMCVPL+ "pm" -> pure GMCVPM+ "pn" -> pure GMCVPN+ "pr" -> pure GMCVPR+ "ps" -> pure GMCVPS+ "pt" -> pure GMCVPT+ "pw" -> pure GMCVPW+ "py" -> pure GMCVPY+ "qa" -> pure GMCVQA+ "re" -> pure GMCVRE+ "ro" -> pure GMCVRO+ "rs" -> pure GMCVRS+ "ru" -> pure GMCVRU+ "rw" -> pure GMCVRW+ "sa" -> pure GMCVSA+ "sb" -> pure GMCVSB+ "sc" -> pure GMCVSC+ "sd" -> pure GMCVSD+ "se" -> pure GMCVSE+ "sg" -> pure GMCVSG+ "sh" -> pure GMCVSH+ "si" -> pure GMCVSI+ "sj" -> pure GMCVSJ+ "sk" -> pure GMCVSK+ "sl" -> pure GMCVSL+ "sm" -> pure GMCVSM+ "sn" -> pure GMCVSN+ "so" -> pure GMCVSO+ "sr" -> pure GMCVSR+ "ss" -> pure GMCVSS+ "st" -> pure GMCVST+ "sv" -> pure GMCVSV+ "sx" -> pure GMCVSX+ "sy" -> pure GMCVSY+ "sz" -> pure GMCVSZ+ "tc" -> pure GMCVTC+ "td" -> pure GMCVTD+ "tf" -> pure GMCVTF+ "tg" -> pure GMCVTG+ "th" -> pure GMCVTH+ "tj" -> pure GMCVTJ+ "tk" -> pure GMCVTK+ "tl" -> pure GMCVTL+ "tm" -> pure GMCVTM+ "tn" -> pure GMCVTN+ "to" -> pure GMCVTO+ "tr" -> pure GMCVTR+ "tt" -> pure GMCVTT+ "tv" -> pure GMCVTV+ "tw" -> pure GMCVTW+ "tz" -> pure GMCVTZ+ "ua" -> pure GMCVUA+ "ug" -> pure GMCVUG+ "um" -> pure GMCVUM+ "us" -> pure GMCVUS+ "uy" -> pure GMCVUY+ "uz" -> pure GMCVUZ+ "va" -> pure GMCVVA+ "vc" -> pure GMCVVC+ "ve" -> pure GMCVVE+ "vg" -> pure GMCVVG+ "vi" -> pure GMCVVI+ "vn" -> pure GMCVVN+ "vu" -> pure GMCVVU+ "wf" -> pure GMCVWF+ "ws" -> pure GMCVWS+ "ye" -> pure GMCVYE+ "yt" -> pure GMCVYT+ "za" -> pure GMCVZA+ "zm" -> pure GMCVZM+ "zw" -> pure GMCVZW+ e -> fromTextError $ "Failure parsing GeoMatchConstraintValue from value: '" <> e+ <> "'. Accepted values: ad, ae, af, ag, ai, al, am, ao, aq, ar, as, at, au, aw, ax, az, ba, bb, bd, be, bf, bg, bh, bi, bj, bl, bm, bn, bo, bq, br, bs, bt, bv, bw, by, bz, ca, cc, cd, cf, cg, ch, ci, ck, cl, cm, cn, co, cr, cu, cv, cw, cx, cy, cz, de, dj, dk, dm, do, dz, ec, ee, eg, eh, er, es, et, fi, fj, fk, fm, fo, fr, ga, gb, gd, ge, gf, gg, gh, gi, gl, gm, gn, gp, gq, gr, gs, gt, gu, gw, gy, hk, hm, hn, hr, ht, hu, ie, il, im, in, io, iq, ir, is, it, id, je, jm, jo, jp, ke, kg, kh, ki, km, kn, kp, kr, kw, ky, kz, la, lb, lc, li, lk, lr, ls, lt, lu, lv, ly, ma, mc, md, me, mf, mg, mh, mk, ml, mm, mn, mo, mp, mq, mr, ms, mt, mu, mv, mw, mx, my, mz, na, nc, ne, nf, ng, ni, nl, no, np, nr, nu, nz, om, pa, pe, pf, pg, ph, pk, pl, pm, pn, pr, ps, pt, pw, py, qa, re, ro, rs, ru, rw, sa, sb, sc, sd, se, sg, sh, si, sj, sk, sl, sm, sn, so, sr, ss, st, sv, sx, sy, sz, tc, td, tf, tg, th, tj, tk, tl, tm, tn, to, tr, tt, tv, tw, tz, ua, ug, um, us, uy, uz, va, vc, ve, vg, vi, vn, vu, wf, ws, ye, yt, za, zm, zw"++instance ToText GeoMatchConstraintValue where+ toText = \case+ GMCVAD -> "AD"+ GMCVAE -> "AE"+ GMCVAF -> "AF"+ GMCVAG -> "AG"+ GMCVAI -> "AI"+ GMCVAL -> "AL"+ GMCVAM -> "AM"+ GMCVAO -> "AO"+ GMCVAQ -> "AQ"+ GMCVAR -> "AR"+ GMCVAS -> "AS"+ GMCVAT -> "AT"+ GMCVAU -> "AU"+ GMCVAW -> "AW"+ GMCVAX -> "AX"+ GMCVAZ -> "AZ"+ GMCVBA -> "BA"+ GMCVBB -> "BB"+ GMCVBD -> "BD"+ GMCVBE -> "BE"+ GMCVBF -> "BF"+ GMCVBG -> "BG"+ GMCVBH -> "BH"+ GMCVBI -> "BI"+ GMCVBJ -> "BJ"+ GMCVBL -> "BL"+ GMCVBM -> "BM"+ GMCVBN -> "BN"+ GMCVBO -> "BO"+ GMCVBQ -> "BQ"+ GMCVBR -> "BR"+ GMCVBS -> "BS"+ GMCVBT -> "BT"+ GMCVBV -> "BV"+ GMCVBW -> "BW"+ GMCVBY -> "BY"+ GMCVBZ -> "BZ"+ GMCVCA -> "CA"+ GMCVCC -> "CC"+ GMCVCD -> "CD"+ GMCVCF -> "CF"+ GMCVCG -> "CG"+ GMCVCH -> "CH"+ GMCVCI -> "CI"+ GMCVCK -> "CK"+ GMCVCL -> "CL"+ GMCVCM -> "CM"+ GMCVCN -> "CN"+ GMCVCO -> "CO"+ GMCVCR -> "CR"+ GMCVCU -> "CU"+ GMCVCV -> "CV"+ GMCVCW -> "CW"+ GMCVCX -> "CX"+ GMCVCY -> "CY"+ GMCVCZ -> "CZ"+ GMCVDE -> "DE"+ GMCVDJ -> "DJ"+ GMCVDK -> "DK"+ GMCVDM -> "DM"+ GMCVDO -> "DO"+ GMCVDZ -> "DZ"+ GMCVEC -> "EC"+ GMCVEE -> "EE"+ GMCVEG -> "EG"+ GMCVEH -> "EH"+ GMCVER -> "ER"+ GMCVES -> "ES"+ GMCVET -> "ET"+ GMCVFI -> "FI"+ GMCVFJ -> "FJ"+ GMCVFK -> "FK"+ GMCVFM -> "FM"+ GMCVFO -> "FO"+ GMCVFR -> "FR"+ GMCVGA -> "GA"+ GMCVGB -> "GB"+ GMCVGD -> "GD"+ GMCVGE -> "GE"+ GMCVGF -> "GF"+ GMCVGG -> "GG"+ GMCVGH -> "GH"+ GMCVGI -> "GI"+ GMCVGL -> "GL"+ GMCVGM -> "GM"+ GMCVGN -> "GN"+ GMCVGP -> "GP"+ GMCVGQ -> "GQ"+ GMCVGR -> "GR"+ GMCVGS -> "GS"+ GMCVGT' -> "GT"+ GMCVGU -> "GU"+ GMCVGW -> "GW"+ GMCVGY -> "GY"+ GMCVHK -> "HK"+ GMCVHM -> "HM"+ GMCVHN -> "HN"+ GMCVHR -> "HR"+ GMCVHT -> "HT"+ GMCVHU -> "HU"+ GMCVIE -> "IE"+ GMCVIL -> "IL"+ GMCVIM -> "IM"+ GMCVIN -> "IN"+ GMCVIO -> "IO"+ GMCVIQ -> "IQ"+ GMCVIR -> "IR"+ GMCVIS -> "IS"+ GMCVIT -> "IT"+ GMCVId -> "ID"+ GMCVJE -> "JE"+ GMCVJM -> "JM"+ GMCVJO -> "JO"+ GMCVJP -> "JP"+ GMCVKE -> "KE"+ GMCVKG -> "KG"+ GMCVKH -> "KH"+ GMCVKI -> "KI"+ GMCVKM -> "KM"+ GMCVKN -> "KN"+ GMCVKP -> "KP"+ GMCVKR -> "KR"+ GMCVKW -> "KW"+ GMCVKY -> "KY"+ GMCVKZ -> "KZ"+ GMCVLA -> "LA"+ GMCVLB -> "LB"+ GMCVLC -> "LC"+ GMCVLI -> "LI"+ GMCVLK -> "LK"+ GMCVLR -> "LR"+ GMCVLS -> "LS"+ GMCVLT' -> "LT"+ GMCVLU -> "LU"+ GMCVLV -> "LV"+ GMCVLY -> "LY"+ GMCVMA -> "MA"+ GMCVMC -> "MC"+ GMCVMD -> "MD"+ GMCVME -> "ME"+ GMCVMF -> "MF"+ GMCVMG -> "MG"+ GMCVMH -> "MH"+ GMCVMK -> "MK"+ GMCVML -> "ML"+ GMCVMM -> "MM"+ GMCVMN -> "MN"+ GMCVMO -> "MO"+ GMCVMP -> "MP"+ GMCVMQ -> "MQ"+ GMCVMR -> "MR"+ GMCVMS -> "MS"+ GMCVMT -> "MT"+ GMCVMU -> "MU"+ GMCVMV -> "MV"+ GMCVMW -> "MW"+ GMCVMX -> "MX"+ GMCVMY -> "MY"+ GMCVMZ -> "MZ"+ GMCVNA -> "NA"+ GMCVNC -> "NC"+ GMCVNE -> "NE"+ GMCVNF -> "NF"+ GMCVNG -> "NG"+ GMCVNI -> "NI"+ GMCVNL -> "NL"+ GMCVNO -> "NO"+ GMCVNP -> "NP"+ GMCVNR -> "NR"+ GMCVNU -> "NU"+ GMCVNZ -> "NZ"+ GMCVOM -> "OM"+ GMCVPA -> "PA"+ GMCVPE -> "PE"+ GMCVPF -> "PF"+ GMCVPG -> "PG"+ GMCVPH -> "PH"+ GMCVPK -> "PK"+ GMCVPL -> "PL"+ GMCVPM -> "PM"+ GMCVPN -> "PN"+ GMCVPR -> "PR"+ GMCVPS -> "PS"+ GMCVPT -> "PT"+ GMCVPW -> "PW"+ GMCVPY -> "PY"+ GMCVQA -> "QA"+ GMCVRE -> "RE"+ GMCVRO -> "RO"+ GMCVRS -> "RS"+ GMCVRU -> "RU"+ GMCVRW -> "RW"+ GMCVSA -> "SA"+ GMCVSB -> "SB"+ GMCVSC -> "SC"+ GMCVSD -> "SD"+ GMCVSE -> "SE"+ GMCVSG -> "SG"+ GMCVSH -> "SH"+ GMCVSI -> "SI"+ GMCVSJ -> "SJ"+ GMCVSK -> "SK"+ GMCVSL -> "SL"+ GMCVSM -> "SM"+ GMCVSN -> "SN"+ GMCVSO -> "SO"+ GMCVSR -> "SR"+ GMCVSS -> "SS"+ GMCVST -> "ST"+ GMCVSV -> "SV"+ GMCVSX -> "SX"+ GMCVSY -> "SY"+ GMCVSZ -> "SZ"+ GMCVTC -> "TC"+ GMCVTD -> "TD"+ GMCVTF -> "TF"+ GMCVTG -> "TG"+ GMCVTH -> "TH"+ GMCVTJ -> "TJ"+ GMCVTK -> "TK"+ GMCVTL -> "TL"+ GMCVTM -> "TM"+ GMCVTN -> "TN"+ GMCVTO -> "TO"+ GMCVTR -> "TR"+ GMCVTT -> "TT"+ GMCVTV -> "TV"+ GMCVTW -> "TW"+ GMCVTZ -> "TZ"+ GMCVUA -> "UA"+ GMCVUG -> "UG"+ GMCVUM -> "UM"+ GMCVUS -> "US"+ GMCVUY -> "UY"+ GMCVUZ -> "UZ"+ GMCVVA -> "VA"+ GMCVVC -> "VC"+ GMCVVE -> "VE"+ GMCVVG -> "VG"+ GMCVVI -> "VI"+ GMCVVN -> "VN"+ GMCVVU -> "VU"+ GMCVWF -> "WF"+ GMCVWS -> "WS"+ GMCVYE -> "YE"+ GMCVYT -> "YT"+ GMCVZA -> "ZA"+ GMCVZM -> "ZM"+ GMCVZW -> "ZW"++instance Hashable GeoMatchConstraintValue+instance NFData GeoMatchConstraintValue+instance ToByteString GeoMatchConstraintValue+instance ToQuery GeoMatchConstraintValue+instance ToHeader GeoMatchConstraintValue++instance ToJSON GeoMatchConstraintValue where+ toJSON = toJSONText++instance FromJSON GeoMatchConstraintValue where+ parseJSON = parseJSONText "GeoMatchConstraintValue"++data IPSetDescriptorType+ = IPV4+ | IPV6+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText IPSetDescriptorType where+ parser = takeLowerText >>= \case+ "ipv4" -> pure IPV4+ "ipv6" -> pure IPV6+ e -> fromTextError $ "Failure parsing IPSetDescriptorType from value: '" <> e+ <> "'. Accepted values: ipv4, ipv6"++instance ToText IPSetDescriptorType where+ toText = \case+ IPV4 -> "IPV4"+ IPV6 -> "IPV6"++instance Hashable IPSetDescriptorType+instance NFData IPSetDescriptorType+instance ToByteString IPSetDescriptorType+instance ToQuery IPSetDescriptorType+instance ToHeader IPSetDescriptorType++instance ToJSON IPSetDescriptorType where+ toJSON = toJSONText++instance FromJSON IPSetDescriptorType where+ parseJSON = parseJSONText "IPSetDescriptorType"++data MatchFieldType+ = Body+ | Header+ | Method+ | QueryString+ | URI+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText MatchFieldType where+ parser = takeLowerText >>= \case+ "body" -> pure Body+ "header" -> pure Header+ "method" -> pure Method+ "query_string" -> pure QueryString+ "uri" -> pure URI+ e -> fromTextError $ "Failure parsing MatchFieldType from value: '" <> e+ <> "'. Accepted values: body, header, method, query_string, uri"++instance ToText MatchFieldType where+ toText = \case+ Body -> "BODY"+ Header -> "HEADER"+ Method -> "METHOD"+ QueryString -> "QUERY_STRING"+ URI -> "URI"++instance Hashable MatchFieldType+instance NFData MatchFieldType+instance ToByteString MatchFieldType+instance ToQuery MatchFieldType+instance ToHeader MatchFieldType++instance ToJSON MatchFieldType where+ toJSON = toJSONText++instance FromJSON MatchFieldType where+ parseJSON = parseJSONText "MatchFieldType"++data PositionalConstraint+ = Contains+ | ContainsWord+ | EndsWith+ | Exactly+ | StartsWith+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText PositionalConstraint where+ parser = takeLowerText >>= \case+ "contains" -> pure Contains+ "contains_word" -> pure ContainsWord+ "ends_with" -> pure EndsWith+ "exactly" -> pure Exactly+ "starts_with" -> pure StartsWith+ e -> fromTextError $ "Failure parsing PositionalConstraint from value: '" <> e+ <> "'. Accepted values: contains, contains_word, ends_with, exactly, starts_with"++instance ToText PositionalConstraint where+ toText = \case+ Contains -> "CONTAINS"+ ContainsWord -> "CONTAINS_WORD"+ EndsWith -> "ENDS_WITH"+ Exactly -> "EXACTLY"+ StartsWith -> "STARTS_WITH"++instance Hashable PositionalConstraint+instance NFData PositionalConstraint+instance ToByteString PositionalConstraint+instance ToQuery PositionalConstraint+instance ToHeader PositionalConstraint++instance ToJSON PositionalConstraint where+ toJSON = toJSONText++instance FromJSON PositionalConstraint where+ parseJSON = parseJSONText "PositionalConstraint"++data PredicateType+ = ByteMatch+ | GeoMatch+ | IPMatch+ | RegexMatch+ | SizeConstraint+ | SqlInjectionMatch+ | XSSMatch+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText PredicateType where+ parser = takeLowerText >>= \case+ "bytematch" -> pure ByteMatch+ "geomatch" -> pure GeoMatch+ "ipmatch" -> pure IPMatch+ "regexmatch" -> pure RegexMatch+ "sizeconstraint" -> pure SizeConstraint+ "sqlinjectionmatch" -> pure SqlInjectionMatch+ "xssmatch" -> pure XSSMatch+ e -> fromTextError $ "Failure parsing PredicateType from value: '" <> e+ <> "'. Accepted values: bytematch, geomatch, ipmatch, regexmatch, sizeconstraint, sqlinjectionmatch, xssmatch"++instance ToText PredicateType where+ toText = \case+ ByteMatch -> "ByteMatch"+ GeoMatch -> "GeoMatch"+ IPMatch -> "IPMatch"+ RegexMatch -> "RegexMatch"+ SizeConstraint -> "SizeConstraint"+ SqlInjectionMatch -> "SqlInjectionMatch"+ XSSMatch -> "XssMatch"++instance Hashable PredicateType+instance NFData PredicateType+instance ToByteString PredicateType+instance ToQuery PredicateType+instance ToHeader PredicateType++instance ToJSON PredicateType where+ toJSON = toJSONText++instance FromJSON PredicateType where+ parseJSON = parseJSONText "PredicateType"++data RateKey =+ IP+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText RateKey where+ parser = takeLowerText >>= \case+ "ip" -> pure IP+ e -> fromTextError $ "Failure parsing RateKey from value: '" <> e+ <> "'. Accepted values: ip"++instance ToText RateKey where+ toText = \case+ IP -> "IP"++instance Hashable RateKey+instance NFData RateKey+instance ToByteString RateKey+instance ToQuery RateKey+instance ToHeader RateKey++instance ToJSON RateKey where+ toJSON = toJSONText++instance FromJSON RateKey where+ parseJSON = parseJSONText "RateKey"++data TextTransformation+ = CmdLine+ | CompressWhiteSpace+ | HTMLEntityDecode+ | Lowercase+ | None+ | URLDecode+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText TextTransformation where+ parser = takeLowerText >>= \case+ "cmd_line" -> pure CmdLine+ "compress_white_space" -> pure CompressWhiteSpace+ "html_entity_decode" -> pure HTMLEntityDecode+ "lowercase" -> pure Lowercase+ "none" -> pure None+ "url_decode" -> pure URLDecode+ e -> fromTextError $ "Failure parsing TextTransformation from value: '" <> e+ <> "'. Accepted values: cmd_line, compress_white_space, html_entity_decode, lowercase, none, url_decode"++instance ToText TextTransformation where+ toText = \case+ CmdLine -> "CMD_LINE"+ CompressWhiteSpace -> "COMPRESS_WHITE_SPACE"+ HTMLEntityDecode -> "HTML_ENTITY_DECODE"+ Lowercase -> "LOWERCASE"+ None -> "NONE"+ URLDecode -> "URL_DECODE"++instance Hashable TextTransformation+instance NFData TextTransformation+instance ToByteString TextTransformation+instance ToQuery TextTransformation+instance ToHeader TextTransformation++instance ToJSON TextTransformation where+ toJSON = toJSONText++instance FromJSON TextTransformation where+ parseJSON = parseJSONText "TextTransformation"++data WafActionType+ = Allow+ | Block+ | Count+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText WafActionType where+ parser = takeLowerText >>= \case+ "allow" -> pure Allow+ "block" -> pure Block+ "count" -> pure Count+ e -> fromTextError $ "Failure parsing WafActionType from value: '" <> e+ <> "'. Accepted values: allow, block, count"++instance ToText WafActionType where+ toText = \case+ Allow -> "ALLOW"+ Block -> "BLOCK"+ Count -> "COUNT"++instance Hashable WafActionType+instance NFData WafActionType+instance ToByteString WafActionType+instance ToQuery WafActionType+instance ToHeader WafActionType++instance ToJSON WafActionType where+ toJSON = toJSONText++instance FromJSON WafActionType where+ parseJSON = parseJSONText "WafActionType"++data WafRuleType+ = RateBased+ | Regular+ deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)+++instance FromText WafRuleType where+ parser = takeLowerText >>= \case+ "rate_based" -> pure RateBased+ "regular" -> pure Regular+ e -> fromTextError $ "Failure parsing WafRuleType from value: '" <> e+ <> "'. Accepted values: rate_based, regular"++instance ToText WafRuleType where+ toText = \case+ RateBased -> "RATE_BASED"+ Regular -> "REGULAR"++instance Hashable WafRuleType+instance NFData WafRuleType+instance ToByteString WafRuleType+instance ToQuery WafRuleType+instance ToHeader WafRuleType++instance ToJSON WafRuleType where+ toJSON = toJSONText++instance FromJSON WafRuleType where+ parseJSON = parseJSONText "WafRuleType"
+ gen/Network/AWS/WAFRegional/UpdateByteMatchSet.hs view
@@ -0,0 +1,185 @@+{-# 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.WAFRegional.UpdateByteMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'ByteMatchTuple' objects (filters) in a 'ByteMatchSet' . For each @ByteMatchTuple@ object, you specify the following values:+--+--+-- * Whether to insert or delete the object from the array. If you want to change a @ByteMatchSetUpdate@ object, you delete the existing object and add a new one.+--+-- * The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the @User-Agent@ header.+--+-- * The bytes (typically a string that corresponds with ASCII characters) that you want AWS WAF to look for. For more information, including how you specify the values for the AWS WAF API and the AWS CLI or SDKs, see @TargetString@ in the 'ByteMatchTuple' data type.+--+-- * Where to look, such as at the beginning or the end of a query string.+--+-- * Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for the specified string.+--+--+--+-- For example, you can add a @ByteMatchSetUpdate@ object that matches web requests in which @User-Agent@ headers contain the string @BadBot@ . You can then configure AWS WAF to block those requests.+--+-- To create and configure a @ByteMatchSet@ , perform the following steps:+--+-- * Create a @ByteMatchSet.@ For more information, see 'CreateByteMatchSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of an @UpdateByteMatchSet@ request.+--+-- * Submit an @UpdateByteMatchSet@ request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.UpdateByteMatchSet+ (+ -- * Creating a Request+ updateByteMatchSet+ , UpdateByteMatchSet+ -- * Request Lenses+ , ubmsByteMatchSetId+ , ubmsChangeToken+ , ubmsUpdates++ -- * Destructuring the Response+ , updateByteMatchSetResponse+ , UpdateByteMatchSetResponse+ -- * Response Lenses+ , ubmsrsChangeToken+ , ubmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'updateByteMatchSet' smart constructor.+data UpdateByteMatchSet = UpdateByteMatchSet'+ { _ubmsByteMatchSetId :: !Text+ , _ubmsChangeToken :: !Text+ , _ubmsUpdates :: !(List1 ByteMatchSetUpdate)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateByteMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ubmsByteMatchSetId' - The @ByteMatchSetId@ of the 'ByteMatchSet' that you want to update. @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+--+-- * 'ubmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+--+-- * 'ubmsUpdates' - An array of @ByteMatchSetUpdate@ objects that you want to insert into or delete from a 'ByteMatchSet' . For more information, see the applicable data types: * 'ByteMatchSetUpdate' : Contains @Action@ and @ByteMatchTuple@ * 'ByteMatchTuple' : Contains @FieldToMatch@ , @PositionalConstraint@ , @TargetString@ , and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+updateByteMatchSet+ :: Text -- ^ 'ubmsByteMatchSetId'+ -> Text -- ^ 'ubmsChangeToken'+ -> NonEmpty ByteMatchSetUpdate -- ^ 'ubmsUpdates'+ -> UpdateByteMatchSet+updateByteMatchSet pByteMatchSetId_ pChangeToken_ pUpdates_ =+ UpdateByteMatchSet'+ { _ubmsByteMatchSetId = pByteMatchSetId_+ , _ubmsChangeToken = pChangeToken_+ , _ubmsUpdates = _List1 # pUpdates_+ }+++-- | The @ByteMatchSetId@ of the 'ByteMatchSet' that you want to update. @ByteMatchSetId@ is returned by 'CreateByteMatchSet' and by 'ListByteMatchSets' .+ubmsByteMatchSetId :: Lens' UpdateByteMatchSet Text+ubmsByteMatchSetId = lens _ubmsByteMatchSetId (\ s a -> s{_ubmsByteMatchSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+ubmsChangeToken :: Lens' UpdateByteMatchSet Text+ubmsChangeToken = lens _ubmsChangeToken (\ s a -> s{_ubmsChangeToken = a});++-- | An array of @ByteMatchSetUpdate@ objects that you want to insert into or delete from a 'ByteMatchSet' . For more information, see the applicable data types: * 'ByteMatchSetUpdate' : Contains @Action@ and @ByteMatchTuple@ * 'ByteMatchTuple' : Contains @FieldToMatch@ , @PositionalConstraint@ , @TargetString@ , and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+ubmsUpdates :: Lens' UpdateByteMatchSet (NonEmpty ByteMatchSetUpdate)+ubmsUpdates = lens _ubmsUpdates (\ s a -> s{_ubmsUpdates = a}) . _List1;++instance AWSRequest UpdateByteMatchSet where+ type Rs UpdateByteMatchSet =+ UpdateByteMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateByteMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateByteMatchSet where++instance NFData UpdateByteMatchSet where++instance ToHeaders UpdateByteMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateByteMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateByteMatchSet where+ toJSON UpdateByteMatchSet'{..}+ = object+ (catMaybes+ [Just ("ByteMatchSetId" .= _ubmsByteMatchSetId),+ Just ("ChangeToken" .= _ubmsChangeToken),+ Just ("Updates" .= _ubmsUpdates)])++instance ToPath UpdateByteMatchSet where+ toPath = const "/"++instance ToQuery UpdateByteMatchSet where+ toQuery = const mempty++-- | /See:/ 'updateByteMatchSetResponse' smart constructor.+data UpdateByteMatchSetResponse = UpdateByteMatchSetResponse'+ { _ubmsrsChangeToken :: !(Maybe Text)+ , _ubmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateByteMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ubmsrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateByteMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'ubmsrsResponseStatus' - -- | The response status code.+updateByteMatchSetResponse+ :: Int -- ^ 'ubmsrsResponseStatus'+ -> UpdateByteMatchSetResponse+updateByteMatchSetResponse pResponseStatus_ =+ UpdateByteMatchSetResponse'+ {_ubmsrsChangeToken = Nothing, _ubmsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateByteMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+ubmsrsChangeToken :: Lens' UpdateByteMatchSetResponse (Maybe Text)+ubmsrsChangeToken = lens _ubmsrsChangeToken (\ s a -> s{_ubmsrsChangeToken = a});++-- | -- | The response status code.+ubmsrsResponseStatus :: Lens' UpdateByteMatchSetResponse Int+ubmsrsResponseStatus = lens _ubmsrsResponseStatus (\ s a -> s{_ubmsrsResponseStatus = a});++instance NFData UpdateByteMatchSetResponse where
+ gen/Network/AWS/WAFRegional/UpdateGeoMatchSet.hs view
@@ -0,0 +1,180 @@+{-# 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.WAFRegional.UpdateGeoMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'GeoMatchConstraint' objects in an @GeoMatchSet@ . For each @GeoMatchConstraint@ object, you specify the following values:+--+--+-- * Whether to insert or delete the object from the array. If you want to change an @GeoMatchConstraint@ object, you delete the existing object and add a new one.+--+-- * The @Type@ . The only valid value for @Type@ is @Country@ .+--+-- * The @Value@ , which is a two character code for the country to add to the @GeoMatchConstraint@ object. Valid codes are listed in 'GeoMatchConstraint$Value' .+--+--+--+-- To create and configure an @GeoMatchSet@ , perform the following steps:+--+-- * Submit a 'CreateGeoMatchSet' request.+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateGeoMatchSet' request.+--+-- * Submit an @UpdateGeoMatchSet@ request to specify the country that you want AWS WAF to watch for.+--+--+--+-- When you update an @GeoMatchSet@ , you specify the country that you want to add and/or the country that you want to delete. If you want to change a country, you delete the existing country and add the new one.+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.UpdateGeoMatchSet+ (+ -- * Creating a Request+ updateGeoMatchSet+ , UpdateGeoMatchSet+ -- * Request Lenses+ , ugmsGeoMatchSetId+ , ugmsChangeToken+ , ugmsUpdates++ -- * Destructuring the Response+ , updateGeoMatchSetResponse+ , UpdateGeoMatchSetResponse+ -- * Response Lenses+ , ugmsrsChangeToken+ , ugmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'updateGeoMatchSet' smart constructor.+data UpdateGeoMatchSet = UpdateGeoMatchSet'+ { _ugmsGeoMatchSetId :: !Text+ , _ugmsChangeToken :: !Text+ , _ugmsUpdates :: !(List1 GeoMatchSetUpdate)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateGeoMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ugmsGeoMatchSetId' - The @GeoMatchSetId@ of the 'GeoMatchSet' that you want to update. @GeoMatchSetId@ is returned by 'CreateGeoMatchSet' and by 'ListGeoMatchSets' .+--+-- * 'ugmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+--+-- * 'ugmsUpdates' - An array of @GeoMatchSetUpdate@ objects that you want to insert into or delete from an 'GeoMatchSet' . For more information, see the applicable data types: * 'GeoMatchSetUpdate' : Contains @Action@ and @GeoMatchConstraint@ * 'GeoMatchConstraint' : Contains @Type@ and @Value@ You can have only one @Type@ and @Value@ per @GeoMatchConstraint@ . To add multiple countries, include multiple @GeoMatchSetUpdate@ objects in your request.+updateGeoMatchSet+ :: Text -- ^ 'ugmsGeoMatchSetId'+ -> Text -- ^ 'ugmsChangeToken'+ -> NonEmpty GeoMatchSetUpdate -- ^ 'ugmsUpdates'+ -> UpdateGeoMatchSet+updateGeoMatchSet pGeoMatchSetId_ pChangeToken_ pUpdates_ =+ UpdateGeoMatchSet'+ { _ugmsGeoMatchSetId = pGeoMatchSetId_+ , _ugmsChangeToken = pChangeToken_+ , _ugmsUpdates = _List1 # pUpdates_+ }+++-- | The @GeoMatchSetId@ of the 'GeoMatchSet' that you want to update. @GeoMatchSetId@ is returned by 'CreateGeoMatchSet' and by 'ListGeoMatchSets' .+ugmsGeoMatchSetId :: Lens' UpdateGeoMatchSet Text+ugmsGeoMatchSetId = lens _ugmsGeoMatchSetId (\ s a -> s{_ugmsGeoMatchSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+ugmsChangeToken :: Lens' UpdateGeoMatchSet Text+ugmsChangeToken = lens _ugmsChangeToken (\ s a -> s{_ugmsChangeToken = a});++-- | An array of @GeoMatchSetUpdate@ objects that you want to insert into or delete from an 'GeoMatchSet' . For more information, see the applicable data types: * 'GeoMatchSetUpdate' : Contains @Action@ and @GeoMatchConstraint@ * 'GeoMatchConstraint' : Contains @Type@ and @Value@ You can have only one @Type@ and @Value@ per @GeoMatchConstraint@ . To add multiple countries, include multiple @GeoMatchSetUpdate@ objects in your request.+ugmsUpdates :: Lens' UpdateGeoMatchSet (NonEmpty GeoMatchSetUpdate)+ugmsUpdates = lens _ugmsUpdates (\ s a -> s{_ugmsUpdates = a}) . _List1;++instance AWSRequest UpdateGeoMatchSet where+ type Rs UpdateGeoMatchSet = UpdateGeoMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateGeoMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateGeoMatchSet where++instance NFData UpdateGeoMatchSet where++instance ToHeaders UpdateGeoMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateGeoMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateGeoMatchSet where+ toJSON UpdateGeoMatchSet'{..}+ = object+ (catMaybes+ [Just ("GeoMatchSetId" .= _ugmsGeoMatchSetId),+ Just ("ChangeToken" .= _ugmsChangeToken),+ Just ("Updates" .= _ugmsUpdates)])++instance ToPath UpdateGeoMatchSet where+ toPath = const "/"++instance ToQuery UpdateGeoMatchSet where+ toQuery = const mempty++-- | /See:/ 'updateGeoMatchSetResponse' smart constructor.+data UpdateGeoMatchSetResponse = UpdateGeoMatchSetResponse'+ { _ugmsrsChangeToken :: !(Maybe Text)+ , _ugmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateGeoMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ugmsrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateGeoMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'ugmsrsResponseStatus' - -- | The response status code.+updateGeoMatchSetResponse+ :: Int -- ^ 'ugmsrsResponseStatus'+ -> UpdateGeoMatchSetResponse+updateGeoMatchSetResponse pResponseStatus_ =+ UpdateGeoMatchSetResponse'+ {_ugmsrsChangeToken = Nothing, _ugmsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateGeoMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+ugmsrsChangeToken :: Lens' UpdateGeoMatchSetResponse (Maybe Text)+ugmsrsChangeToken = lens _ugmsrsChangeToken (\ s a -> s{_ugmsrsChangeToken = a});++-- | -- | The response status code.+ugmsrsResponseStatus :: Lens' UpdateGeoMatchSetResponse Int+ugmsrsResponseStatus = lens _ugmsrsResponseStatus (\ s a -> s{_ugmsrsResponseStatus = a});++instance NFData UpdateGeoMatchSetResponse where
+ gen/Network/AWS/WAFRegional/UpdateIPSet.hs view
@@ -0,0 +1,196 @@+{-# 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.WAFRegional.UpdateIPSet+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'IPSetDescriptor' objects in an @IPSet@ . For each @IPSetDescriptor@ object, you specify the following values:+--+--+-- * Whether to insert or delete the object from the array. If you want to change an @IPSetDescriptor@ object, you delete the existing object and add a new one.+--+-- * The IP address version, @IPv4@ or @IPv6@ .+--+-- * The IP address in CIDR notation, for example, @192.0.2.0/24@ (for the range of IP addresses from @192.0.2.0@ to @192.0.2.255@ ) or @192.0.2.44/32@ (for the individual IP address @192.0.2.44@ ).+--+--+--+-- AWS WAF supports /8, /16, /24, and /32 IP address ranges for IPv4, and /24, /32, /48, /56, /64 and /128 for IPv6. For more information about CIDR notation, see the Wikipedia entry <https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing Classless Inter-Domain Routing> .+--+-- IPv6 addresses can be represented using any of the following formats:+--+-- * 1111:0000:0000:0000:0000:0000:0000:0111/128+--+-- * 1111:0:0:0:0:0:0:0111/128+--+-- * 1111::0111/128+--+-- * 1111::111/128+--+--+--+-- You use an @IPSet@ to specify which web requests you want to allow or block based on the IP addresses that the requests originated from. For example, if you're receiving a lot of requests from one or a small number of IP addresses and you want to block the requests, you can create an @IPSet@ that specifies those IP addresses, and then configure AWS WAF to block the requests.+--+-- To create and configure an @IPSet@ , perform the following steps:+--+-- * Submit a 'CreateIPSet' request.+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateIPSet' request.+--+-- * Submit an @UpdateIPSet@ request to specify the IP addresses that you want AWS WAF to watch for.+--+--+--+-- When you update an @IPSet@ , you specify the IP addresses that you want to add and/or the IP addresses that you want to delete. If you want to change an IP address, you delete the existing IP address and add the new one.+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.UpdateIPSet+ (+ -- * Creating a Request+ updateIPSet+ , UpdateIPSet+ -- * Request Lenses+ , uisIPSetId+ , uisChangeToken+ , uisUpdates++ -- * Destructuring the Response+ , updateIPSetResponse+ , UpdateIPSetResponse+ -- * Response Lenses+ , uisrsChangeToken+ , uisrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'updateIPSet' smart constructor.+data UpdateIPSet = UpdateIPSet'+ { _uisIPSetId :: !Text+ , _uisChangeToken :: !Text+ , _uisUpdates :: !(List1 IPSetUpdate)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateIPSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uisIPSetId' - The @IPSetId@ of the 'IPSet' that you want to update. @IPSetId@ is returned by 'CreateIPSet' and by 'ListIPSets' .+--+-- * 'uisChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+--+-- * 'uisUpdates' - An array of @IPSetUpdate@ objects that you want to insert into or delete from an 'IPSet' . For more information, see the applicable data types: * 'IPSetUpdate' : Contains @Action@ and @IPSetDescriptor@ * 'IPSetDescriptor' : Contains @Type@ and @Value@+updateIPSet+ :: Text -- ^ 'uisIPSetId'+ -> Text -- ^ 'uisChangeToken'+ -> NonEmpty IPSetUpdate -- ^ 'uisUpdates'+ -> UpdateIPSet+updateIPSet pIPSetId_ pChangeToken_ pUpdates_ =+ UpdateIPSet'+ { _uisIPSetId = pIPSetId_+ , _uisChangeToken = pChangeToken_+ , _uisUpdates = _List1 # pUpdates_+ }+++-- | The @IPSetId@ of the 'IPSet' that you want to update. @IPSetId@ is returned by 'CreateIPSet' and by 'ListIPSets' .+uisIPSetId :: Lens' UpdateIPSet Text+uisIPSetId = lens _uisIPSetId (\ s a -> s{_uisIPSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+uisChangeToken :: Lens' UpdateIPSet Text+uisChangeToken = lens _uisChangeToken (\ s a -> s{_uisChangeToken = a});++-- | An array of @IPSetUpdate@ objects that you want to insert into or delete from an 'IPSet' . For more information, see the applicable data types: * 'IPSetUpdate' : Contains @Action@ and @IPSetDescriptor@ * 'IPSetDescriptor' : Contains @Type@ and @Value@+uisUpdates :: Lens' UpdateIPSet (NonEmpty IPSetUpdate)+uisUpdates = lens _uisUpdates (\ s a -> s{_uisUpdates = a}) . _List1;++instance AWSRequest UpdateIPSet where+ type Rs UpdateIPSet = UpdateIPSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateIPSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateIPSet where++instance NFData UpdateIPSet where++instance ToHeaders UpdateIPSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateIPSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateIPSet where+ toJSON UpdateIPSet'{..}+ = object+ (catMaybes+ [Just ("IPSetId" .= _uisIPSetId),+ Just ("ChangeToken" .= _uisChangeToken),+ Just ("Updates" .= _uisUpdates)])++instance ToPath UpdateIPSet where+ toPath = const "/"++instance ToQuery UpdateIPSet where+ toQuery = const mempty++-- | /See:/ 'updateIPSetResponse' smart constructor.+data UpdateIPSetResponse = UpdateIPSetResponse'+ { _uisrsChangeToken :: !(Maybe Text)+ , _uisrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateIPSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uisrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateIPSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'uisrsResponseStatus' - -- | The response status code.+updateIPSetResponse+ :: Int -- ^ 'uisrsResponseStatus'+ -> UpdateIPSetResponse+updateIPSetResponse pResponseStatus_ =+ UpdateIPSetResponse'+ {_uisrsChangeToken = Nothing, _uisrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateIPSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+uisrsChangeToken :: Lens' UpdateIPSetResponse (Maybe Text)+uisrsChangeToken = lens _uisrsChangeToken (\ s a -> s{_uisrsChangeToken = a});++-- | -- | The response status code.+uisrsResponseStatus :: Lens' UpdateIPSetResponse Int+uisrsResponseStatus = lens _uisrsResponseStatus (\ s a -> s{_uisrsResponseStatus = a});++instance NFData UpdateIPSetResponse where
+ gen/Network/AWS/WAFRegional/UpdateRateBasedRule.hs view
@@ -0,0 +1,197 @@+{-# 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.WAFRegional.UpdateRateBasedRule+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'Predicate' objects in a rule and updates the @RateLimit@ in the rule.+--+--+-- Each @Predicate@ object identifies a predicate, such as a 'ByteMatchSet' or an 'IPSet' , that specifies the web requests that you want to block or count. The @RateLimit@ specifies the number of requests every five minutes that triggers the rule.+--+-- If you add more than one predicate to a @RateBasedRule@ , a request must match all the predicates and exceed the @RateLimit@ to be counted or blocked. For example, suppose you add the following to a @RateBasedRule@ :+--+-- * An @IPSet@ that matches the IP address @192.0.2.44/32@+--+-- * A @ByteMatchSet@ that matches @BadBot@ in the @User-Agent@ header+--+--+--+-- Further, you specify a @RateLimit@ of 15,000.+--+-- You then add the @RateBasedRule@ to a @WebACL@ and specify that you want to block requests that satisfy the rule. For a request to be blocked, it must come from the IP address 192.0.2.44 /and/ the @User-Agent@ header in the request must contain the value @BadBot@ . Further, requests that match these two conditions much be received at a rate of more than 15,000 every five minutes. If the rate drops below this limit, AWS WAF no longer blocks the requests.+--+-- As a second example, suppose you want to limit requests to a particular page on your site. To do this, you could add the following to a @RateBasedRule@ :+--+-- * A @ByteMatchSet@ with @FieldToMatch@ of @URI@+--+-- * A @PositionalConstraint@ of @STARTS_WITH@+--+-- * A @TargetString@ of @login@+--+--+--+-- Further, you specify a @RateLimit@ of 15,000.+--+-- By adding this @RateBasedRule@ to a @WebACL@ , you could limit requests to your login page without affecting the rest of your site.+--+module Network.AWS.WAFRegional.UpdateRateBasedRule+ (+ -- * Creating a Request+ updateRateBasedRule+ , UpdateRateBasedRule+ -- * Request Lenses+ , urbrRuleId+ , urbrChangeToken+ , urbrUpdates+ , urbrRateLimit++ -- * Destructuring the Response+ , updateRateBasedRuleResponse+ , UpdateRateBasedRuleResponse+ -- * Response Lenses+ , urbrrsChangeToken+ , urbrrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'updateRateBasedRule' smart constructor.+data UpdateRateBasedRule = UpdateRateBasedRule'+ { _urbrRuleId :: !Text+ , _urbrChangeToken :: !Text+ , _urbrUpdates :: ![RuleUpdate]+ , _urbrRateLimit :: !Nat+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateRateBasedRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'urbrRuleId' - The @RuleId@ of the @RateBasedRule@ that you want to update. @RuleId@ is returned by @CreateRateBasedRule@ and by 'ListRateBasedRules' .+--+-- * 'urbrChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+--+-- * 'urbrUpdates' - An array of @RuleUpdate@ objects that you want to insert into or delete from a 'RateBasedRule' .+--+-- * 'urbrRateLimit' - The maximum number of requests, which have an identical value in the field specified by the @RateKey@ , allowed in a five-minute period. If the number of requests exceeds the @RateLimit@ and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule.+updateRateBasedRule+ :: Text -- ^ 'urbrRuleId'+ -> Text -- ^ 'urbrChangeToken'+ -> Natural -- ^ 'urbrRateLimit'+ -> UpdateRateBasedRule+updateRateBasedRule pRuleId_ pChangeToken_ pRateLimit_ =+ UpdateRateBasedRule'+ { _urbrRuleId = pRuleId_+ , _urbrChangeToken = pChangeToken_+ , _urbrUpdates = mempty+ , _urbrRateLimit = _Nat # pRateLimit_+ }+++-- | The @RuleId@ of the @RateBasedRule@ that you want to update. @RuleId@ is returned by @CreateRateBasedRule@ and by 'ListRateBasedRules' .+urbrRuleId :: Lens' UpdateRateBasedRule Text+urbrRuleId = lens _urbrRuleId (\ s a -> s{_urbrRuleId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+urbrChangeToken :: Lens' UpdateRateBasedRule Text+urbrChangeToken = lens _urbrChangeToken (\ s a -> s{_urbrChangeToken = a});++-- | An array of @RuleUpdate@ objects that you want to insert into or delete from a 'RateBasedRule' .+urbrUpdates :: Lens' UpdateRateBasedRule [RuleUpdate]+urbrUpdates = lens _urbrUpdates (\ s a -> s{_urbrUpdates = a}) . _Coerce;++-- | The maximum number of requests, which have an identical value in the field specified by the @RateKey@ , allowed in a five-minute period. If the number of requests exceeds the @RateLimit@ and the other predicates specified in the rule are also met, AWS WAF triggers the action that is specified for this rule.+urbrRateLimit :: Lens' UpdateRateBasedRule Natural+urbrRateLimit = lens _urbrRateLimit (\ s a -> s{_urbrRateLimit = a}) . _Nat;++instance AWSRequest UpdateRateBasedRule where+ type Rs UpdateRateBasedRule =+ UpdateRateBasedRuleResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateRateBasedRuleResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateRateBasedRule where++instance NFData UpdateRateBasedRule where++instance ToHeaders UpdateRateBasedRule where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateRateBasedRule" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateRateBasedRule where+ toJSON UpdateRateBasedRule'{..}+ = object+ (catMaybes+ [Just ("RuleId" .= _urbrRuleId),+ Just ("ChangeToken" .= _urbrChangeToken),+ Just ("Updates" .= _urbrUpdates),+ Just ("RateLimit" .= _urbrRateLimit)])++instance ToPath UpdateRateBasedRule where+ toPath = const "/"++instance ToQuery UpdateRateBasedRule where+ toQuery = const mempty++-- | /See:/ 'updateRateBasedRuleResponse' smart constructor.+data UpdateRateBasedRuleResponse = UpdateRateBasedRuleResponse'+ { _urbrrsChangeToken :: !(Maybe Text)+ , _urbrrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateRateBasedRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'urbrrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateRateBasedRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'urbrrsResponseStatus' - -- | The response status code.+updateRateBasedRuleResponse+ :: Int -- ^ 'urbrrsResponseStatus'+ -> UpdateRateBasedRuleResponse+updateRateBasedRuleResponse pResponseStatus_ =+ UpdateRateBasedRuleResponse'+ {_urbrrsChangeToken = Nothing, _urbrrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateRateBasedRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+urbrrsChangeToken :: Lens' UpdateRateBasedRuleResponse (Maybe Text)+urbrrsChangeToken = lens _urbrrsChangeToken (\ s a -> s{_urbrrsChangeToken = a});++-- | -- | The response status code.+urbrrsResponseStatus :: Lens' UpdateRateBasedRuleResponse Int+urbrrsResponseStatus = lens _urbrrsResponseStatus (\ s a -> s{_urbrrsResponseStatus = a});++instance NFData UpdateRateBasedRuleResponse where
+ gen/Network/AWS/WAFRegional/UpdateRegexMatchSet.hs view
@@ -0,0 +1,183 @@+{-# 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.WAFRegional.UpdateRegexMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'RegexMatchSetUpdate' objects (filters) in a 'RegexMatchSet' . For each @RegexMatchSetUpdate@ object, you specify the following values:+--+--+-- * Whether to insert or delete the object from the array. If you want to change a @RegexMatchSetUpdate@ object, you delete the existing object and add a new one.+--+-- * The part of a web request that you want AWS WAF to inspect, such as a query string or the value of the @User-Agent@ header.+--+-- * The identifier of the pattern (a regular expression) that you want AWS WAF to look for. For more information, see 'RegexPatternSet' .+--+-- * Whether to perform any conversions on the request, such as converting it to lowercase, before inspecting it for the specified string.+--+--+--+-- For example, you can create a @RegexPatternSet@ that matches any requests with @User-Agent@ headers that contain the string @B[a@]dB[o0]t@ . You can then configure AWS WAF to reject those requests.+--+-- To create and configure a @RegexMatchSet@ , perform the following steps:+--+-- * Create a @RegexMatchSet.@ For more information, see 'CreateRegexMatchSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of an @UpdateRegexMatchSet@ request.+--+-- * Submit an @UpdateRegexMatchSet@ request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the identifier of the @RegexPatternSet@ that contain the regular expression patters 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.UpdateRegexMatchSet+ (+ -- * Creating a Request+ updateRegexMatchSet+ , UpdateRegexMatchSet+ -- * Request Lenses+ , urmsRegexMatchSetId+ , urmsUpdates+ , urmsChangeToken++ -- * Destructuring the Response+ , updateRegexMatchSetResponse+ , UpdateRegexMatchSetResponse+ -- * Response Lenses+ , urmsrsChangeToken+ , urmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'updateRegexMatchSet' smart constructor.+data UpdateRegexMatchSet = UpdateRegexMatchSet'+ { _urmsRegexMatchSetId :: !Text+ , _urmsUpdates :: !(List1 RegexMatchSetUpdate)+ , _urmsChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateRegexMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'urmsRegexMatchSetId' - The @RegexMatchSetId@ of the 'RegexMatchSet' that you want to update. @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+--+-- * 'urmsUpdates' - An array of @RegexMatchSetUpdate@ objects that you want to insert into or delete from a 'RegexMatchSet' . For more information, see 'RegexMatchTuple' .+--+-- * 'urmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+updateRegexMatchSet+ :: Text -- ^ 'urmsRegexMatchSetId'+ -> NonEmpty RegexMatchSetUpdate -- ^ 'urmsUpdates'+ -> Text -- ^ 'urmsChangeToken'+ -> UpdateRegexMatchSet+updateRegexMatchSet pRegexMatchSetId_ pUpdates_ pChangeToken_ =+ UpdateRegexMatchSet'+ { _urmsRegexMatchSetId = pRegexMatchSetId_+ , _urmsUpdates = _List1 # pUpdates_+ , _urmsChangeToken = pChangeToken_+ }+++-- | The @RegexMatchSetId@ of the 'RegexMatchSet' that you want to update. @RegexMatchSetId@ is returned by 'CreateRegexMatchSet' and by 'ListRegexMatchSets' .+urmsRegexMatchSetId :: Lens' UpdateRegexMatchSet Text+urmsRegexMatchSetId = lens _urmsRegexMatchSetId (\ s a -> s{_urmsRegexMatchSetId = a});++-- | An array of @RegexMatchSetUpdate@ objects that you want to insert into or delete from a 'RegexMatchSet' . For more information, see 'RegexMatchTuple' .+urmsUpdates :: Lens' UpdateRegexMatchSet (NonEmpty RegexMatchSetUpdate)+urmsUpdates = lens _urmsUpdates (\ s a -> s{_urmsUpdates = a}) . _List1;++-- | The value returned by the most recent call to 'GetChangeToken' .+urmsChangeToken :: Lens' UpdateRegexMatchSet Text+urmsChangeToken = lens _urmsChangeToken (\ s a -> s{_urmsChangeToken = a});++instance AWSRequest UpdateRegexMatchSet where+ type Rs UpdateRegexMatchSet =+ UpdateRegexMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateRegexMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateRegexMatchSet where++instance NFData UpdateRegexMatchSet where++instance ToHeaders UpdateRegexMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateRegexMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateRegexMatchSet where+ toJSON UpdateRegexMatchSet'{..}+ = object+ (catMaybes+ [Just ("RegexMatchSetId" .= _urmsRegexMatchSetId),+ Just ("Updates" .= _urmsUpdates),+ Just ("ChangeToken" .= _urmsChangeToken)])++instance ToPath UpdateRegexMatchSet where+ toPath = const "/"++instance ToQuery UpdateRegexMatchSet where+ toQuery = const mempty++-- | /See:/ 'updateRegexMatchSetResponse' smart constructor.+data UpdateRegexMatchSetResponse = UpdateRegexMatchSetResponse'+ { _urmsrsChangeToken :: !(Maybe Text)+ , _urmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateRegexMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'urmsrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateRegexMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'urmsrsResponseStatus' - -- | The response status code.+updateRegexMatchSetResponse+ :: Int -- ^ 'urmsrsResponseStatus'+ -> UpdateRegexMatchSetResponse+updateRegexMatchSetResponse pResponseStatus_ =+ UpdateRegexMatchSetResponse'+ {_urmsrsChangeToken = Nothing, _urmsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateRegexMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+urmsrsChangeToken :: Lens' UpdateRegexMatchSetResponse (Maybe Text)+urmsrsChangeToken = lens _urmsrsChangeToken (\ s a -> s{_urmsrsChangeToken = a});++-- | -- | The response status code.+urmsrsResponseStatus :: Lens' UpdateRegexMatchSetResponse Int+urmsrsResponseStatus = lens _urmsrsResponseStatus (\ s a -> s{_urmsrsResponseStatus = a});++instance NFData UpdateRegexMatchSetResponse where
+ gen/Network/AWS/WAFRegional/UpdateRegexPatternSet.hs view
@@ -0,0 +1,190 @@+{-# 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.WAFRegional.UpdateRegexPatternSet+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'RegexMatchSetUpdate' objects (filters) in a 'RegexPatternSet' . For each @RegexPatternSet@ object, you specify the following values:+--+--+-- * Whether to insert or delete the object from the array. If you want to change a @RegexPatternSet@ object, you delete the existing object and add a new one.+--+-- * The regular expression pattern that you want AWS WAF to look for. 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.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.WAFRegional.Types+import Network.AWS.WAFRegional.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 wAFRegional+ 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_Regional_20161128.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
+ gen/Network/AWS/WAFRegional/UpdateRule.hs view
@@ -0,0 +1,180 @@+{-# 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.WAFRegional.UpdateRule+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'Predicate' objects in a @Rule@ . Each @Predicate@ object identifies a predicate, such as a 'ByteMatchSet' or an 'IPSet' , that specifies the web requests that you want to allow, block, or count. If you add more than one predicate to a @Rule@ , a request must match all of the specifications to be allowed, blocked, or counted. For example, suppose you add the following to a @Rule@ :+--+--+-- * A @ByteMatchSet@ that matches the value @BadBot@ in the @User-Agent@ header+--+-- * An @IPSet@ that matches the IP address @192.0.2.44@+--+--+--+-- You then add the @Rule@ to a @WebACL@ and specify that you want to block requests that satisfy the @Rule@ . For a request to be blocked, the @User-Agent@ header in the request must contain the value @BadBot@ /and/ the request must originate from the IP address 192.0.2.44.+--+-- To create and configure a @Rule@ , perform the following steps:+--+-- * Create and update the predicates that you want to include in the @Rule@ .+--+-- * Create the @Rule@ . See 'CreateRule' .+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateRule' request.+--+-- * Submit an @UpdateRule@ request to add predicates to the @Rule@ .+--+-- * Create and update a @WebACL@ that contains the @Rule@ . See 'CreateWebACL' .+--+--+--+-- If you want to replace one @ByteMatchSet@ or @IPSet@ with another, you delete the existing one and add the new one.+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.UpdateRule+ (+ -- * Creating a Request+ updateRule+ , UpdateRule+ -- * Request Lenses+ , urRuleId+ , urChangeToken+ , urUpdates++ -- * Destructuring the Response+ , updateRuleResponse+ , UpdateRuleResponse+ -- * Response Lenses+ , urrsChangeToken+ , urrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'updateRule' smart constructor.+data UpdateRule = UpdateRule'+ { _urRuleId :: !Text+ , _urChangeToken :: !Text+ , _urUpdates :: ![RuleUpdate]+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateRule' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'urRuleId' - The @RuleId@ of the @Rule@ that you want to update. @RuleId@ is returned by @CreateRule@ and by 'ListRules' .+--+-- * 'urChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+--+-- * 'urUpdates' - An array of @RuleUpdate@ objects that you want to insert into or delete from a 'Rule' . For more information, see the applicable data types: * 'RuleUpdate' : Contains @Action@ and @Predicate@ * 'Predicate' : Contains @DataId@ , @Negated@ , and @Type@ * 'FieldToMatch' : Contains @Data@ and @Type@+updateRule+ :: Text -- ^ 'urRuleId'+ -> Text -- ^ 'urChangeToken'+ -> UpdateRule+updateRule pRuleId_ pChangeToken_ =+ UpdateRule'+ {_urRuleId = pRuleId_, _urChangeToken = pChangeToken_, _urUpdates = mempty}+++-- | The @RuleId@ of the @Rule@ that you want to update. @RuleId@ is returned by @CreateRule@ and by 'ListRules' .+urRuleId :: Lens' UpdateRule Text+urRuleId = lens _urRuleId (\ s a -> s{_urRuleId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+urChangeToken :: Lens' UpdateRule Text+urChangeToken = lens _urChangeToken (\ s a -> s{_urChangeToken = a});++-- | An array of @RuleUpdate@ objects that you want to insert into or delete from a 'Rule' . For more information, see the applicable data types: * 'RuleUpdate' : Contains @Action@ and @Predicate@ * 'Predicate' : Contains @DataId@ , @Negated@ , and @Type@ * 'FieldToMatch' : Contains @Data@ and @Type@+urUpdates :: Lens' UpdateRule [RuleUpdate]+urUpdates = lens _urUpdates (\ s a -> s{_urUpdates = a}) . _Coerce;++instance AWSRequest UpdateRule where+ type Rs UpdateRule = UpdateRuleResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateRuleResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateRule where++instance NFData UpdateRule where++instance ToHeaders UpdateRule where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateRule" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateRule where+ toJSON UpdateRule'{..}+ = object+ (catMaybes+ [Just ("RuleId" .= _urRuleId),+ Just ("ChangeToken" .= _urChangeToken),+ Just ("Updates" .= _urUpdates)])++instance ToPath UpdateRule where+ toPath = const "/"++instance ToQuery UpdateRule where+ toQuery = const mempty++-- | /See:/ 'updateRuleResponse' smart constructor.+data UpdateRuleResponse = UpdateRuleResponse'+ { _urrsChangeToken :: !(Maybe Text)+ , _urrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateRuleResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'urrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'urrsResponseStatus' - -- | The response status code.+updateRuleResponse+ :: Int -- ^ 'urrsResponseStatus'+ -> UpdateRuleResponse+updateRuleResponse pResponseStatus_ =+ UpdateRuleResponse'+ {_urrsChangeToken = Nothing, _urrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateRule@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+urrsChangeToken :: Lens' UpdateRuleResponse (Maybe Text)+urrsChangeToken = lens _urrsChangeToken (\ s a -> s{_urrsChangeToken = a});++-- | -- | The response status code.+urrsResponseStatus :: Lens' UpdateRuleResponse Int+urrsResponseStatus = lens _urrsResponseStatus (\ s a -> s{_urrsResponseStatus = a});++instance NFData UpdateRuleResponse where
+ gen/Network/AWS/WAFRegional/UpdateSizeConstraintSet.hs view
@@ -0,0 +1,186 @@+{-# 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.WAFRegional.UpdateSizeConstraintSet+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'SizeConstraint' objects (filters) in a 'SizeConstraintSet' . For each @SizeConstraint@ object, you specify the following values:+--+--+-- * Whether to insert or delete the object from the array. If you want to change a @SizeConstraintSetUpdate@ object, you delete the existing object and add a new one.+--+-- * The part of a web request that you want AWS WAF to evaluate, such as the length of a query string or the length of the @User-Agent@ header.+--+-- * Whether to perform any transformations on the request, such as converting it to lowercase, before checking its length. Note that transformations of the request body are not supported because the AWS resource forwards only the first @8192@ bytes of your request to AWS WAF.+--+-- * A @ComparisonOperator@ used for evaluating the selected part of the request against the specified @Size@ , such as equals, greater than, less than, and so on.+--+-- * The length, in bytes, that you want AWS WAF to watch for in selected part of the request. The length is computed after applying the transformation.+--+--+--+-- For example, you can add a @SizeConstraintSetUpdate@ object that matches web requests in which the length of the @User-Agent@ header is greater than 100 bytes. You can then configure AWS WAF to block those requests.+--+-- To create and configure a @SizeConstraintSet@ , perform the following steps:+--+-- * Create a @SizeConstraintSet.@ For more information, see 'CreateSizeConstraintSet' .+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of an @UpdateSizeConstraintSet@ request.+--+-- * Submit an @UpdateSizeConstraintSet@ request to specify the part of the request that you want AWS WAF to inspect (for example, the header or the URI) and the value 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 <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.UpdateSizeConstraintSet+ (+ -- * Creating a Request+ updateSizeConstraintSet+ , UpdateSizeConstraintSet+ -- * Request Lenses+ , uscsSizeConstraintSetId+ , uscsChangeToken+ , uscsUpdates++ -- * Destructuring the Response+ , updateSizeConstraintSetResponse+ , UpdateSizeConstraintSetResponse+ -- * Response Lenses+ , uscsrsChangeToken+ , uscsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'updateSizeConstraintSet' smart constructor.+data UpdateSizeConstraintSet = UpdateSizeConstraintSet'+ { _uscsSizeConstraintSetId :: !Text+ , _uscsChangeToken :: !Text+ , _uscsUpdates :: !(List1 SizeConstraintSetUpdate)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateSizeConstraintSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uscsSizeConstraintSetId' - The @SizeConstraintSetId@ of the 'SizeConstraintSet' that you want to update. @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+--+-- * 'uscsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+--+-- * 'uscsUpdates' - An array of @SizeConstraintSetUpdate@ objects that you want to insert into or delete from a 'SizeConstraintSet' . For more information, see the applicable data types: * 'SizeConstraintSetUpdate' : Contains @Action@ and @SizeConstraint@ * 'SizeConstraint' : Contains @FieldToMatch@ , @TextTransformation@ , @ComparisonOperator@ , and @Size@ * 'FieldToMatch' : Contains @Data@ and @Type@+updateSizeConstraintSet+ :: Text -- ^ 'uscsSizeConstraintSetId'+ -> Text -- ^ 'uscsChangeToken'+ -> NonEmpty SizeConstraintSetUpdate -- ^ 'uscsUpdates'+ -> UpdateSizeConstraintSet+updateSizeConstraintSet pSizeConstraintSetId_ pChangeToken_ pUpdates_ =+ UpdateSizeConstraintSet'+ { _uscsSizeConstraintSetId = pSizeConstraintSetId_+ , _uscsChangeToken = pChangeToken_+ , _uscsUpdates = _List1 # pUpdates_+ }+++-- | The @SizeConstraintSetId@ of the 'SizeConstraintSet' that you want to update. @SizeConstraintSetId@ is returned by 'CreateSizeConstraintSet' and by 'ListSizeConstraintSets' .+uscsSizeConstraintSetId :: Lens' UpdateSizeConstraintSet Text+uscsSizeConstraintSetId = lens _uscsSizeConstraintSetId (\ s a -> s{_uscsSizeConstraintSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+uscsChangeToken :: Lens' UpdateSizeConstraintSet Text+uscsChangeToken = lens _uscsChangeToken (\ s a -> s{_uscsChangeToken = a});++-- | An array of @SizeConstraintSetUpdate@ objects that you want to insert into or delete from a 'SizeConstraintSet' . For more information, see the applicable data types: * 'SizeConstraintSetUpdate' : Contains @Action@ and @SizeConstraint@ * 'SizeConstraint' : Contains @FieldToMatch@ , @TextTransformation@ , @ComparisonOperator@ , and @Size@ * 'FieldToMatch' : Contains @Data@ and @Type@+uscsUpdates :: Lens' UpdateSizeConstraintSet (NonEmpty SizeConstraintSetUpdate)+uscsUpdates = lens _uscsUpdates (\ s a -> s{_uscsUpdates = a}) . _List1;++instance AWSRequest UpdateSizeConstraintSet where+ type Rs UpdateSizeConstraintSet =+ UpdateSizeConstraintSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateSizeConstraintSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateSizeConstraintSet where++instance NFData UpdateSizeConstraintSet where++instance ToHeaders UpdateSizeConstraintSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateSizeConstraintSet"+ :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateSizeConstraintSet where+ toJSON UpdateSizeConstraintSet'{..}+ = object+ (catMaybes+ [Just+ ("SizeConstraintSetId" .= _uscsSizeConstraintSetId),+ Just ("ChangeToken" .= _uscsChangeToken),+ Just ("Updates" .= _uscsUpdates)])++instance ToPath UpdateSizeConstraintSet where+ toPath = const "/"++instance ToQuery UpdateSizeConstraintSet where+ toQuery = const mempty++-- | /See:/ 'updateSizeConstraintSetResponse' smart constructor.+data UpdateSizeConstraintSetResponse = UpdateSizeConstraintSetResponse'+ { _uscsrsChangeToken :: !(Maybe Text)+ , _uscsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateSizeConstraintSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uscsrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateSizeConstraintSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'uscsrsResponseStatus' - -- | The response status code.+updateSizeConstraintSetResponse+ :: Int -- ^ 'uscsrsResponseStatus'+ -> UpdateSizeConstraintSetResponse+updateSizeConstraintSetResponse pResponseStatus_ =+ UpdateSizeConstraintSetResponse'+ {_uscsrsChangeToken = Nothing, _uscsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateSizeConstraintSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+uscsrsChangeToken :: Lens' UpdateSizeConstraintSetResponse (Maybe Text)+uscsrsChangeToken = lens _uscsrsChangeToken (\ s a -> s{_uscsrsChangeToken = a});++-- | -- | The response status code.+uscsrsResponseStatus :: Lens' UpdateSizeConstraintSetResponse Int+uscsrsResponseStatus = lens _uscsrsResponseStatus (\ s a -> s{_uscsrsResponseStatus = a});++instance NFData UpdateSizeConstraintSetResponse where
+ gen/Network/AWS/WAFRegional/UpdateSqlInjectionMatchSet.hs view
@@ -0,0 +1,192 @@+{-# 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.WAFRegional.UpdateSqlInjectionMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'SqlInjectionMatchTuple' objects (filters) in a 'SqlInjectionMatchSet' . For each @SqlInjectionMatchTuple@ object, you specify the following values:+--+--+-- * @Action@ : Whether to insert the object into or delete the object from the array. To change a @SqlInjectionMatchTuple@ , you delete the existing object and add a new one.+--+-- * @FieldToMatch@ : The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header.+--+-- * @TextTransformation@ : Which text transformation, if any, to perform on the web request before inspecting the request for snippets of malicious SQL code.+--+--+--+-- You use @SqlInjectionMatchSet@ objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain snippets of SQL code in the query string and you want to block the requests, you can create a @SqlInjectionMatchSet@ with the applicable settings, and then configure AWS WAF to block the requests.+--+-- To create and configure a @SqlInjectionMatchSet@ , perform the following steps:+--+-- * Submit a 'CreateSqlInjectionMatchSet' request.+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateIPSet' request.+--+-- * Submit an @UpdateSqlInjectionMatchSet@ request to specify the parts of web requests that you want AWS WAF to inspect for snippets of SQL code.+--+--+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.UpdateSqlInjectionMatchSet+ (+ -- * Creating a Request+ updateSqlInjectionMatchSet+ , UpdateSqlInjectionMatchSet+ -- * Request Lenses+ , usimsSqlInjectionMatchSetId+ , usimsChangeToken+ , usimsUpdates++ -- * Destructuring the Response+ , updateSqlInjectionMatchSetResponse+ , UpdateSqlInjectionMatchSetResponse+ -- * Response Lenses+ , usimsrsChangeToken+ , usimsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to update a 'SqlInjectionMatchSet' .+--+--+--+-- /See:/ 'updateSqlInjectionMatchSet' smart constructor.+data UpdateSqlInjectionMatchSet = UpdateSqlInjectionMatchSet'+ { _usimsSqlInjectionMatchSetId :: !Text+ , _usimsChangeToken :: !Text+ , _usimsUpdates :: !(List1 SqlInjectionMatchSetUpdate)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateSqlInjectionMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usimsSqlInjectionMatchSetId' - The @SqlInjectionMatchSetId@ of the @SqlInjectionMatchSet@ that you want to update. @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+--+-- * 'usimsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+--+-- * 'usimsUpdates' - An array of @SqlInjectionMatchSetUpdate@ objects that you want to insert into or delete from a 'SqlInjectionMatchSet' . For more information, see the applicable data types: * 'SqlInjectionMatchSetUpdate' : Contains @Action@ and @SqlInjectionMatchTuple@ * 'SqlInjectionMatchTuple' : Contains @FieldToMatch@ and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+updateSqlInjectionMatchSet+ :: Text -- ^ 'usimsSqlInjectionMatchSetId'+ -> Text -- ^ 'usimsChangeToken'+ -> NonEmpty SqlInjectionMatchSetUpdate -- ^ 'usimsUpdates'+ -> UpdateSqlInjectionMatchSet+updateSqlInjectionMatchSet pSqlInjectionMatchSetId_ pChangeToken_ pUpdates_ =+ UpdateSqlInjectionMatchSet'+ { _usimsSqlInjectionMatchSetId = pSqlInjectionMatchSetId_+ , _usimsChangeToken = pChangeToken_+ , _usimsUpdates = _List1 # pUpdates_+ }+++-- | The @SqlInjectionMatchSetId@ of the @SqlInjectionMatchSet@ that you want to update. @SqlInjectionMatchSetId@ is returned by 'CreateSqlInjectionMatchSet' and by 'ListSqlInjectionMatchSets' .+usimsSqlInjectionMatchSetId :: Lens' UpdateSqlInjectionMatchSet Text+usimsSqlInjectionMatchSetId = lens _usimsSqlInjectionMatchSetId (\ s a -> s{_usimsSqlInjectionMatchSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+usimsChangeToken :: Lens' UpdateSqlInjectionMatchSet Text+usimsChangeToken = lens _usimsChangeToken (\ s a -> s{_usimsChangeToken = a});++-- | An array of @SqlInjectionMatchSetUpdate@ objects that you want to insert into or delete from a 'SqlInjectionMatchSet' . For more information, see the applicable data types: * 'SqlInjectionMatchSetUpdate' : Contains @Action@ and @SqlInjectionMatchTuple@ * 'SqlInjectionMatchTuple' : Contains @FieldToMatch@ and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+usimsUpdates :: Lens' UpdateSqlInjectionMatchSet (NonEmpty SqlInjectionMatchSetUpdate)+usimsUpdates = lens _usimsUpdates (\ s a -> s{_usimsUpdates = a}) . _List1;++instance AWSRequest UpdateSqlInjectionMatchSet where+ type Rs UpdateSqlInjectionMatchSet =+ UpdateSqlInjectionMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateSqlInjectionMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateSqlInjectionMatchSet where++instance NFData UpdateSqlInjectionMatchSet where++instance ToHeaders UpdateSqlInjectionMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateSqlInjectionMatchSet"+ :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateSqlInjectionMatchSet where+ toJSON UpdateSqlInjectionMatchSet'{..}+ = object+ (catMaybes+ [Just+ ("SqlInjectionMatchSetId" .=+ _usimsSqlInjectionMatchSetId),+ Just ("ChangeToken" .= _usimsChangeToken),+ Just ("Updates" .= _usimsUpdates)])++instance ToPath UpdateSqlInjectionMatchSet where+ toPath = const "/"++instance ToQuery UpdateSqlInjectionMatchSet where+ toQuery = const mempty++-- | The response to an 'UpdateSqlInjectionMatchSets' request.+--+--+--+-- /See:/ 'updateSqlInjectionMatchSetResponse' smart constructor.+data UpdateSqlInjectionMatchSetResponse = UpdateSqlInjectionMatchSetResponse'+ { _usimsrsChangeToken :: !(Maybe Text)+ , _usimsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateSqlInjectionMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'usimsrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateSqlInjectionMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'usimsrsResponseStatus' - -- | The response status code.+updateSqlInjectionMatchSetResponse+ :: Int -- ^ 'usimsrsResponseStatus'+ -> UpdateSqlInjectionMatchSetResponse+updateSqlInjectionMatchSetResponse pResponseStatus_ =+ UpdateSqlInjectionMatchSetResponse'+ {_usimsrsChangeToken = Nothing, _usimsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateSqlInjectionMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+usimsrsChangeToken :: Lens' UpdateSqlInjectionMatchSetResponse (Maybe Text)+usimsrsChangeToken = lens _usimsrsChangeToken (\ s a -> s{_usimsrsChangeToken = a});++-- | -- | The response status code.+usimsrsResponseStatus :: Lens' UpdateSqlInjectionMatchSetResponse Int+usimsrsResponseStatus = lens _usimsrsResponseStatus (\ s a -> s{_usimsrsResponseStatus = a});++instance NFData UpdateSqlInjectionMatchSetResponse+ where
+ gen/Network/AWS/WAFRegional/UpdateWebACL.hs view
@@ -0,0 +1,195 @@+{-# 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.WAFRegional.UpdateWebACL+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'ActivatedRule' objects in a @WebACL@ . Each @Rule@ identifies web requests that you want to allow, block, or count. When you update a @WebACL@ , you specify the following values:+--+--+-- * A default action for the @WebACL@ , either @ALLOW@ or @BLOCK@ . AWS WAF performs the default action if a request doesn't match the criteria in any of the @Rules@ in a @WebACL@ .+--+-- * The @Rules@ that you want to add and/or delete. If you want to replace one @Rule@ with another, you delete the existing @Rule@ and add the new one.+--+-- * For each @Rule@ , whether you want AWS WAF to allow requests, block requests, or count requests that match the conditions in the @Rule@ .+--+-- * The order in which you want AWS WAF to evaluate the @Rules@ in a @WebACL@ . If you add more than one @Rule@ to a @WebACL@ , AWS WAF evaluates each request against the @Rules@ in order based on the value of @Priority@ . (The @Rule@ that has the lowest value for @Priority@ is evaluated first.) When a web request matches all of the predicates (such as @ByteMatchSets@ and @IPSets@ ) in a @Rule@ , AWS WAF immediately takes the corresponding action, allow or block, and doesn't evaluate the request against the remaining @Rules@ in the @WebACL@ , if any.+--+--+--+-- To create and configure a @WebACL@ , perform the following steps:+--+-- * Create and update the predicates that you want to include in @Rules@ . For more information, see 'CreateByteMatchSet' , 'UpdateByteMatchSet' , 'CreateIPSet' , 'UpdateIPSet' , 'CreateSqlInjectionMatchSet' , and 'UpdateSqlInjectionMatchSet' .+--+-- * Create and update the @Rules@ that you want to include in the @WebACL@ . For more information, see 'CreateRule' and 'UpdateRule' .+--+-- * Create a @WebACL@ . See 'CreateWebACL' .+--+-- * Use @GetChangeToken@ to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateWebACL' request.+--+-- * Submit an @UpdateWebACL@ request to specify the @Rules@ that you want to include in the @WebACL@ , to specify the default action, and to associate the @WebACL@ with a CloudFront distribution.+--+--+--+-- Be aware that if you try to add a RATE_BASED rule to a web ACL without setting the rule type when first creating the rule, the 'UpdateWebACL' request will fail because the request tries to add a REGULAR rule (the default rule type) with the specified ID, which does not exist.+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.UpdateWebACL+ (+ -- * Creating a Request+ updateWebACL+ , UpdateWebACL+ -- * Request Lenses+ , uwaUpdates+ , uwaDefaultAction+ , uwaWebACLId+ , uwaChangeToken++ -- * Destructuring the Response+ , updateWebACLResponse+ , UpdateWebACLResponse+ -- * Response Lenses+ , uwarsChangeToken+ , uwarsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | /See:/ 'updateWebACL' smart constructor.+data UpdateWebACL = UpdateWebACL'+ { _uwaUpdates :: !(Maybe [WebACLUpdate])+ , _uwaDefaultAction :: !(Maybe WafAction)+ , _uwaWebACLId :: !Text+ , _uwaChangeToken :: !Text+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateWebACL' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uwaUpdates' - An array of updates to make to the 'WebACL' . An array of @WebACLUpdate@ objects that you want to insert into or delete from a 'WebACL' . For more information, see the applicable data types: * 'WebACLUpdate' : Contains @Action@ and @ActivatedRule@ * 'ActivatedRule' : Contains @Action@ , @Priority@ , @RuleId@ , and @Type@ * 'WafAction' : Contains @Type@+--+-- * 'uwaDefaultAction' - A default action for the web ACL, either ALLOW or BLOCK. AWS WAF performs the default action if a request doesn't match the criteria in any of the rules in a web ACL.+--+-- * 'uwaWebACLId' - The @WebACLId@ of the 'WebACL' that you want to update. @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+--+-- * 'uwaChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+updateWebACL+ :: Text -- ^ 'uwaWebACLId'+ -> Text -- ^ 'uwaChangeToken'+ -> UpdateWebACL+updateWebACL pWebACLId_ pChangeToken_ =+ UpdateWebACL'+ { _uwaUpdates = Nothing+ , _uwaDefaultAction = Nothing+ , _uwaWebACLId = pWebACLId_+ , _uwaChangeToken = pChangeToken_+ }+++-- | An array of updates to make to the 'WebACL' . An array of @WebACLUpdate@ objects that you want to insert into or delete from a 'WebACL' . For more information, see the applicable data types: * 'WebACLUpdate' : Contains @Action@ and @ActivatedRule@ * 'ActivatedRule' : Contains @Action@ , @Priority@ , @RuleId@ , and @Type@ * 'WafAction' : Contains @Type@+uwaUpdates :: Lens' UpdateWebACL [WebACLUpdate]+uwaUpdates = lens _uwaUpdates (\ s a -> s{_uwaUpdates = a}) . _Default . _Coerce;++-- | A default action for the web ACL, either ALLOW or BLOCK. AWS WAF performs the default action if a request doesn't match the criteria in any of the rules in a web ACL.+uwaDefaultAction :: Lens' UpdateWebACL (Maybe WafAction)+uwaDefaultAction = lens _uwaDefaultAction (\ s a -> s{_uwaDefaultAction = a});++-- | The @WebACLId@ of the 'WebACL' that you want to update. @WebACLId@ is returned by 'CreateWebACL' and by 'ListWebACLs' .+uwaWebACLId :: Lens' UpdateWebACL Text+uwaWebACLId = lens _uwaWebACLId (\ s a -> s{_uwaWebACLId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+uwaChangeToken :: Lens' UpdateWebACL Text+uwaChangeToken = lens _uwaChangeToken (\ s a -> s{_uwaChangeToken = a});++instance AWSRequest UpdateWebACL where+ type Rs UpdateWebACL = UpdateWebACLResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateWebACLResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateWebACL where++instance NFData UpdateWebACL where++instance ToHeaders UpdateWebACL where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateWebACL" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateWebACL where+ toJSON UpdateWebACL'{..}+ = object+ (catMaybes+ [("Updates" .=) <$> _uwaUpdates,+ ("DefaultAction" .=) <$> _uwaDefaultAction,+ Just ("WebACLId" .= _uwaWebACLId),+ Just ("ChangeToken" .= _uwaChangeToken)])++instance ToPath UpdateWebACL where+ toPath = const "/"++instance ToQuery UpdateWebACL where+ toQuery = const mempty++-- | /See:/ 'updateWebACLResponse' smart constructor.+data UpdateWebACLResponse = UpdateWebACLResponse'+ { _uwarsChangeToken :: !(Maybe Text)+ , _uwarsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateWebACLResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uwarsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateWebACL@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'uwarsResponseStatus' - -- | The response status code.+updateWebACLResponse+ :: Int -- ^ 'uwarsResponseStatus'+ -> UpdateWebACLResponse+updateWebACLResponse pResponseStatus_ =+ UpdateWebACLResponse'+ {_uwarsChangeToken = Nothing, _uwarsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateWebACL@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+uwarsChangeToken :: Lens' UpdateWebACLResponse (Maybe Text)+uwarsChangeToken = lens _uwarsChangeToken (\ s a -> s{_uwarsChangeToken = a});++-- | -- | The response status code.+uwarsResponseStatus :: Lens' UpdateWebACLResponse Int+uwarsResponseStatus = lens _uwarsResponseStatus (\ s a -> s{_uwarsResponseStatus = a});++instance NFData UpdateWebACLResponse where
+ gen/Network/AWS/WAFRegional/UpdateXSSMatchSet.hs view
@@ -0,0 +1,188 @@+{-# 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.WAFRegional.UpdateXSSMatchSet+-- Copyright : (c) 2013-2017 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)+--+-- Inserts or deletes 'XssMatchTuple' objects (filters) in an 'XssMatchSet' . For each @XssMatchTuple@ object, you specify the following values:+--+--+-- * @Action@ : Whether to insert the object into or delete the object from the array. To change a @XssMatchTuple@ , you delete the existing object and add a new one.+--+-- * @FieldToMatch@ : The part of web requests that you want AWS WAF to inspect and, if you want AWS WAF to inspect a header, the name of the header.+--+-- * @TextTransformation@ : Which text transformation, if any, to perform on the web request before inspecting the request for cross-site scripting attacks.+--+--+--+-- You use @XssMatchSet@ objects to specify which CloudFront requests you want to allow, block, or count. For example, if you're receiving requests that contain cross-site scripting attacks in the request body and you want to block the requests, you can create an @XssMatchSet@ with the applicable settings, and then configure AWS WAF to block the requests.+--+-- To create and configure an @XssMatchSet@ , perform the following steps:+--+-- * Submit a 'CreateXssMatchSet' request.+--+-- * Use 'GetChangeToken' to get the change token that you provide in the @ChangeToken@ parameter of an 'UpdateIPSet' request.+--+-- * Submit an @UpdateXssMatchSet@ request to specify the parts of web requests that you want AWS WAF to inspect for cross-site scripting attacks.+--+--+--+-- For more information about how to use the AWS WAF API to allow or block HTTP requests, see the <http://docs.aws.amazon.com/waf/latest/developerguide/ AWS WAF Developer Guide> .+--+module Network.AWS.WAFRegional.UpdateXSSMatchSet+ (+ -- * Creating a Request+ updateXSSMatchSet+ , UpdateXSSMatchSet+ -- * Request Lenses+ , uxmsXSSMatchSetId+ , uxmsChangeToken+ , uxmsUpdates++ -- * Destructuring the Response+ , updateXSSMatchSetResponse+ , UpdateXSSMatchSetResponse+ -- * Response Lenses+ , uxmsrsChangeToken+ , uxmsrsResponseStatus+ ) where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response+import Network.AWS.WAFRegional.Types+import Network.AWS.WAFRegional.Types.Product++-- | A request to update an 'XssMatchSet' .+--+--+--+-- /See:/ 'updateXSSMatchSet' smart constructor.+data UpdateXSSMatchSet = UpdateXSSMatchSet'+ { _uxmsXSSMatchSetId :: !Text+ , _uxmsChangeToken :: !Text+ , _uxmsUpdates :: !(List1 XSSMatchSetUpdate)+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateXSSMatchSet' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uxmsXSSMatchSetId' - The @XssMatchSetId@ of the @XssMatchSet@ that you want to update. @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+--+-- * 'uxmsChangeToken' - The value returned by the most recent call to 'GetChangeToken' .+--+-- * 'uxmsUpdates' - An array of @XssMatchSetUpdate@ objects that you want to insert into or delete from a 'XssMatchSet' . For more information, see the applicable data types: * 'XssMatchSetUpdate' : Contains @Action@ and @XssMatchTuple@ * 'XssMatchTuple' : Contains @FieldToMatch@ and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+updateXSSMatchSet+ :: Text -- ^ 'uxmsXSSMatchSetId'+ -> Text -- ^ 'uxmsChangeToken'+ -> NonEmpty XSSMatchSetUpdate -- ^ 'uxmsUpdates'+ -> UpdateXSSMatchSet+updateXSSMatchSet pXSSMatchSetId_ pChangeToken_ pUpdates_ =+ UpdateXSSMatchSet'+ { _uxmsXSSMatchSetId = pXSSMatchSetId_+ , _uxmsChangeToken = pChangeToken_+ , _uxmsUpdates = _List1 # pUpdates_+ }+++-- | The @XssMatchSetId@ of the @XssMatchSet@ that you want to update. @XssMatchSetId@ is returned by 'CreateXssMatchSet' and by 'ListXssMatchSets' .+uxmsXSSMatchSetId :: Lens' UpdateXSSMatchSet Text+uxmsXSSMatchSetId = lens _uxmsXSSMatchSetId (\ s a -> s{_uxmsXSSMatchSetId = a});++-- | The value returned by the most recent call to 'GetChangeToken' .+uxmsChangeToken :: Lens' UpdateXSSMatchSet Text+uxmsChangeToken = lens _uxmsChangeToken (\ s a -> s{_uxmsChangeToken = a});++-- | An array of @XssMatchSetUpdate@ objects that you want to insert into or delete from a 'XssMatchSet' . For more information, see the applicable data types: * 'XssMatchSetUpdate' : Contains @Action@ and @XssMatchTuple@ * 'XssMatchTuple' : Contains @FieldToMatch@ and @TextTransformation@ * 'FieldToMatch' : Contains @Data@ and @Type@+uxmsUpdates :: Lens' UpdateXSSMatchSet (NonEmpty XSSMatchSetUpdate)+uxmsUpdates = lens _uxmsUpdates (\ s a -> s{_uxmsUpdates = a}) . _List1;++instance AWSRequest UpdateXSSMatchSet where+ type Rs UpdateXSSMatchSet = UpdateXSSMatchSetResponse+ request = postJSON wAFRegional+ response+ = receiveJSON+ (\ s h x ->+ UpdateXSSMatchSetResponse' <$>+ (x .?> "ChangeToken") <*> (pure (fromEnum s)))++instance Hashable UpdateXSSMatchSet where++instance NFData UpdateXSSMatchSet where++instance ToHeaders UpdateXSSMatchSet where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("AWSWAF_Regional_20161128.UpdateXssMatchSet" ::+ ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.1" :: ByteString)])++instance ToJSON UpdateXSSMatchSet where+ toJSON UpdateXSSMatchSet'{..}+ = object+ (catMaybes+ [Just ("XssMatchSetId" .= _uxmsXSSMatchSetId),+ Just ("ChangeToken" .= _uxmsChangeToken),+ Just ("Updates" .= _uxmsUpdates)])++instance ToPath UpdateXSSMatchSet where+ toPath = const "/"++instance ToQuery UpdateXSSMatchSet where+ toQuery = const mempty++-- | The response to an 'UpdateXssMatchSets' request.+--+--+--+-- /See:/ 'updateXSSMatchSetResponse' smart constructor.+data UpdateXSSMatchSetResponse = UpdateXSSMatchSetResponse'+ { _uxmsrsChangeToken :: !(Maybe Text)+ , _uxmsrsResponseStatus :: !Int+ } deriving (Eq, Read, Show, Data, Typeable, Generic)+++-- | Creates a value of 'UpdateXSSMatchSetResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uxmsrsChangeToken' - The @ChangeToken@ that you used to submit the @UpdateXssMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+--+-- * 'uxmsrsResponseStatus' - -- | The response status code.+updateXSSMatchSetResponse+ :: Int -- ^ 'uxmsrsResponseStatus'+ -> UpdateXSSMatchSetResponse+updateXSSMatchSetResponse pResponseStatus_ =+ UpdateXSSMatchSetResponse'+ {_uxmsrsChangeToken = Nothing, _uxmsrsResponseStatus = pResponseStatus_}+++-- | The @ChangeToken@ that you used to submit the @UpdateXssMatchSet@ request. You can also use this value to query the status of the request. For more information, see 'GetChangeTokenStatus' .+uxmsrsChangeToken :: Lens' UpdateXSSMatchSetResponse (Maybe Text)+uxmsrsChangeToken = lens _uxmsrsChangeToken (\ s a -> s{_uxmsrsChangeToken = a});++-- | -- | The response status code.+uxmsrsResponseStatus :: Lens' UpdateXSSMatchSetResponse Int+uxmsrsResponseStatus = lens _uxmsrsResponseStatus (\ s a -> s{_uxmsrsResponseStatus = a});++instance NFData UpdateXSSMatchSetResponse where
+ gen/Network/AWS/WAFRegional/Waiters.hs view
@@ -0,0 +1,21 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.WAFRegional.Waiters+-- Copyright : (c) 2013-2017 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)+--+module Network.AWS.WAFRegional.Waiters where++import Network.AWS.Lens+import Network.AWS.Prelude+import Network.AWS.WAFRegional.Types+import Network.AWS.Waiter
+ src/.gitkeep view
+ test/Main.hs view
@@ -0,0 +1,21 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module : Main+-- Copyright : (c) 2013-2017 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)+--+module Main (main) where++import Test.Tasty+import Test.AWS.WAFRegional+import Test.AWS.WAFRegional.Internal++main :: IO ()+main = defaultMain $ testGroup "WAFRegional"+ [ testGroup "tests" tests+ , testGroup "fixtures" fixtures+ ]
+ test/Test/AWS/Gen/WAFRegional.hs view
@@ -0,0 +1,1173 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Test.AWS.Gen.WAFRegional+-- Copyright : (c) 2013-2017 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)+--+module Test.AWS.Gen.WAFRegional where++import Data.Proxy+import Network.AWS.WAFRegional+import Test.AWS.Fixture+import Test.AWS.Prelude+import Test.AWS.WAFRegional.Internal+import Test.Tasty++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+-- [ testGroup "request"+-- [ requestListRateBasedRules $+-- listRateBasedRules+--+-- , requestGetSizeConstraintSet $+-- getSizeConstraintSet+--+-- , requestDeleteRateBasedRule $+-- deleteRateBasedRule+--+-- , requestUpdateRateBasedRule $+-- updateRateBasedRule+--+-- , requestUpdateRule $+-- updateRule+--+-- , requestDeleteRule $+-- deleteRule+--+-- , requestCreateIPSet $+-- createIPSet+--+-- , requestGetChangeTokenStatus $+-- getChangeTokenStatus+--+-- , requestDeleteWebACL $+-- deleteWebACL+--+-- , requestUpdateWebACL $+-- updateWebACL+--+-- , requestListWebACLs $+-- listWebACLs+--+-- , requestListRules $+-- listRules+--+-- , requestCreateRule $+-- createRule+--+-- , requestCreateWebACL $+-- createWebACL+--+-- , requestGetGeoMatchSet $+-- getGeoMatchSet+--+-- , requestListByteMatchSets $+-- listByteMatchSets+--+-- , requestListGeoMatchSets $+-- listGeoMatchSets+--+-- , requestDeleteRegexMatchSet $+-- deleteRegexMatchSet+--+-- , requestUpdateRegexMatchSet $+-- updateRegexMatchSet+--+-- , requestGetIPSet $+-- getIPSet+--+-- , requestGetWebACL $+-- getWebACL+--+-- , requestGetRule $+-- getRule+--+-- , requestDeleteXSSMatchSet $+-- deleteXSSMatchSet+--+-- , requestUpdateXSSMatchSet $+-- updateXSSMatchSet+--+-- , requestListXSSMatchSets $+-- listXSSMatchSets+--+-- , requestCreateGeoMatchSet $+-- createGeoMatchSet+--+-- , requestGetChangeToken $+-- getChangeToken+--+-- , requestListSizeConstraintSets $+-- listSizeConstraintSets+--+-- , requestListResourcesForWebACL $+-- listResourcesForWebACL+--+-- , requestGetSampledRequests $+-- getSampledRequests+--+-- , requestGetSqlInjectionMatchSet $+-- getSqlInjectionMatchSet+--+-- , requestGetWebACLForResource $+-- getWebACLForResource+--+-- , requestDisassociateWebACL $+-- disassociateWebACL+--+-- , requestCreateSqlInjectionMatchSet $+-- createSqlInjectionMatchSet+--+-- , requestGetXSSMatchSet $+-- getXSSMatchSet+--+-- , requestCreateByteMatchSet $+-- createByteMatchSet+--+-- , requestUpdateByteMatchSet $+-- updateByteMatchSet+--+-- , requestDeleteByteMatchSet $+-- deleteByteMatchSet+--+-- , requestGetRateBasedRuleManagedKeys $+-- getRateBasedRuleManagedKeys+--+-- , requestAssociateWebACL $+-- associateWebACL+--+-- , requestGetRegexMatchSet $+-- getRegexMatchSet+--+-- , requestDeleteIPSet $+-- deleteIPSet+--+-- , requestUpdateIPSet $+-- updateIPSet+--+-- , requestListIPSets $+-- listIPSets+--+-- , requestListRegexMatchSets $+-- listRegexMatchSets+--+-- , requestCreateXSSMatchSet $+-- createXSSMatchSet+--+-- , requestDeleteGeoMatchSet $+-- deleteGeoMatchSet+--+-- , requestUpdateGeoMatchSet $+-- updateGeoMatchSet+--+-- , requestGetByteMatchSet $+-- getByteMatchSet+--+-- , requestCreateRegexMatchSet $+-- createRegexMatchSet+--+-- , requestGetRateBasedRule $+-- getRateBasedRule+--+-- , requestCreateRegexPatternSet $+-- createRegexPatternSet+--+-- , requestDeleteSizeConstraintSet $+-- deleteSizeConstraintSet+--+-- , requestUpdateSizeConstraintSet $+-- updateSizeConstraintSet+--+-- , requestDeleteRegexPatternSet $+-- deleteRegexPatternSet+--+-- , requestUpdateRegexPatternSet $+-- updateRegexPatternSet+--+-- , requestCreateSizeConstraintSet $+-- createSizeConstraintSet+--+-- , requestListRegexPatternSets $+-- listRegexPatternSets+--+-- , requestListSqlInjectionMatchSets $+-- listSqlInjectionMatchSets+--+-- , requestGetRegexPatternSet $+-- getRegexPatternSet+--+-- , requestCreateRateBasedRule $+-- createRateBasedRule+--+-- , requestDeleteSqlInjectionMatchSet $+-- deleteSqlInjectionMatchSet+--+-- , requestUpdateSqlInjectionMatchSet $+-- updateSqlInjectionMatchSet+--+-- ]++-- , testGroup "response"+-- [ responseListRateBasedRules $+-- listRateBasedRulesResponse+--+-- , responseGetSizeConstraintSet $+-- getSizeConstraintSetResponse+--+-- , responseDeleteRateBasedRule $+-- deleteRateBasedRuleResponse+--+-- , responseUpdateRateBasedRule $+-- updateRateBasedRuleResponse+--+-- , responseUpdateRule $+-- updateRuleResponse+--+-- , responseDeleteRule $+-- deleteRuleResponse+--+-- , responseCreateIPSet $+-- createIPSetResponse+--+-- , responseGetChangeTokenStatus $+-- getChangeTokenStatusResponse+--+-- , responseDeleteWebACL $+-- deleteWebACLResponse+--+-- , responseUpdateWebACL $+-- updateWebACLResponse+--+-- , responseListWebACLs $+-- listWebACLsResponse+--+-- , responseListRules $+-- listRulesResponse+--+-- , responseCreateRule $+-- createRuleResponse+--+-- , responseCreateWebACL $+-- createWebACLResponse+--+-- , responseGetGeoMatchSet $+-- getGeoMatchSetResponse+--+-- , responseListByteMatchSets $+-- listByteMatchSetsResponse+--+-- , responseListGeoMatchSets $+-- listGeoMatchSetsResponse+--+-- , responseDeleteRegexMatchSet $+-- deleteRegexMatchSetResponse+--+-- , responseUpdateRegexMatchSet $+-- updateRegexMatchSetResponse+--+-- , responseGetIPSet $+-- getIPSetResponse+--+-- , responseGetWebACL $+-- getWebACLResponse+--+-- , responseGetRule $+-- getRuleResponse+--+-- , responseDeleteXSSMatchSet $+-- deleteXSSMatchSetResponse+--+-- , responseUpdateXSSMatchSet $+-- updateXSSMatchSetResponse+--+-- , responseListXSSMatchSets $+-- listXSSMatchSetsResponse+--+-- , responseCreateGeoMatchSet $+-- createGeoMatchSetResponse+--+-- , responseGetChangeToken $+-- getChangeTokenResponse+--+-- , responseListSizeConstraintSets $+-- listSizeConstraintSetsResponse+--+-- , responseListResourcesForWebACL $+-- listResourcesForWebACLResponse+--+-- , responseGetSampledRequests $+-- getSampledRequestsResponse+--+-- , responseGetSqlInjectionMatchSet $+-- getSqlInjectionMatchSetResponse+--+-- , responseGetWebACLForResource $+-- getWebACLForResourceResponse+--+-- , responseDisassociateWebACL $+-- disassociateWebACLResponse+--+-- , responseCreateSqlInjectionMatchSet $+-- createSqlInjectionMatchSetResponse+--+-- , responseGetXSSMatchSet $+-- getXSSMatchSetResponse+--+-- , responseCreateByteMatchSet $+-- createByteMatchSetResponse+--+-- , responseUpdateByteMatchSet $+-- updateByteMatchSetResponse+--+-- , responseDeleteByteMatchSet $+-- deleteByteMatchSetResponse+--+-- , responseGetRateBasedRuleManagedKeys $+-- getRateBasedRuleManagedKeysResponse+--+-- , responseAssociateWebACL $+-- associateWebACLResponse+--+-- , responseGetRegexMatchSet $+-- getRegexMatchSetResponse+--+-- , responseDeleteIPSet $+-- deleteIPSetResponse+--+-- , responseUpdateIPSet $+-- updateIPSetResponse+--+-- , responseListIPSets $+-- listIPSetsResponse+--+-- , responseListRegexMatchSets $+-- listRegexMatchSetsResponse+--+-- , responseCreateXSSMatchSet $+-- createXSSMatchSetResponse+--+-- , responseDeleteGeoMatchSet $+-- deleteGeoMatchSetResponse+--+-- , responseUpdateGeoMatchSet $+-- updateGeoMatchSetResponse+--+-- , responseGetByteMatchSet $+-- getByteMatchSetResponse+--+-- , responseCreateRegexMatchSet $+-- createRegexMatchSetResponse+--+-- , responseGetRateBasedRule $+-- getRateBasedRuleResponse+--+-- , responseCreateRegexPatternSet $+-- createRegexPatternSetResponse+--+-- , responseDeleteSizeConstraintSet $+-- deleteSizeConstraintSetResponse+--+-- , responseUpdateSizeConstraintSet $+-- updateSizeConstraintSetResponse+--+-- , responseDeleteRegexPatternSet $+-- deleteRegexPatternSetResponse+--+-- , responseUpdateRegexPatternSet $+-- updateRegexPatternSetResponse+--+-- , responseCreateSizeConstraintSet $+-- createSizeConstraintSetResponse+--+-- , responseListRegexPatternSets $+-- listRegexPatternSetsResponse+--+-- , responseListSqlInjectionMatchSets $+-- listSqlInjectionMatchSetsResponse+--+-- , responseGetRegexPatternSet $+-- getRegexPatternSetResponse+--+-- , responseCreateRateBasedRule $+-- createRateBasedRuleResponse+--+-- , responseDeleteSqlInjectionMatchSet $+-- deleteSqlInjectionMatchSetResponse+--+-- , responseUpdateSqlInjectionMatchSet $+-- updateSqlInjectionMatchSetResponse+--+-- ]+-- ]++-- Requests++requestListRateBasedRules :: ListRateBasedRules -> TestTree+requestListRateBasedRules = req+ "ListRateBasedRules"+ "fixture/ListRateBasedRules.yaml"++requestGetSizeConstraintSet :: GetSizeConstraintSet -> TestTree+requestGetSizeConstraintSet = req+ "GetSizeConstraintSet"+ "fixture/GetSizeConstraintSet.yaml"++requestDeleteRateBasedRule :: DeleteRateBasedRule -> TestTree+requestDeleteRateBasedRule = req+ "DeleteRateBasedRule"+ "fixture/DeleteRateBasedRule.yaml"++requestUpdateRateBasedRule :: UpdateRateBasedRule -> TestTree+requestUpdateRateBasedRule = req+ "UpdateRateBasedRule"+ "fixture/UpdateRateBasedRule.yaml"++requestUpdateRule :: UpdateRule -> TestTree+requestUpdateRule = req+ "UpdateRule"+ "fixture/UpdateRule.yaml"++requestDeleteRule :: DeleteRule -> TestTree+requestDeleteRule = req+ "DeleteRule"+ "fixture/DeleteRule.yaml"++requestCreateIPSet :: CreateIPSet -> TestTree+requestCreateIPSet = req+ "CreateIPSet"+ "fixture/CreateIPSet.yaml"++requestGetChangeTokenStatus :: GetChangeTokenStatus -> TestTree+requestGetChangeTokenStatus = req+ "GetChangeTokenStatus"+ "fixture/GetChangeTokenStatus.yaml"++requestDeleteWebACL :: DeleteWebACL -> TestTree+requestDeleteWebACL = req+ "DeleteWebACL"+ "fixture/DeleteWebACL.yaml"++requestUpdateWebACL :: UpdateWebACL -> TestTree+requestUpdateWebACL = req+ "UpdateWebACL"+ "fixture/UpdateWebACL.yaml"++requestListWebACLs :: ListWebACLs -> TestTree+requestListWebACLs = req+ "ListWebACLs"+ "fixture/ListWebACLs.yaml"++requestListRules :: ListRules -> TestTree+requestListRules = req+ "ListRules"+ "fixture/ListRules.yaml"++requestCreateRule :: CreateRule -> TestTree+requestCreateRule = req+ "CreateRule"+ "fixture/CreateRule.yaml"++requestCreateWebACL :: CreateWebACL -> TestTree+requestCreateWebACL = req+ "CreateWebACL"+ "fixture/CreateWebACL.yaml"++requestGetGeoMatchSet :: GetGeoMatchSet -> TestTree+requestGetGeoMatchSet = req+ "GetGeoMatchSet"+ "fixture/GetGeoMatchSet.yaml"++requestListByteMatchSets :: ListByteMatchSets -> TestTree+requestListByteMatchSets = req+ "ListByteMatchSets"+ "fixture/ListByteMatchSets.yaml"++requestListGeoMatchSets :: ListGeoMatchSets -> TestTree+requestListGeoMatchSets = req+ "ListGeoMatchSets"+ "fixture/ListGeoMatchSets.yaml"++requestDeleteRegexMatchSet :: DeleteRegexMatchSet -> TestTree+requestDeleteRegexMatchSet = req+ "DeleteRegexMatchSet"+ "fixture/DeleteRegexMatchSet.yaml"++requestUpdateRegexMatchSet :: UpdateRegexMatchSet -> TestTree+requestUpdateRegexMatchSet = req+ "UpdateRegexMatchSet"+ "fixture/UpdateRegexMatchSet.yaml"++requestGetIPSet :: GetIPSet -> TestTree+requestGetIPSet = req+ "GetIPSet"+ "fixture/GetIPSet.yaml"++requestGetWebACL :: GetWebACL -> TestTree+requestGetWebACL = req+ "GetWebACL"+ "fixture/GetWebACL.yaml"++requestGetRule :: GetRule -> TestTree+requestGetRule = req+ "GetRule"+ "fixture/GetRule.yaml"++requestDeleteXSSMatchSet :: DeleteXSSMatchSet -> TestTree+requestDeleteXSSMatchSet = req+ "DeleteXSSMatchSet"+ "fixture/DeleteXSSMatchSet.yaml"++requestUpdateXSSMatchSet :: UpdateXSSMatchSet -> TestTree+requestUpdateXSSMatchSet = req+ "UpdateXSSMatchSet"+ "fixture/UpdateXSSMatchSet.yaml"++requestListXSSMatchSets :: ListXSSMatchSets -> TestTree+requestListXSSMatchSets = req+ "ListXSSMatchSets"+ "fixture/ListXSSMatchSets.yaml"++requestCreateGeoMatchSet :: CreateGeoMatchSet -> TestTree+requestCreateGeoMatchSet = req+ "CreateGeoMatchSet"+ "fixture/CreateGeoMatchSet.yaml"++requestGetChangeToken :: GetChangeToken -> TestTree+requestGetChangeToken = req+ "GetChangeToken"+ "fixture/GetChangeToken.yaml"++requestListSizeConstraintSets :: ListSizeConstraintSets -> TestTree+requestListSizeConstraintSets = req+ "ListSizeConstraintSets"+ "fixture/ListSizeConstraintSets.yaml"++requestListResourcesForWebACL :: ListResourcesForWebACL -> TestTree+requestListResourcesForWebACL = req+ "ListResourcesForWebACL"+ "fixture/ListResourcesForWebACL.yaml"++requestGetSampledRequests :: GetSampledRequests -> TestTree+requestGetSampledRequests = req+ "GetSampledRequests"+ "fixture/GetSampledRequests.yaml"++requestGetSqlInjectionMatchSet :: GetSqlInjectionMatchSet -> TestTree+requestGetSqlInjectionMatchSet = req+ "GetSqlInjectionMatchSet"+ "fixture/GetSqlInjectionMatchSet.yaml"++requestGetWebACLForResource :: GetWebACLForResource -> TestTree+requestGetWebACLForResource = req+ "GetWebACLForResource"+ "fixture/GetWebACLForResource.yaml"++requestDisassociateWebACL :: DisassociateWebACL -> TestTree+requestDisassociateWebACL = req+ "DisassociateWebACL"+ "fixture/DisassociateWebACL.yaml"++requestCreateSqlInjectionMatchSet :: CreateSqlInjectionMatchSet -> TestTree+requestCreateSqlInjectionMatchSet = req+ "CreateSqlInjectionMatchSet"+ "fixture/CreateSqlInjectionMatchSet.yaml"++requestGetXSSMatchSet :: GetXSSMatchSet -> TestTree+requestGetXSSMatchSet = req+ "GetXSSMatchSet"+ "fixture/GetXSSMatchSet.yaml"++requestCreateByteMatchSet :: CreateByteMatchSet -> TestTree+requestCreateByteMatchSet = req+ "CreateByteMatchSet"+ "fixture/CreateByteMatchSet.yaml"++requestUpdateByteMatchSet :: UpdateByteMatchSet -> TestTree+requestUpdateByteMatchSet = req+ "UpdateByteMatchSet"+ "fixture/UpdateByteMatchSet.yaml"++requestDeleteByteMatchSet :: DeleteByteMatchSet -> TestTree+requestDeleteByteMatchSet = req+ "DeleteByteMatchSet"+ "fixture/DeleteByteMatchSet.yaml"++requestGetRateBasedRuleManagedKeys :: GetRateBasedRuleManagedKeys -> TestTree+requestGetRateBasedRuleManagedKeys = req+ "GetRateBasedRuleManagedKeys"+ "fixture/GetRateBasedRuleManagedKeys.yaml"++requestAssociateWebACL :: AssociateWebACL -> TestTree+requestAssociateWebACL = req+ "AssociateWebACL"+ "fixture/AssociateWebACL.yaml"++requestGetRegexMatchSet :: GetRegexMatchSet -> TestTree+requestGetRegexMatchSet = req+ "GetRegexMatchSet"+ "fixture/GetRegexMatchSet.yaml"++requestDeleteIPSet :: DeleteIPSet -> TestTree+requestDeleteIPSet = req+ "DeleteIPSet"+ "fixture/DeleteIPSet.yaml"++requestUpdateIPSet :: UpdateIPSet -> TestTree+requestUpdateIPSet = req+ "UpdateIPSet"+ "fixture/UpdateIPSet.yaml"++requestListIPSets :: ListIPSets -> TestTree+requestListIPSets = req+ "ListIPSets"+ "fixture/ListIPSets.yaml"++requestListRegexMatchSets :: ListRegexMatchSets -> TestTree+requestListRegexMatchSets = req+ "ListRegexMatchSets"+ "fixture/ListRegexMatchSets.yaml"++requestCreateXSSMatchSet :: CreateXSSMatchSet -> TestTree+requestCreateXSSMatchSet = req+ "CreateXSSMatchSet"+ "fixture/CreateXSSMatchSet.yaml"++requestDeleteGeoMatchSet :: DeleteGeoMatchSet -> TestTree+requestDeleteGeoMatchSet = req+ "DeleteGeoMatchSet"+ "fixture/DeleteGeoMatchSet.yaml"++requestUpdateGeoMatchSet :: UpdateGeoMatchSet -> TestTree+requestUpdateGeoMatchSet = req+ "UpdateGeoMatchSet"+ "fixture/UpdateGeoMatchSet.yaml"++requestGetByteMatchSet :: GetByteMatchSet -> TestTree+requestGetByteMatchSet = req+ "GetByteMatchSet"+ "fixture/GetByteMatchSet.yaml"++requestCreateRegexMatchSet :: CreateRegexMatchSet -> TestTree+requestCreateRegexMatchSet = req+ "CreateRegexMatchSet"+ "fixture/CreateRegexMatchSet.yaml"++requestGetRateBasedRule :: GetRateBasedRule -> TestTree+requestGetRateBasedRule = req+ "GetRateBasedRule"+ "fixture/GetRateBasedRule.yaml"++requestCreateRegexPatternSet :: CreateRegexPatternSet -> TestTree+requestCreateRegexPatternSet = req+ "CreateRegexPatternSet"+ "fixture/CreateRegexPatternSet.yaml"++requestDeleteSizeConstraintSet :: DeleteSizeConstraintSet -> TestTree+requestDeleteSizeConstraintSet = req+ "DeleteSizeConstraintSet"+ "fixture/DeleteSizeConstraintSet.yaml"++requestUpdateSizeConstraintSet :: UpdateSizeConstraintSet -> TestTree+requestUpdateSizeConstraintSet = req+ "UpdateSizeConstraintSet"+ "fixture/UpdateSizeConstraintSet.yaml"++requestDeleteRegexPatternSet :: DeleteRegexPatternSet -> TestTree+requestDeleteRegexPatternSet = req+ "DeleteRegexPatternSet"+ "fixture/DeleteRegexPatternSet.yaml"++requestUpdateRegexPatternSet :: UpdateRegexPatternSet -> TestTree+requestUpdateRegexPatternSet = req+ "UpdateRegexPatternSet"+ "fixture/UpdateRegexPatternSet.yaml"++requestCreateSizeConstraintSet :: CreateSizeConstraintSet -> TestTree+requestCreateSizeConstraintSet = req+ "CreateSizeConstraintSet"+ "fixture/CreateSizeConstraintSet.yaml"++requestListRegexPatternSets :: ListRegexPatternSets -> TestTree+requestListRegexPatternSets = req+ "ListRegexPatternSets"+ "fixture/ListRegexPatternSets.yaml"++requestListSqlInjectionMatchSets :: ListSqlInjectionMatchSets -> TestTree+requestListSqlInjectionMatchSets = req+ "ListSqlInjectionMatchSets"+ "fixture/ListSqlInjectionMatchSets.yaml"++requestGetRegexPatternSet :: GetRegexPatternSet -> TestTree+requestGetRegexPatternSet = req+ "GetRegexPatternSet"+ "fixture/GetRegexPatternSet.yaml"++requestCreateRateBasedRule :: CreateRateBasedRule -> TestTree+requestCreateRateBasedRule = req+ "CreateRateBasedRule"+ "fixture/CreateRateBasedRule.yaml"++requestDeleteSqlInjectionMatchSet :: DeleteSqlInjectionMatchSet -> TestTree+requestDeleteSqlInjectionMatchSet = req+ "DeleteSqlInjectionMatchSet"+ "fixture/DeleteSqlInjectionMatchSet.yaml"++requestUpdateSqlInjectionMatchSet :: UpdateSqlInjectionMatchSet -> TestTree+requestUpdateSqlInjectionMatchSet = req+ "UpdateSqlInjectionMatchSet"+ "fixture/UpdateSqlInjectionMatchSet.yaml"++-- Responses++responseListRateBasedRules :: ListRateBasedRulesResponse -> TestTree+responseListRateBasedRules = res+ "ListRateBasedRulesResponse"+ "fixture/ListRateBasedRulesResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListRateBasedRules)++responseGetSizeConstraintSet :: GetSizeConstraintSetResponse -> TestTree+responseGetSizeConstraintSet = res+ "GetSizeConstraintSetResponse"+ "fixture/GetSizeConstraintSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetSizeConstraintSet)++responseDeleteRateBasedRule :: DeleteRateBasedRuleResponse -> TestTree+responseDeleteRateBasedRule = res+ "DeleteRateBasedRuleResponse"+ "fixture/DeleteRateBasedRuleResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteRateBasedRule)++responseUpdateRateBasedRule :: UpdateRateBasedRuleResponse -> TestTree+responseUpdateRateBasedRule = res+ "UpdateRateBasedRuleResponse"+ "fixture/UpdateRateBasedRuleResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateRateBasedRule)++responseUpdateRule :: UpdateRuleResponse -> TestTree+responseUpdateRule = res+ "UpdateRuleResponse"+ "fixture/UpdateRuleResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateRule)++responseDeleteRule :: DeleteRuleResponse -> TestTree+responseDeleteRule = res+ "DeleteRuleResponse"+ "fixture/DeleteRuleResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteRule)++responseCreateIPSet :: CreateIPSetResponse -> TestTree+responseCreateIPSet = res+ "CreateIPSetResponse"+ "fixture/CreateIPSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateIPSet)++responseGetChangeTokenStatus :: GetChangeTokenStatusResponse -> TestTree+responseGetChangeTokenStatus = res+ "GetChangeTokenStatusResponse"+ "fixture/GetChangeTokenStatusResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetChangeTokenStatus)++responseDeleteWebACL :: DeleteWebACLResponse -> TestTree+responseDeleteWebACL = res+ "DeleteWebACLResponse"+ "fixture/DeleteWebACLResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteWebACL)++responseUpdateWebACL :: UpdateWebACLResponse -> TestTree+responseUpdateWebACL = res+ "UpdateWebACLResponse"+ "fixture/UpdateWebACLResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateWebACL)++responseListWebACLs :: ListWebACLsResponse -> TestTree+responseListWebACLs = res+ "ListWebACLsResponse"+ "fixture/ListWebACLsResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListWebACLs)++responseListRules :: ListRulesResponse -> TestTree+responseListRules = res+ "ListRulesResponse"+ "fixture/ListRulesResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListRules)++responseCreateRule :: CreateRuleResponse -> TestTree+responseCreateRule = res+ "CreateRuleResponse"+ "fixture/CreateRuleResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateRule)++responseCreateWebACL :: CreateWebACLResponse -> TestTree+responseCreateWebACL = res+ "CreateWebACLResponse"+ "fixture/CreateWebACLResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateWebACL)++responseGetGeoMatchSet :: GetGeoMatchSetResponse -> TestTree+responseGetGeoMatchSet = res+ "GetGeoMatchSetResponse"+ "fixture/GetGeoMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetGeoMatchSet)++responseListByteMatchSets :: ListByteMatchSetsResponse -> TestTree+responseListByteMatchSets = res+ "ListByteMatchSetsResponse"+ "fixture/ListByteMatchSetsResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListByteMatchSets)++responseListGeoMatchSets :: ListGeoMatchSetsResponse -> TestTree+responseListGeoMatchSets = res+ "ListGeoMatchSetsResponse"+ "fixture/ListGeoMatchSetsResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListGeoMatchSets)++responseDeleteRegexMatchSet :: DeleteRegexMatchSetResponse -> TestTree+responseDeleteRegexMatchSet = res+ "DeleteRegexMatchSetResponse"+ "fixture/DeleteRegexMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteRegexMatchSet)++responseUpdateRegexMatchSet :: UpdateRegexMatchSetResponse -> TestTree+responseUpdateRegexMatchSet = res+ "UpdateRegexMatchSetResponse"+ "fixture/UpdateRegexMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateRegexMatchSet)++responseGetIPSet :: GetIPSetResponse -> TestTree+responseGetIPSet = res+ "GetIPSetResponse"+ "fixture/GetIPSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetIPSet)++responseGetWebACL :: GetWebACLResponse -> TestTree+responseGetWebACL = res+ "GetWebACLResponse"+ "fixture/GetWebACLResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetWebACL)++responseGetRule :: GetRuleResponse -> TestTree+responseGetRule = res+ "GetRuleResponse"+ "fixture/GetRuleResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetRule)++responseDeleteXSSMatchSet :: DeleteXSSMatchSetResponse -> TestTree+responseDeleteXSSMatchSet = res+ "DeleteXSSMatchSetResponse"+ "fixture/DeleteXSSMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteXSSMatchSet)++responseUpdateXSSMatchSet :: UpdateXSSMatchSetResponse -> TestTree+responseUpdateXSSMatchSet = res+ "UpdateXSSMatchSetResponse"+ "fixture/UpdateXSSMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateXSSMatchSet)++responseListXSSMatchSets :: ListXSSMatchSetsResponse -> TestTree+responseListXSSMatchSets = res+ "ListXSSMatchSetsResponse"+ "fixture/ListXSSMatchSetsResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListXSSMatchSets)++responseCreateGeoMatchSet :: CreateGeoMatchSetResponse -> TestTree+responseCreateGeoMatchSet = res+ "CreateGeoMatchSetResponse"+ "fixture/CreateGeoMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateGeoMatchSet)++responseGetChangeToken :: GetChangeTokenResponse -> TestTree+responseGetChangeToken = res+ "GetChangeTokenResponse"+ "fixture/GetChangeTokenResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetChangeToken)++responseListSizeConstraintSets :: ListSizeConstraintSetsResponse -> TestTree+responseListSizeConstraintSets = res+ "ListSizeConstraintSetsResponse"+ "fixture/ListSizeConstraintSetsResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListSizeConstraintSets)++responseListResourcesForWebACL :: ListResourcesForWebACLResponse -> TestTree+responseListResourcesForWebACL = res+ "ListResourcesForWebACLResponse"+ "fixture/ListResourcesForWebACLResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListResourcesForWebACL)++responseGetSampledRequests :: GetSampledRequestsResponse -> TestTree+responseGetSampledRequests = res+ "GetSampledRequestsResponse"+ "fixture/GetSampledRequestsResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetSampledRequests)++responseGetSqlInjectionMatchSet :: GetSqlInjectionMatchSetResponse -> TestTree+responseGetSqlInjectionMatchSet = res+ "GetSqlInjectionMatchSetResponse"+ "fixture/GetSqlInjectionMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetSqlInjectionMatchSet)++responseGetWebACLForResource :: GetWebACLForResourceResponse -> TestTree+responseGetWebACLForResource = res+ "GetWebACLForResourceResponse"+ "fixture/GetWebACLForResourceResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetWebACLForResource)++responseDisassociateWebACL :: DisassociateWebACLResponse -> TestTree+responseDisassociateWebACL = res+ "DisassociateWebACLResponse"+ "fixture/DisassociateWebACLResponse.proto"+ wAFRegional+ (Proxy :: Proxy DisassociateWebACL)++responseCreateSqlInjectionMatchSet :: CreateSqlInjectionMatchSetResponse -> TestTree+responseCreateSqlInjectionMatchSet = res+ "CreateSqlInjectionMatchSetResponse"+ "fixture/CreateSqlInjectionMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateSqlInjectionMatchSet)++responseGetXSSMatchSet :: GetXSSMatchSetResponse -> TestTree+responseGetXSSMatchSet = res+ "GetXSSMatchSetResponse"+ "fixture/GetXSSMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetXSSMatchSet)++responseCreateByteMatchSet :: CreateByteMatchSetResponse -> TestTree+responseCreateByteMatchSet = res+ "CreateByteMatchSetResponse"+ "fixture/CreateByteMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateByteMatchSet)++responseUpdateByteMatchSet :: UpdateByteMatchSetResponse -> TestTree+responseUpdateByteMatchSet = res+ "UpdateByteMatchSetResponse"+ "fixture/UpdateByteMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateByteMatchSet)++responseDeleteByteMatchSet :: DeleteByteMatchSetResponse -> TestTree+responseDeleteByteMatchSet = res+ "DeleteByteMatchSetResponse"+ "fixture/DeleteByteMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteByteMatchSet)++responseGetRateBasedRuleManagedKeys :: GetRateBasedRuleManagedKeysResponse -> TestTree+responseGetRateBasedRuleManagedKeys = res+ "GetRateBasedRuleManagedKeysResponse"+ "fixture/GetRateBasedRuleManagedKeysResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetRateBasedRuleManagedKeys)++responseAssociateWebACL :: AssociateWebACLResponse -> TestTree+responseAssociateWebACL = res+ "AssociateWebACLResponse"+ "fixture/AssociateWebACLResponse.proto"+ wAFRegional+ (Proxy :: Proxy AssociateWebACL)++responseGetRegexMatchSet :: GetRegexMatchSetResponse -> TestTree+responseGetRegexMatchSet = res+ "GetRegexMatchSetResponse"+ "fixture/GetRegexMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetRegexMatchSet)++responseDeleteIPSet :: DeleteIPSetResponse -> TestTree+responseDeleteIPSet = res+ "DeleteIPSetResponse"+ "fixture/DeleteIPSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteIPSet)++responseUpdateIPSet :: UpdateIPSetResponse -> TestTree+responseUpdateIPSet = res+ "UpdateIPSetResponse"+ "fixture/UpdateIPSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateIPSet)++responseListIPSets :: ListIPSetsResponse -> TestTree+responseListIPSets = res+ "ListIPSetsResponse"+ "fixture/ListIPSetsResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListIPSets)++responseListRegexMatchSets :: ListRegexMatchSetsResponse -> TestTree+responseListRegexMatchSets = res+ "ListRegexMatchSetsResponse"+ "fixture/ListRegexMatchSetsResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListRegexMatchSets)++responseCreateXSSMatchSet :: CreateXSSMatchSetResponse -> TestTree+responseCreateXSSMatchSet = res+ "CreateXSSMatchSetResponse"+ "fixture/CreateXSSMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateXSSMatchSet)++responseDeleteGeoMatchSet :: DeleteGeoMatchSetResponse -> TestTree+responseDeleteGeoMatchSet = res+ "DeleteGeoMatchSetResponse"+ "fixture/DeleteGeoMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteGeoMatchSet)++responseUpdateGeoMatchSet :: UpdateGeoMatchSetResponse -> TestTree+responseUpdateGeoMatchSet = res+ "UpdateGeoMatchSetResponse"+ "fixture/UpdateGeoMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateGeoMatchSet)++responseGetByteMatchSet :: GetByteMatchSetResponse -> TestTree+responseGetByteMatchSet = res+ "GetByteMatchSetResponse"+ "fixture/GetByteMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetByteMatchSet)++responseCreateRegexMatchSet :: CreateRegexMatchSetResponse -> TestTree+responseCreateRegexMatchSet = res+ "CreateRegexMatchSetResponse"+ "fixture/CreateRegexMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateRegexMatchSet)++responseGetRateBasedRule :: GetRateBasedRuleResponse -> TestTree+responseGetRateBasedRule = res+ "GetRateBasedRuleResponse"+ "fixture/GetRateBasedRuleResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetRateBasedRule)++responseCreateRegexPatternSet :: CreateRegexPatternSetResponse -> TestTree+responseCreateRegexPatternSet = res+ "CreateRegexPatternSetResponse"+ "fixture/CreateRegexPatternSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateRegexPatternSet)++responseDeleteSizeConstraintSet :: DeleteSizeConstraintSetResponse -> TestTree+responseDeleteSizeConstraintSet = res+ "DeleteSizeConstraintSetResponse"+ "fixture/DeleteSizeConstraintSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteSizeConstraintSet)++responseUpdateSizeConstraintSet :: UpdateSizeConstraintSetResponse -> TestTree+responseUpdateSizeConstraintSet = res+ "UpdateSizeConstraintSetResponse"+ "fixture/UpdateSizeConstraintSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateSizeConstraintSet)++responseDeleteRegexPatternSet :: DeleteRegexPatternSetResponse -> TestTree+responseDeleteRegexPatternSet = res+ "DeleteRegexPatternSetResponse"+ "fixture/DeleteRegexPatternSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteRegexPatternSet)++responseUpdateRegexPatternSet :: UpdateRegexPatternSetResponse -> TestTree+responseUpdateRegexPatternSet = res+ "UpdateRegexPatternSetResponse"+ "fixture/UpdateRegexPatternSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateRegexPatternSet)++responseCreateSizeConstraintSet :: CreateSizeConstraintSetResponse -> TestTree+responseCreateSizeConstraintSet = res+ "CreateSizeConstraintSetResponse"+ "fixture/CreateSizeConstraintSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateSizeConstraintSet)++responseListRegexPatternSets :: ListRegexPatternSetsResponse -> TestTree+responseListRegexPatternSets = res+ "ListRegexPatternSetsResponse"+ "fixture/ListRegexPatternSetsResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListRegexPatternSets)++responseListSqlInjectionMatchSets :: ListSqlInjectionMatchSetsResponse -> TestTree+responseListSqlInjectionMatchSets = res+ "ListSqlInjectionMatchSetsResponse"+ "fixture/ListSqlInjectionMatchSetsResponse.proto"+ wAFRegional+ (Proxy :: Proxy ListSqlInjectionMatchSets)++responseGetRegexPatternSet :: GetRegexPatternSetResponse -> TestTree+responseGetRegexPatternSet = res+ "GetRegexPatternSetResponse"+ "fixture/GetRegexPatternSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy GetRegexPatternSet)++responseCreateRateBasedRule :: CreateRateBasedRuleResponse -> TestTree+responseCreateRateBasedRule = res+ "CreateRateBasedRuleResponse"+ "fixture/CreateRateBasedRuleResponse.proto"+ wAFRegional+ (Proxy :: Proxy CreateRateBasedRule)++responseDeleteSqlInjectionMatchSet :: DeleteSqlInjectionMatchSetResponse -> TestTree+responseDeleteSqlInjectionMatchSet = res+ "DeleteSqlInjectionMatchSetResponse"+ "fixture/DeleteSqlInjectionMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy DeleteSqlInjectionMatchSet)++responseUpdateSqlInjectionMatchSet :: UpdateSqlInjectionMatchSetResponse -> TestTree+responseUpdateSqlInjectionMatchSet = res+ "UpdateSqlInjectionMatchSetResponse"+ "fixture/UpdateSqlInjectionMatchSetResponse.proto"+ wAFRegional+ (Proxy :: Proxy UpdateSqlInjectionMatchSet)
+ test/Test/AWS/WAFRegional.hs view
@@ -0,0 +1,20 @@+-- |+-- Module : Test.AWS.WAFRegional+-- Copyright : (c) 2013-2016 Brendan Hay+-- License : Mozilla Public License, v. 2.0.+-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Test.AWS.WAFRegional+ ( tests+ , fixtures+ ) where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/AWS/WAFRegional/Internal.hs view
@@ -0,0 +1,9 @@+-- |+-- Module : Test.AWS.WAFRegional.Internal+-- Copyright : (c) 2013-2016 Brendan Hay+-- License : Mozilla Public License, v. 2.0.+-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>+-- Stability : auto-generated+-- Portability : non-portable (GHC extensions)+--+module Test.AWS.WAFRegional.Internal where