{-# 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.ResponseHeadersPolicyConfig
-- 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.ResponseHeadersPolicyConfig where

import Amazonka.CloudFront.Types.ResponseHeadersPolicyCorsConfig
import Amazonka.CloudFront.Types.ResponseHeadersPolicyCustomHeadersConfig
import Amazonka.CloudFront.Types.ResponseHeadersPolicyRemoveHeadersConfig
import Amazonka.CloudFront.Types.ResponseHeadersPolicySecurityHeadersConfig
import Amazonka.CloudFront.Types.ResponseHeadersPolicyServerTimingHeadersConfig
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

-- | A response headers policy configuration.
--
-- A response headers policy configuration contains metadata about the
-- response headers policy, and configurations for sets of HTTP response
-- headers.
--
-- /See:/ 'newResponseHeadersPolicyConfig' smart constructor.
data ResponseHeadersPolicyConfig = ResponseHeadersPolicyConfig'
  { -- | A comment to describe the response headers policy.
    --
    -- The comment cannot be longer than 128 characters.
    ResponseHeadersPolicyConfig -> Maybe Text
comment :: Prelude.Maybe Prelude.Text,
    -- | A configuration for a set of HTTP response headers that are used for
    -- cross-origin resource sharing (CORS).
    ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCorsConfig
corsConfig :: Prelude.Maybe ResponseHeadersPolicyCorsConfig,
    -- | A configuration for a set of custom HTTP response headers.
    ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCustomHeadersConfig
customHeadersConfig :: Prelude.Maybe ResponseHeadersPolicyCustomHeadersConfig,
    -- | A configuration for a set of HTTP headers to remove from the HTTP
    -- response.
    ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyRemoveHeadersConfig
removeHeadersConfig :: Prelude.Maybe ResponseHeadersPolicyRemoveHeadersConfig,
    -- | A configuration for a set of security-related HTTP response headers.
    ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicySecurityHeadersConfig
securityHeadersConfig :: Prelude.Maybe ResponseHeadersPolicySecurityHeadersConfig,
    -- | A configuration for enabling the @Server-Timing@ header in HTTP
    -- responses sent from CloudFront.
    ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyServerTimingHeadersConfig
serverTimingHeadersConfig :: Prelude.Maybe ResponseHeadersPolicyServerTimingHeadersConfig,
    -- | A name to identify the response headers policy.
    --
    -- The name must be unique for response headers policies in this Amazon Web
    -- Services account.
    ResponseHeadersPolicyConfig -> Text
name :: Prelude.Text
  }
  deriving (ResponseHeadersPolicyConfig -> ResponseHeadersPolicyConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ResponseHeadersPolicyConfig -> ResponseHeadersPolicyConfig -> Bool
$c/= :: ResponseHeadersPolicyConfig -> ResponseHeadersPolicyConfig -> Bool
== :: ResponseHeadersPolicyConfig -> ResponseHeadersPolicyConfig -> Bool
$c== :: ResponseHeadersPolicyConfig -> ResponseHeadersPolicyConfig -> Bool
Prelude.Eq, ReadPrec [ResponseHeadersPolicyConfig]
ReadPrec ResponseHeadersPolicyConfig
Int -> ReadS ResponseHeadersPolicyConfig
ReadS [ResponseHeadersPolicyConfig]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ResponseHeadersPolicyConfig]
$creadListPrec :: ReadPrec [ResponseHeadersPolicyConfig]
readPrec :: ReadPrec ResponseHeadersPolicyConfig
$creadPrec :: ReadPrec ResponseHeadersPolicyConfig
readList :: ReadS [ResponseHeadersPolicyConfig]
$creadList :: ReadS [ResponseHeadersPolicyConfig]
readsPrec :: Int -> ReadS ResponseHeadersPolicyConfig
$creadsPrec :: Int -> ReadS ResponseHeadersPolicyConfig
Prelude.Read, Int -> ResponseHeadersPolicyConfig -> ShowS
[ResponseHeadersPolicyConfig] -> ShowS
ResponseHeadersPolicyConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ResponseHeadersPolicyConfig] -> ShowS
$cshowList :: [ResponseHeadersPolicyConfig] -> ShowS
show :: ResponseHeadersPolicyConfig -> String
$cshow :: ResponseHeadersPolicyConfig -> String
showsPrec :: Int -> ResponseHeadersPolicyConfig -> ShowS
$cshowsPrec :: Int -> ResponseHeadersPolicyConfig -> ShowS
Prelude.Show, forall x.
Rep ResponseHeadersPolicyConfig x -> ResponseHeadersPolicyConfig
forall x.
ResponseHeadersPolicyConfig -> Rep ResponseHeadersPolicyConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ResponseHeadersPolicyConfig x -> ResponseHeadersPolicyConfig
$cfrom :: forall x.
ResponseHeadersPolicyConfig -> Rep ResponseHeadersPolicyConfig x
Prelude.Generic)

