amazonka-cloudfront-2.0: gen/Amazonka/CloudFront/Types/OriginRequestPolicyConfig.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.CloudFront.Types.OriginRequestPolicyConfig
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.CloudFront.Types.OriginRequestPolicyConfig where
import Amazonka.CloudFront.Types.OriginRequestPolicyCookiesConfig
import Amazonka.CloudFront.Types.OriginRequestPolicyHeadersConfig
import Amazonka.CloudFront.Types.OriginRequestPolicyQueryStringsConfig
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
-- | An origin request policy configuration.
--
-- This configuration determines the values that CloudFront includes in
-- requests that it sends to the origin. Each request that CloudFront sends
-- to the origin includes the following:
--
-- - The request body and the URL path (without the domain name) from the
-- viewer request.
--
-- - The headers that CloudFront automatically includes in every origin
-- request, including @Host@, @User-Agent@, and @X-Amz-Cf-Id@.
--
-- - All HTTP headers, cookies, and URL query strings that are specified
-- in the cache policy or the origin request policy. These can include
-- items from the viewer request and, in the case of headers,
-- additional ones that are added by CloudFront.
--
-- CloudFront sends a request when it can\'t find an object in its cache
-- that matches the request. If you want to send values to the origin and
-- also include them in the cache key, use @CachePolicy@.
--
-- /See:/ 'newOriginRequestPolicyConfig' smart constructor.
data OriginRequestPolicyConfig = OriginRequestPolicyConfig'
{ -- | A comment to describe the origin request policy. The comment cannot be
-- longer than 128 characters.
comment :: Prelude.Maybe Prelude.Text,
-- | A unique name to identify the origin request policy.
name :: Prelude.Text,
-- | The HTTP headers to include in origin requests. These can include
-- headers from viewer requests and additional headers added by CloudFront.
headersConfig :: OriginRequestPolicyHeadersConfig,
-- | The cookies from viewer requests to include in origin requests.
cookiesConfig :: OriginRequestPolicyCookiesConfig,
-- | The URL query strings from viewer requests to include in origin
-- requests.
queryStringsConfig :: OriginRequestPolicyQueryStringsConfig
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'OriginRequestPolicyConfig' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'comment', 'originRequestPolicyConfig_comment' - A comment to describe the origin request policy. The comment cannot be
-- longer than 128 characters.
--
-- 'name', 'originRequestPolicyConfig_name' - A unique name to identify the origin request policy.
--
-- 'headersConfig', 'originRequestPolicyConfig_headersConfig' - The HTTP headers to include in origin requests. These can include
-- headers from viewer requests and additional headers added by CloudFront.
--
-- 'cookiesConfig', 'originRequestPolicyConfig_cookiesConfig' - The cookies from viewer requests to include in origin requests.
--
-- 'queryStringsConfig', 'originRequestPolicyConfig_queryStringsConfig' - The URL query strings from viewer requests to include in origin
-- requests.
newOriginRequestPolicyConfig ::
-- | 'name'
Prelude.Text ->
-- | 'headersConfig'
OriginRequestPolicyHeadersConfig ->
-- | 'cookiesConfig'
OriginRequestPolicyCookiesConfig ->
-- | 'queryStringsConfig'
OriginRequestPolicyQueryStringsConfig ->
OriginRequestPolicyConfig
newOriginRequestPolicyConfig
pName_
pHeadersConfig_
pCookiesConfig_
pQueryStringsConfig_ =
OriginRequestPolicyConfig'
{ comment =
Prelude.Nothing,
name = pName_,
headersConfig = pHeadersConfig_,
cookiesConfig = pCookiesConfig_,
queryStringsConfig = pQueryStringsConfig_
}
-- | A comment to describe the origin request policy. The comment cannot be
-- longer than 128 characters.
originRequestPolicyConfig_comment :: Lens.Lens' OriginRequestPolicyConfig (Prelude.Maybe Prelude.Text)
originRequestPolicyConfig_comment = Lens.lens (\OriginRequestPolicyConfig' {comment} -> comment) (\s@OriginRequestPolicyConfig' {} a -> s {comment = a} :: OriginRequestPolicyConfig)
-- | A unique name to identify the origin request policy.
originRequestPolicyConfig_name :: Lens.Lens' OriginRequestPolicyConfig Prelude.Text
originRequestPolicyConfig_name = Lens.lens (\OriginRequestPolicyConfig' {name} -> name) (\s@OriginRequestPolicyConfig' {} a -> s {name = a} :: OriginRequestPolicyConfig)
-- | The HTTP headers to include in origin requests. These can include
-- headers from viewer requests and additional headers added by CloudFront.
originRequestPolicyConfig_headersConfig :: Lens.Lens' OriginRequestPolicyConfig OriginRequestPolicyHeadersConfig
originRequestPolicyConfig_headersConfig = Lens.lens (\OriginRequestPolicyConfig' {headersConfig} -> headersConfig) (\s@OriginRequestPolicyConfig' {} a -> s {headersConfig = a} :: OriginRequestPolicyConfig)
-- | The cookies from viewer requests to include in origin requests.
originRequestPolicyConfig_cookiesConfig :: Lens.Lens' OriginRequestPolicyConfig OriginRequestPolicyCookiesConfig
originRequestPolicyConfig_cookiesConfig = Lens.lens (\OriginRequestPolicyConfig' {cookiesConfig} -> cookiesConfig) (\s@OriginRequestPolicyConfig' {} a -> s {cookiesConfig = a} :: OriginRequestPolicyConfig)
-- | The URL query strings from viewer requests to include in origin
-- requests.
originRequestPolicyConfig_queryStringsConfig :: Lens.Lens' OriginRequestPolicyConfig OriginRequestPolicyQueryStringsConfig
originRequestPolicyConfig_queryStringsConfig = Lens.lens (\OriginRequestPolicyConfig' {queryStringsConfig} -> queryStringsConfig) (\s@OriginRequestPolicyConfig' {} a -> s {queryStringsConfig = a} :: OriginRequestPolicyConfig)
instance Data.FromXML OriginRequestPolicyConfig where
parseXML x =
OriginRequestPolicyConfig'
Prelude.<$> (x Data..@? "Comment")
Prelude.<*> (x Data..@ "Name")
Prelude.<*> (x Data..@ "HeadersConfig")
Prelude.<*> (x Data..@ "CookiesConfig")
Prelude.<*> (x Data..@ "QueryStringsConfig")
instance Prelude.Hashable OriginRequestPolicyConfig where
hashWithSalt _salt OriginRequestPolicyConfig' {..} =
_salt
`Prelude.hashWithSalt` comment
`Prelude.hashWithSalt` name
`Prelude.hashWithSalt` headersConfig
`Prelude.hashWithSalt` cookiesConfig
`Prelude.hashWithSalt` queryStringsConfig
instance Prelude.NFData OriginRequestPolicyConfig where
rnf OriginRequestPolicyConfig' {..} =
Prelude.rnf comment
`Prelude.seq` Prelude.rnf name
`Prelude.seq` Prelude.rnf headersConfig
`Prelude.seq` Prelude.rnf cookiesConfig
`Prelude.seq` Prelude.rnf queryStringsConfig
instance Data.ToXML OriginRequestPolicyConfig where
toXML OriginRequestPolicyConfig' {..} =
Prelude.mconcat
[ "Comment" Data.@= comment,
"Name" Data.@= name,
"HeadersConfig" Data.@= headersConfig,
"CookiesConfig" Data.@= cookiesConfig,
"QueryStringsConfig" Data.@= queryStringsConfig
]