/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace WAFV2 { namespace Model { /** *

This is the latest version of AWS WAF, named AWS WAFV2, * released in November, 2019. For information, including how to migrate your AWS * WAF resources from the prior release, see the AWS * WAF Developer Guide.

The part of a web request that you want * AWS WAF to inspect. Include the single FieldToMatch type that you * want to inspect, with additional specifications as needed, according to the * type. You specify a single request component in FieldToMatch for * each rule statement that requires it. To inspect more than one component of a * web request, create a separate rule statement for each component.

See * Also:

AWS * API Reference

*/ class AWS_WAFV2_API FieldToMatch { public: FieldToMatch(); FieldToMatch(Aws::Utils::Json::JsonView jsonValue); FieldToMatch& operator=(Aws::Utils::Json::JsonView jsonValue); Aws::Utils::Json::JsonValue Jsonize() const; /** *

Inspect a single header. Provide the name of the header to inspect, for * example, User-Agent or Referer. This setting isn't * case sensitive.

*/ inline const SingleHeader& GetSingleHeader() const{ return m_singleHeader; } /** *

Inspect a single header. Provide the name of the header to inspect, for * example, User-Agent or Referer. This setting isn't * case sensitive.

*/ inline bool SingleHeaderHasBeenSet() const { return m_singleHeaderHasBeenSet; } /** *

Inspect a single header. Provide the name of the header to inspect, for * example, User-Agent or Referer. This setting isn't * case sensitive.

*/ inline void SetSingleHeader(const SingleHeader& value) { m_singleHeaderHasBeenSet = true; m_singleHeader = value; } /** *

Inspect a single header. Provide the name of the header to inspect, for * example, User-Agent or Referer. This setting isn't * case sensitive.

*/ inline void SetSingleHeader(SingleHeader&& value) { m_singleHeaderHasBeenSet = true; m_singleHeader = std::move(value); } /** *

Inspect a single header. Provide the name of the header to inspect, for * example, User-Agent or Referer. This setting isn't * case sensitive.

*/ inline FieldToMatch& WithSingleHeader(const SingleHeader& value) { SetSingleHeader(value); return *this;} /** *

Inspect a single header. Provide the name of the header to inspect, for * example, User-Agent or Referer. This setting isn't * case sensitive.

*/ inline FieldToMatch& WithSingleHeader(SingleHeader&& value) { SetSingleHeader(std::move(value)); return *this;} /** *

Inspect a single query argument. Provide the name of the query argument to * inspect, such as UserName or SalesRegion. The name can be up to 30 * characters long and isn't case sensitive.

This is used only to indicate * the web request component for AWS WAF to inspect, in the FieldToMatch * specification.

*/ inline const SingleQueryArgument& GetSingleQueryArgument() const{ return m_singleQueryArgument; } /** *

Inspect a single query argument. Provide the name of the query argument to * inspect, such as UserName or SalesRegion. The name can be up to 30 * characters long and isn't case sensitive.

This is used only to indicate * the web request component for AWS WAF to inspect, in the FieldToMatch * specification.

*/ inline bool SingleQueryArgumentHasBeenSet() const { return m_singleQueryArgumentHasBeenSet; } /** *

Inspect a single query argument. Provide the name of the query argument to * inspect, such as UserName or SalesRegion. The name can be up to 30 * characters long and isn't case sensitive.

This is used only to indicate * the web request component for AWS WAF to inspect, in the FieldToMatch * specification.

*/ inline void SetSingleQueryArgument(const SingleQueryArgument& value) { m_singleQueryArgumentHasBeenSet = true; m_singleQueryArgument = value; } /** *

Inspect a single query argument. Provide the name of the query argument to * inspect, such as UserName or SalesRegion. The name can be up to 30 * characters long and isn't case sensitive.

This is used only to indicate * the web request component for AWS WAF to inspect, in the FieldToMatch * specification.

*/ inline void SetSingleQueryArgument(SingleQueryArgument&& value) { m_singleQueryArgumentHasBeenSet = true; m_singleQueryArgument = std::move(value); } /** *

Inspect a single query argument. Provide the name of the query argument to * inspect, such as UserName or SalesRegion. The name can be up to 30 * characters long and isn't case sensitive.

This is used only to indicate * the web request component for AWS WAF to inspect, in the FieldToMatch * specification.

*/ inline FieldToMatch& WithSingleQueryArgument(const SingleQueryArgument& value) { SetSingleQueryArgument(value); return *this;} /** *

Inspect a single query argument. Provide the name of the query argument to * inspect, such as UserName or SalesRegion. The name can be up to 30 * characters long and isn't case sensitive.

This is used only to indicate * the web request component for AWS WAF to inspect, in the FieldToMatch * specification.

*/ inline FieldToMatch& WithSingleQueryArgument(SingleQueryArgument&& value) { SetSingleQueryArgument(std::move(value)); return *this;} /** *

Inspect all query arguments.

*/ inline const AllQueryArguments& GetAllQueryArguments() const{ return m_allQueryArguments; } /** *

Inspect all query arguments.

*/ inline bool AllQueryArgumentsHasBeenSet() const { return m_allQueryArgumentsHasBeenSet; } /** *

Inspect all query arguments.

*/ inline void SetAllQueryArguments(const AllQueryArguments& value) { m_allQueryArgumentsHasBeenSet = true; m_allQueryArguments = value; } /** *

Inspect all query arguments.

*/ inline void SetAllQueryArguments(AllQueryArguments&& value) { m_allQueryArgumentsHasBeenSet = true; m_allQueryArguments = std::move(value); } /** *

Inspect all query arguments.

*/ inline FieldToMatch& WithAllQueryArguments(const AllQueryArguments& value) { SetAllQueryArguments(value); return *this;} /** *

Inspect all query arguments.

*/ inline FieldToMatch& WithAllQueryArguments(AllQueryArguments&& value) { SetAllQueryArguments(std::move(value)); return *this;} /** *

Inspect the request URI path. This is the part of a web request that * identifies a resource, for example, /images/daily-ad.jpg.

*/ inline const UriPath& GetUriPath() const{ return m_uriPath; } /** *

Inspect the request URI path. This is the part of a web request that * identifies a resource, for example, /images/daily-ad.jpg.

*/ inline bool UriPathHasBeenSet() const { return m_uriPathHasBeenSet; } /** *

Inspect the request URI path. This is the part of a web request that * identifies a resource, for example, /images/daily-ad.jpg.

*/ inline void SetUriPath(const UriPath& value) { m_uriPathHasBeenSet = true; m_uriPath = value; } /** *

Inspect the request URI path. This is the part of a web request that * identifies a resource, for example, /images/daily-ad.jpg.

*/ inline void SetUriPath(UriPath&& value) { m_uriPathHasBeenSet = true; m_uriPath = std::move(value); } /** *

Inspect the request URI path. This is the part of a web request that * identifies a resource, for example, /images/daily-ad.jpg.

*/ inline FieldToMatch& WithUriPath(const UriPath& value) { SetUriPath(value); return *this;} /** *

Inspect the request URI path. This is the part of a web request that * identifies a resource, for example, /images/daily-ad.jpg.

*/ inline FieldToMatch& WithUriPath(UriPath&& value) { SetUriPath(std::move(value)); return *this;} /** *

Inspect the query string. This is the part of a URL that appears after a * ? character, if any.

*/ inline const QueryString& GetQueryString() const{ return m_queryString; } /** *

Inspect the query string. This is the part of a URL that appears after a * ? character, if any.

*/ inline bool QueryStringHasBeenSet() const { return m_queryStringHasBeenSet; } /** *

Inspect the query string. This is the part of a URL that appears after a * ? character, if any.

*/ inline void SetQueryString(const QueryString& value) { m_queryStringHasBeenSet = true; m_queryString = value; } /** *

Inspect the query string. This is the part of a URL that appears after a * ? character, if any.

*/ inline void SetQueryString(QueryString&& value) { m_queryStringHasBeenSet = true; m_queryString = std::move(value); } /** *

Inspect the query string. This is the part of a URL that appears after a * ? character, if any.

*/ inline FieldToMatch& WithQueryString(const QueryString& value) { SetQueryString(value); return *this;} /** *

Inspect the query string. This is the part of a URL that appears after a * ? character, if any.

*/ inline FieldToMatch& WithQueryString(QueryString&& value) { SetQueryString(std::move(value)); return *this;} /** *

Inspect the request body, which immediately follows the request headers. This * is 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.

*

Note that only the first 8 KB (8192 bytes) of the request body are forwarded * to AWS WAF for inspection by the underlying host service. If you don't need to * inspect more than 8 KB, you can guarantee that you don't allow additional bytes * in by combining a statement that inspects the body of the web request, such as * ByteMatchStatement or RegexPatternSetReferenceStatement, with a * SizeConstraintStatement that enforces an 8 KB size limit on the body of * the request. AWS WAF doesn't support inspecting the entire contents of web * requests whose bodies exceed the 8 KB limit.

*/ inline const Body& GetBody() const{ return m_body; } /** *

Inspect the request body, which immediately follows the request headers. This * is 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.

*

Note that only the first 8 KB (8192 bytes) of the request body are forwarded * to AWS WAF for inspection by the underlying host service. If you don't need to * inspect more than 8 KB, you can guarantee that you don't allow additional bytes * in by combining a statement that inspects the body of the web request, such as * ByteMatchStatement or RegexPatternSetReferenceStatement, with a * SizeConstraintStatement that enforces an 8 KB size limit on the body of * the request. AWS WAF doesn't support inspecting the entire contents of web * requests whose bodies exceed the 8 KB limit.

*/ inline bool BodyHasBeenSet() const { return m_bodyHasBeenSet; } /** *

Inspect the request body, which immediately follows the request headers. This * is 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.

*

Note that only the first 8 KB (8192 bytes) of the request body are forwarded * to AWS WAF for inspection by the underlying host service. If you don't need to * inspect more than 8 KB, you can guarantee that you don't allow additional bytes * in by combining a statement that inspects the body of the web request, such as * ByteMatchStatement or RegexPatternSetReferenceStatement, with a * SizeConstraintStatement that enforces an 8 KB size limit on the body of * the request. AWS WAF doesn't support inspecting the entire contents of web * requests whose bodies exceed the 8 KB limit.

*/ inline void SetBody(const Body& value) { m_bodyHasBeenSet = true; m_body = value; } /** *

Inspect the request body, which immediately follows the request headers. This * is 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.

*

Note that only the first 8 KB (8192 bytes) of the request body are forwarded * to AWS WAF for inspection by the underlying host service. If you don't need to * inspect more than 8 KB, you can guarantee that you don't allow additional bytes * in by combining a statement that inspects the body of the web request, such as * ByteMatchStatement or RegexPatternSetReferenceStatement, with a * SizeConstraintStatement that enforces an 8 KB size limit on the body of * the request. AWS WAF doesn't support inspecting the entire contents of web * requests whose bodies exceed the 8 KB limit.

*/ inline void SetBody(Body&& value) { m_bodyHasBeenSet = true; m_body = std::move(value); } /** *

Inspect the request body, which immediately follows the request headers. This * is 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.

*

Note that only the first 8 KB (8192 bytes) of the request body are forwarded * to AWS WAF for inspection by the underlying host service. If you don't need to * inspect more than 8 KB, you can guarantee that you don't allow additional bytes * in by combining a statement that inspects the body of the web request, such as * ByteMatchStatement or RegexPatternSetReferenceStatement, with a * SizeConstraintStatement that enforces an 8 KB size limit on the body of * the request. AWS WAF doesn't support inspecting the entire contents of web * requests whose bodies exceed the 8 KB limit.

*/ inline FieldToMatch& WithBody(const Body& value) { SetBody(value); return *this;} /** *

Inspect the request body, which immediately follows the request headers. This * is 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.

*

Note that only the first 8 KB (8192 bytes) of the request body are forwarded * to AWS WAF for inspection by the underlying host service. If you don't need to * inspect more than 8 KB, you can guarantee that you don't allow additional bytes * in by combining a statement that inspects the body of the web request, such as * ByteMatchStatement or RegexPatternSetReferenceStatement, with a * SizeConstraintStatement that enforces an 8 KB size limit on the body of * the request. AWS WAF doesn't support inspecting the entire contents of web * requests whose bodies exceed the 8 KB limit.

*/ inline FieldToMatch& WithBody(Body&& value) { SetBody(std::move(value)); return *this;} /** *

Inspect the HTTP method. The method indicates the type of operation that the * request is asking the origin to perform.

*/ inline const Method& GetMethod() const{ return m_method; } /** *

Inspect the HTTP method. The method indicates the type of operation that the * request is asking the origin to perform.

*/ inline bool MethodHasBeenSet() const { return m_methodHasBeenSet; } /** *

Inspect the HTTP method. The method indicates the type of operation that the * request is asking the origin to perform.

*/ inline void SetMethod(const Method& value) { m_methodHasBeenSet = true; m_method = value; } /** *

Inspect the HTTP method. The method indicates the type of operation that the * request is asking the origin to perform.

*/ inline void SetMethod(Method&& value) { m_methodHasBeenSet = true; m_method = std::move(value); } /** *

Inspect the HTTP method. The method indicates the type of operation that the * request is asking the origin to perform.

*/ inline FieldToMatch& WithMethod(const Method& value) { SetMethod(value); return *this;} /** *

Inspect the HTTP method. The method indicates the type of operation that the * request is asking the origin to perform.

*/ inline FieldToMatch& WithMethod(Method&& value) { SetMethod(std::move(value)); return *this;} private: SingleHeader m_singleHeader; bool m_singleHeaderHasBeenSet; SingleQueryArgument m_singleQueryArgument; bool m_singleQueryArgumentHasBeenSet; AllQueryArguments m_allQueryArguments; bool m_allQueryArgumentsHasBeenSet; UriPath m_uriPath; bool m_uriPathHasBeenSet; QueryString m_queryString; bool m_queryStringHasBeenSet; Body m_body; bool m_bodyHasBeenSet; Method m_method; bool m_methodHasBeenSet; }; } // namespace Model } // namespace WAFV2 } // namespace Aws