-- |
-- Create a value of 'ResponseHeadersPolicyConfig' 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', 'responseHeadersPolicyConfig_comment' - A comment to describe the response headers policy.
--
-- The comment cannot be longer than 128 characters.
--
-- 'corsConfig', 'responseHeadersPolicyConfig_corsConfig' - A configuration for a set of HTTP response headers that are used for
-- cross-origin resource sharing (CORS).
--
-- 'customHeadersConfig', 'responseHeadersPolicyConfig_customHeadersConfig' - A configuration for a set of custom HTTP response headers.
--
-- 'removeHeadersConfig', 'responseHeadersPolicyConfig_removeHeadersConfig' - A configuration for a set of HTTP headers to remove from the HTTP
-- response.
--
-- 'securityHeadersConfig', 'responseHeadersPolicyConfig_securityHeadersConfig' - A configuration for a set of security-related HTTP response headers.
--
-- 'serverTimingHeadersConfig', 'responseHeadersPolicyConfig_serverTimingHeadersConfig' - A configuration for enabling the @Server-Timing@ header in HTTP
-- responses sent from CloudFront.
--
-- 'name', 'responseHeadersPolicyConfig_name' - A name to identify the response headers policy.
--
-- The name must be unique for response headers policies in this Amazon Web
-- Services account.
newResponseHeadersPolicyConfig ::
  -- | 'name'
  Prelude.Text ->
  ResponseHeadersPolicyConfig
newResponseHeadersPolicyConfig :: Text -> ResponseHeadersPolicyConfig
newResponseHeadersPolicyConfig Text
pName_ =
  ResponseHeadersPolicyConfig'
    { $sel:comment:ResponseHeadersPolicyConfig' :: Maybe Text
comment =
        forall a. Maybe a
Prelude.Nothing,
      $sel:corsConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicyCorsConfig
corsConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:customHeadersConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicyCustomHeadersConfig
customHeadersConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:removeHeadersConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicyRemoveHeadersConfig
removeHeadersConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:securityHeadersConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicySecurityHeadersConfig
securityHeadersConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:serverTimingHeadersConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicyServerTimingHeadersConfig
serverTimingHeadersConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:name:ResponseHeadersPolicyConfig' :: Text
name = Text
pName_
    }

-- | A comment to describe the response headers policy.
--
-- The comment cannot be longer than 128 characters.
responseHeadersPolicyConfig_comment :: Lens.Lens' ResponseHeadersPolicyConfig (Prelude.Maybe Prelude.Text)
responseHeadersPolicyConfig_comment :: Lens' ResponseHeadersPolicyConfig (Maybe Text)
responseHeadersPolicyConfig_comment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicyConfig' {Maybe Text
comment :: Maybe Text
$sel:comment:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig -> Maybe Text
comment} -> Maybe Text
comment) (\s :: ResponseHeadersPolicyConfig
s@ResponseHeadersPolicyConfig' {} Maybe Text
a -> ResponseHeadersPolicyConfig
s {$sel:comment:ResponseHeadersPolicyConfig' :: Maybe Text
comment = Maybe Text
a} :: ResponseHeadersPolicyConfig)

-- | A configuration for a set of HTTP response headers that are used for
-- cross-origin resource sharing (CORS).
responseHeadersPolicyConfig_corsConfig :: Lens.Lens' ResponseHeadersPolicyConfig (Prelude.Maybe ResponseHeadersPolicyCorsConfig)
responseHeadersPolicyConfig_corsConfig :: Lens'
  ResponseHeadersPolicyConfig (Maybe ResponseHeadersPolicyCorsConfig)
responseHeadersPolicyConfig_corsConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicyConfig' {Maybe ResponseHeadersPolicyCorsConfig
corsConfig :: Maybe ResponseHeadersPolicyCorsConfig
$sel:corsConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCorsConfig
corsConfig} -> Maybe ResponseHeadersPolicyCorsConfig
corsConfig) (\s :: ResponseHeadersPolicyConfig
s@ResponseHeadersPolicyConfig' {} Maybe ResponseHeadersPolicyCorsConfig
a -> ResponseHeadersPolicyConfig
s {$sel:corsConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicyCorsConfig
corsConfig = Maybe ResponseHeadersPolicyCorsConfig
a} :: ResponseHeadersPolicyConfig)

-- | A configuration for a set of custom HTTP response headers.
responseHeadersPolicyConfig_customHeadersConfig :: Lens.Lens' ResponseHeadersPolicyConfig (Prelude.Maybe ResponseHeadersPolicyCustomHeadersConfig)
responseHeadersPolicyConfig_customHeadersConfig :: Lens'
  ResponseHeadersPolicyConfig
  (Maybe ResponseHeadersPolicyCustomHeadersConfig)
responseHeadersPolicyConfig_customHeadersConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicyConfig' {Maybe ResponseHeadersPolicyCustomHeadersConfig
customHeadersConfig :: Maybe ResponseHeadersPolicyCustomHeadersConfig
$sel:customHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCustomHeadersConfig
customHeadersConfig} -> Maybe ResponseHeadersPolicyCustomHeadersConfig
customHeadersConfig) (\s :: ResponseHeadersPolicyConfig
s@ResponseHeadersPolicyConfig' {} Maybe ResponseHeadersPolicyCustomHeadersConfig
a -> ResponseHeadersPolicyConfig
s {$sel:customHeadersConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicyCustomHeadersConfig
customHeadersConfig = Maybe ResponseHeadersPolicyCustomHeadersConfig
a} :: ResponseHeadersPolicyConfig)

-- | A configuration for a set of HTTP headers to remove from the HTTP
-- response.
responseHeadersPolicyConfig_removeHeadersConfig :: Lens.Lens' ResponseHeadersPolicyConfig (Prelude.Maybe ResponseHeadersPolicyRemoveHeadersConfig)
responseHeadersPolicyConfig_removeHeadersConfig :: Lens'
  ResponseHeadersPolicyConfig
  (Maybe ResponseHeadersPolicyRemoveHeadersConfig)
responseHeadersPolicyConfig_removeHeadersConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicyConfig' {Maybe ResponseHeadersPolicyRemoveHeadersConfig
removeHeadersConfig :: Maybe ResponseHeadersPolicyRemoveHeadersConfig
$sel:removeHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyRemoveHeadersConfig
removeHeadersConfig} -> Maybe ResponseHeadersPolicyRemoveHeadersConfig
removeHeadersConfig) (\s :: ResponseHeadersPolicyConfig
s@ResponseHeadersPolicyConfig' {} Maybe ResponseHeadersPolicyRemoveHeadersConfig
a -> ResponseHeadersPolicyConfig
s {$sel:removeHeadersConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicyRemoveHeadersConfig
removeHeadersConfig = Maybe ResponseHeadersPolicyRemoveHeadersConfig
a} :: ResponseHeadersPolicyConfig)

-- | A configuration for a set of security-related HTTP response headers.
responseHeadersPolicyConfig_securityHeadersConfig :: Lens.Lens' ResponseHeadersPolicyConfig (Prelude.Maybe ResponseHeadersPolicySecurityHeadersConfig)
responseHeadersPolicyConfig_securityHeadersConfig :: Lens'
  ResponseHeadersPolicyConfig
  (Maybe ResponseHeadersPolicySecurityHeadersConfig)
responseHeadersPolicyConfig_securityHeadersConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicyConfig' {Maybe ResponseHeadersPolicySecurityHeadersConfig
securityHeadersConfig :: Maybe ResponseHeadersPolicySecurityHeadersConfig
$sel:securityHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicySecurityHeadersConfig
securityHeadersConfig} -> Maybe ResponseHeadersPolicySecurityHeadersConfig
securityHeadersConfig) (\s :: ResponseHeadersPolicyConfig
s@ResponseHeadersPolicyConfig' {} Maybe ResponseHeadersPolicySecurityHeadersConfig
a -> ResponseHeadersPolicyConfig
s {$sel:securityHeadersConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicySecurityHeadersConfig
securityHeadersConfig = Maybe ResponseHeadersPolicySecurityHeadersConfig
a} :: ResponseHeadersPolicyConfig)

-- | A configuration for enabling the @Server-Timing@ header in HTTP
-- responses sent from CloudFront.
responseHeadersPolicyConfig_serverTimingHeadersConfig :: Lens.Lens' ResponseHeadersPolicyConfig (Prelude.Maybe ResponseHeadersPolicyServerTimingHeadersConfig)
responseHeadersPolicyConfig_serverTimingHeadersConfig :: Lens'
  ResponseHeadersPolicyConfig
  (Maybe ResponseHeadersPolicyServerTimingHeadersConfig)
responseHeadersPolicyConfig_serverTimingHeadersConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicyConfig' {Maybe ResponseHeadersPolicyServerTimingHeadersConfig
serverTimingHeadersConfig :: Maybe ResponseHeadersPolicyServerTimingHeadersConfig
$sel:serverTimingHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyServerTimingHeadersConfig
serverTimingHeadersConfig} -> Maybe ResponseHeadersPolicyServerTimingHeadersConfig
serverTimingHeadersConfig) (\s :: ResponseHeadersPolicyConfig
s@ResponseHeadersPolicyConfig' {} Maybe ResponseHeadersPolicyServerTimingHeadersConfig
a -> ResponseHeadersPolicyConfig
s {$sel:serverTimingHeadersConfig:ResponseHeadersPolicyConfig' :: Maybe ResponseHeadersPolicyServerTimingHeadersConfig
serverTimingHeadersConfig = Maybe ResponseHeadersPolicyServerTimingHeadersConfig
a} :: ResponseHeadersPolicyConfig)

-- | A name to identify the response headers policy.
--
-- The name must be unique for response headers policies in this Amazon Web
-- Services account.
responseHeadersPolicyConfig_name :: Lens.Lens' ResponseHeadersPolicyConfig Prelude.Text
responseHeadersPolicyConfig_name :: Lens' ResponseHeadersPolicyConfig Text
responseHeadersPolicyConfig_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicyConfig' {Text
name :: Text
$sel:name:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig -> Text
name} -> Text
name) (\s :: ResponseHeadersPolicyConfig
s@ResponseHeadersPolicyConfig' {} Text
a -> ResponseHeadersPolicyConfig
s {$sel:name:ResponseHeadersPolicyConfig' :: Text
name = Text
a} :: ResponseHeadersPolicyConfig)

instance Data.FromXML ResponseHeadersPolicyConfig where
  parseXML :: [Node] -> Either String ResponseHeadersPolicyConfig
parseXML [Node]
x =
    Maybe Text
-> Maybe ResponseHeadersPolicyCorsConfig
-> Maybe ResponseHeadersPolicyCustomHeadersConfig
-> Maybe ResponseHeadersPolicyRemoveHeadersConfig
-> Maybe ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyServerTimingHeadersConfig
-> Text
-> ResponseHeadersPolicyConfig
ResponseHeadersPolicyConfig'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Comment")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"CorsConfig")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"CustomHeadersConfig")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"RemoveHeadersConfig")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"SecurityHeadersConfig")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ServerTimingHeadersConfig")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String a
Data..@ Text
"Name")

instance Prelude.Hashable ResponseHeadersPolicyConfig where
  hashWithSalt :: Int -> ResponseHeadersPolicyConfig -> Int
hashWithSalt Int
_salt ResponseHeadersPolicyConfig' {Maybe Text
Maybe ResponseHeadersPolicyCorsConfig
Maybe ResponseHeadersPolicyCustomHeadersConfig
Maybe ResponseHeadersPolicyRemoveHeadersConfig
Maybe ResponseHeadersPolicyServerTimingHeadersConfig
Maybe ResponseHeadersPolicySecurityHeadersConfig
Text
name :: Text
serverTimingHeadersConfig :: Maybe ResponseHeadersPolicyServerTimingHeadersConfig
securityHeadersConfig :: Maybe ResponseHeadersPolicySecurityHeadersConfig
removeHeadersConfig :: Maybe ResponseHeadersPolicyRemoveHeadersConfig
customHeadersConfig :: Maybe ResponseHeadersPolicyCustomHeadersConfig
corsConfig :: Maybe ResponseHeadersPolicyCorsConfig
comment :: Maybe Text
$sel:name:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig -> Text
$sel:serverTimingHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyServerTimingHeadersConfig
$sel:securityHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicySecurityHeadersConfig
$sel:removeHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyRemoveHeadersConfig
$sel:customHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCustomHeadersConfig
$sel:corsConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCorsConfig
$sel:comment:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
comment
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyCorsConfig
corsConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyCustomHeadersConfig
customHeadersConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyRemoveHeadersConfig
removeHeadersConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicySecurityHeadersConfig
securityHeadersConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyServerTimingHeadersConfig
serverTimingHeadersConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance Prelude.NFData ResponseHeadersPolicyConfig where
  rnf :: ResponseHeadersPolicyConfig -> ()
rnf ResponseHeadersPolicyConfig' {Maybe Text
Maybe ResponseHeadersPolicyCorsConfig
Maybe ResponseHeadersPolicyCustomHeadersConfig
Maybe ResponseHeadersPolicyRemoveHeadersConfig
Maybe ResponseHeadersPolicyServerTimingHeadersConfig
Maybe ResponseHeadersPolicySecurityHeadersConfig
Text
name :: Text
serverTimingHeadersConfig :: Maybe ResponseHeadersPolicyServerTimingHeadersConfig
securityHeadersConfig :: Maybe ResponseHeadersPolicySecurityHeadersConfig
removeHeadersConfig :: Maybe ResponseHeadersPolicyRemoveHeadersConfig
customHeadersConfig :: Maybe ResponseHeadersPolicyCustomHeadersConfig
corsConfig :: Maybe ResponseHeadersPolicyCorsConfig
comment :: Maybe Text
$sel:name:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig -> Text
$sel:serverTimingHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyServerTimingHeadersConfig
$sel:securityHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicySecurityHeadersConfig
$sel:removeHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyRemoveHeadersConfig
$sel:customHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCustomHeadersConfig
$sel:corsConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCorsConfig
$sel:comment:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
comment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyCorsConfig
corsConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyCustomHeadersConfig
customHeadersConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyRemoveHeadersConfig
removeHeadersConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicySecurityHeadersConfig
securityHeadersConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyServerTimingHeadersConfig
serverTimingHeadersConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name

instance Data.ToXML ResponseHeadersPolicyConfig where
  toXML :: ResponseHeadersPolicyConfig -> XML
toXML ResponseHeadersPolicyConfig' {Maybe Text
Maybe ResponseHeadersPolicyCorsConfig
Maybe ResponseHeadersPolicyCustomHeadersConfig
Maybe ResponseHeadersPolicyRemoveHeadersConfig
Maybe ResponseHeadersPolicyServerTimingHeadersConfig
Maybe ResponseHeadersPolicySecurityHeadersConfig
Text
name :: Text
serverTimingHeadersConfig :: Maybe ResponseHeadersPolicyServerTimingHeadersConfig
securityHeadersConfig :: Maybe ResponseHeadersPolicySecurityHeadersConfig
removeHeadersConfig :: Maybe ResponseHeadersPolicyRemoveHeadersConfig
customHeadersConfig :: Maybe ResponseHeadersPolicyCustomHeadersConfig
corsConfig :: Maybe ResponseHeadersPolicyCorsConfig
comment :: Maybe Text
$sel:name:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig -> Text
$sel:serverTimingHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyServerTimingHeadersConfig
$sel:securityHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicySecurityHeadersConfig
$sel:removeHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyRemoveHeadersConfig
$sel:customHeadersConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCustomHeadersConfig
$sel:corsConfig:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig
-> Maybe ResponseHeadersPolicyCorsConfig
$sel:comment:ResponseHeadersPolicyConfig' :: ResponseHeadersPolicyConfig -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ Name
"Comment" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe Text
comment,
        Name
"CorsConfig" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyCorsConfig
corsConfig,
        Name
"CustomHeadersConfig" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyCustomHeadersConfig
customHeadersConfig,
        Name
"RemoveHeadersConfig" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyRemoveHeadersConfig
removeHeadersConfig,
        Name
"SecurityHeadersConfig"
          forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicySecurityHeadersConfig
securityHeadersConfig,
        Name
"ServerTimingHeadersConfig"
          forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyServerTimingHeadersConfig
serverTimingHeadersConfig,
        Name
"Name" forall a. ToXML a => Name -> a -> XML
Data.@= Text
name
      ]