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

import Amazonka.CloudFront.Types.ResponseHeadersPolicyContentSecurityPolicy
import Amazonka.CloudFront.Types.ResponseHeadersPolicyContentTypeOptions
import Amazonka.CloudFront.Types.ResponseHeadersPolicyFrameOptions
import Amazonka.CloudFront.Types.ResponseHeadersPolicyReferrerPolicy
import Amazonka.CloudFront.Types.ResponseHeadersPolicyStrictTransportSecurity
import Amazonka.CloudFront.Types.ResponseHeadersPolicyXSSProtection
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 configuration for a set of security-related HTTP response headers.
-- CloudFront adds these headers to HTTP responses that it sends for
-- requests that match a cache behavior associated with this response
-- headers policy.
--
-- /See:/ 'newResponseHeadersPolicySecurityHeadersConfig' smart constructor.
data ResponseHeadersPolicySecurityHeadersConfig = ResponseHeadersPolicySecurityHeadersConfig'
  { -- | The policy directives and their values that CloudFront includes as
    -- values for the @Content-Security-Policy@ HTTP response header.
    --
    -- For more information about the @Content-Security-Policy@ HTTP response
    -- header, see
    -- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy Content-Security-Policy>
    -- in the MDN Web Docs.
    ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentSecurityPolicy
contentSecurityPolicy :: Prelude.Maybe ResponseHeadersPolicyContentSecurityPolicy,
    -- | Determines whether CloudFront includes the @X-Content-Type-Options@ HTTP
    -- response header with its value set to @nosniff@.
    --
    -- For more information about the @X-Content-Type-Options@ HTTP response
    -- header, see
    -- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options X-Content-Type-Options>
    -- in the MDN Web Docs.
    ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentTypeOptions
contentTypeOptions :: Prelude.Maybe ResponseHeadersPolicyContentTypeOptions,
    -- | Determines whether CloudFront includes the @X-Frame-Options@ HTTP
    -- response header and the header\'s value.
    --
    -- For more information about the @X-Frame-Options@ HTTP response header,
    -- see
    -- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options X-Frame-Options>
    -- in the MDN Web Docs.
    ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyFrameOptions
frameOptions :: Prelude.Maybe ResponseHeadersPolicyFrameOptions,
    -- | Determines whether CloudFront includes the @Referrer-Policy@ HTTP
    -- response header and the header\'s value.
    --
    -- For more information about the @Referrer-Policy@ HTTP response header,
    -- see
    -- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy Referrer-Policy>
    -- in the MDN Web Docs.
    ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyReferrerPolicy
referrerPolicy :: Prelude.Maybe ResponseHeadersPolicyReferrerPolicy,
    -- | Determines whether CloudFront includes the @Strict-Transport-Security@
    -- HTTP response header and the header\'s value.
    --
    -- For more information about the @Strict-Transport-Security@ HTTP response
    -- header, see
    -- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security Strict-Transport-Security>
    -- in the MDN Web Docs.
    ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyStrictTransportSecurity
strictTransportSecurity :: Prelude.Maybe ResponseHeadersPolicyStrictTransportSecurity,
    -- | Determines whether CloudFront includes the @X-XSS-Protection@ HTTP
    -- response header and the header\'s value.
    --
    -- For more information about the @X-XSS-Protection@ HTTP response header,
    -- see
    -- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection X-XSS-Protection>
    -- in the MDN Web Docs.
    ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyXSSProtection
xSSProtection :: Prelude.Maybe ResponseHeadersPolicyXSSProtection
  }
  deriving (ResponseHeadersPolicySecurityHeadersConfig
-> ResponseHeadersPolicySecurityHeadersConfig -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ResponseHeadersPolicySecurityHeadersConfig
-> ResponseHeadersPolicySecurityHeadersConfig -> Bool
$c/= :: ResponseHeadersPolicySecurityHeadersConfig
-> ResponseHeadersPolicySecurityHeadersConfig -> Bool
== :: ResponseHeadersPolicySecurityHeadersConfig
-> ResponseHeadersPolicySecurityHeadersConfig -> Bool
$c== :: ResponseHeadersPolicySecurityHeadersConfig
-> ResponseHeadersPolicySecurityHeadersConfig -> Bool
Prelude.Eq, ReadPrec [ResponseHeadersPolicySecurityHeadersConfig]
ReadPrec ResponseHeadersPolicySecurityHeadersConfig
Int -> ReadS ResponseHeadersPolicySecurityHeadersConfig
ReadS [ResponseHeadersPolicySecurityHeadersConfig]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ResponseHeadersPolicySecurityHeadersConfig]
$creadListPrec :: ReadPrec [ResponseHeadersPolicySecurityHeadersConfig]
readPrec :: ReadPrec ResponseHeadersPolicySecurityHeadersConfig
$creadPrec :: ReadPrec ResponseHeadersPolicySecurityHeadersConfig
readList :: ReadS [ResponseHeadersPolicySecurityHeadersConfig]
$creadList :: ReadS [ResponseHeadersPolicySecurityHeadersConfig]
readsPrec :: Int -> ReadS ResponseHeadersPolicySecurityHeadersConfig
$creadsPrec :: Int -> ReadS ResponseHeadersPolicySecurityHeadersConfig
Prelude.Read, Int -> ResponseHeadersPolicySecurityHeadersConfig -> ShowS
[ResponseHeadersPolicySecurityHeadersConfig] -> ShowS
ResponseHeadersPolicySecurityHeadersConfig -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ResponseHeadersPolicySecurityHeadersConfig] -> ShowS
$cshowList :: [ResponseHeadersPolicySecurityHeadersConfig] -> ShowS
show :: ResponseHeadersPolicySecurityHeadersConfig -> String
$cshow :: ResponseHeadersPolicySecurityHeadersConfig -> String
showsPrec :: Int -> ResponseHeadersPolicySecurityHeadersConfig -> ShowS
$cshowsPrec :: Int -> ResponseHeadersPolicySecurityHeadersConfig -> ShowS
Prelude.Show, forall x.
Rep ResponseHeadersPolicySecurityHeadersConfig x
-> ResponseHeadersPolicySecurityHeadersConfig
forall x.
ResponseHeadersPolicySecurityHeadersConfig
-> Rep ResponseHeadersPolicySecurityHeadersConfig x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ResponseHeadersPolicySecurityHeadersConfig x
-> ResponseHeadersPolicySecurityHeadersConfig
$cfrom :: forall x.
ResponseHeadersPolicySecurityHeadersConfig
-> Rep ResponseHeadersPolicySecurityHeadersConfig x
Prelude.Generic)

-- |
-- Create a value of 'ResponseHeadersPolicySecurityHeadersConfig' 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:
--
-- 'contentSecurityPolicy', 'responseHeadersPolicySecurityHeadersConfig_contentSecurityPolicy' - The policy directives and their values that CloudFront includes as
-- values for the @Content-Security-Policy@ HTTP response header.
--
-- For more information about the @Content-Security-Policy@ HTTP response
-- header, see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy Content-Security-Policy>
-- in the MDN Web Docs.
--
-- 'contentTypeOptions', 'responseHeadersPolicySecurityHeadersConfig_contentTypeOptions' - Determines whether CloudFront includes the @X-Content-Type-Options@ HTTP
-- response header with its value set to @nosniff@.
--
-- For more information about the @X-Content-Type-Options@ HTTP response
-- header, see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options X-Content-Type-Options>
-- in the MDN Web Docs.
--
-- 'frameOptions', 'responseHeadersPolicySecurityHeadersConfig_frameOptions' - Determines whether CloudFront includes the @X-Frame-Options@ HTTP
-- response header and the header\'s value.
--
-- For more information about the @X-Frame-Options@ HTTP response header,
-- see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options X-Frame-Options>
-- in the MDN Web Docs.
--
-- 'referrerPolicy', 'responseHeadersPolicySecurityHeadersConfig_referrerPolicy' - Determines whether CloudFront includes the @Referrer-Policy@ HTTP
-- response header and the header\'s value.
--
-- For more information about the @Referrer-Policy@ HTTP response header,
-- see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy Referrer-Policy>
-- in the MDN Web Docs.
--
-- 'strictTransportSecurity', 'responseHeadersPolicySecurityHeadersConfig_strictTransportSecurity' - Determines whether CloudFront includes the @Strict-Transport-Security@
-- HTTP response header and the header\'s value.
--
-- For more information about the @Strict-Transport-Security@ HTTP response
-- header, see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security Strict-Transport-Security>
-- in the MDN Web Docs.
--
-- 'xSSProtection', 'responseHeadersPolicySecurityHeadersConfig_xSSProtection' - Determines whether CloudFront includes the @X-XSS-Protection@ HTTP
-- response header and the header\'s value.
--
-- For more information about the @X-XSS-Protection@ HTTP response header,
-- see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection X-XSS-Protection>
-- in the MDN Web Docs.
newResponseHeadersPolicySecurityHeadersConfig ::
  ResponseHeadersPolicySecurityHeadersConfig
newResponseHeadersPolicySecurityHeadersConfig :: ResponseHeadersPolicySecurityHeadersConfig
newResponseHeadersPolicySecurityHeadersConfig =
  ResponseHeadersPolicySecurityHeadersConfig'
    { $sel:contentSecurityPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyContentSecurityPolicy
contentSecurityPolicy =
        forall a. Maybe a
Prelude.Nothing,
      $sel:contentTypeOptions:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyContentTypeOptions
contentTypeOptions =
        forall a. Maybe a
Prelude.Nothing,
      $sel:frameOptions:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyFrameOptions
frameOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:referrerPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyReferrerPolicy
referrerPolicy =
        forall a. Maybe a
Prelude.Nothing,
      $sel:strictTransportSecurity:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyStrictTransportSecurity
strictTransportSecurity =
        forall a. Maybe a
Prelude.Nothing,
      $sel:xSSProtection:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyXSSProtection
xSSProtection = forall a. Maybe a
Prelude.Nothing
    }

-- | The policy directives and their values that CloudFront includes as
-- values for the @Content-Security-Policy@ HTTP response header.
--
-- For more information about the @Content-Security-Policy@ HTTP response
-- header, see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy Content-Security-Policy>
-- in the MDN Web Docs.
responseHeadersPolicySecurityHeadersConfig_contentSecurityPolicy :: Lens.Lens' ResponseHeadersPolicySecurityHeadersConfig (Prelude.Maybe ResponseHeadersPolicyContentSecurityPolicy)
responseHeadersPolicySecurityHeadersConfig_contentSecurityPolicy :: Lens'
  ResponseHeadersPolicySecurityHeadersConfig
  (Maybe ResponseHeadersPolicyContentSecurityPolicy)
responseHeadersPolicySecurityHeadersConfig_contentSecurityPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicySecurityHeadersConfig' {Maybe ResponseHeadersPolicyContentSecurityPolicy
contentSecurityPolicy :: Maybe ResponseHeadersPolicyContentSecurityPolicy
$sel:contentSecurityPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentSecurityPolicy
contentSecurityPolicy} -> Maybe ResponseHeadersPolicyContentSecurityPolicy
contentSecurityPolicy) (\s :: ResponseHeadersPolicySecurityHeadersConfig
s@ResponseHeadersPolicySecurityHeadersConfig' {} Maybe ResponseHeadersPolicyContentSecurityPolicy
a -> ResponseHeadersPolicySecurityHeadersConfig
s {$sel:contentSecurityPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyContentSecurityPolicy
contentSecurityPolicy = Maybe ResponseHeadersPolicyContentSecurityPolicy
a} :: ResponseHeadersPolicySecurityHeadersConfig)

-- | Determines whether CloudFront includes the @X-Content-Type-Options@ HTTP
-- response header with its value set to @nosniff@.
--
-- For more information about the @X-Content-Type-Options@ HTTP response
-- header, see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options X-Content-Type-Options>
-- in the MDN Web Docs.
responseHeadersPolicySecurityHeadersConfig_contentTypeOptions :: Lens.Lens' ResponseHeadersPolicySecurityHeadersConfig (Prelude.Maybe ResponseHeadersPolicyContentTypeOptions)
responseHeadersPolicySecurityHeadersConfig_contentTypeOptions :: Lens'
  ResponseHeadersPolicySecurityHeadersConfig
  (Maybe ResponseHeadersPolicyContentTypeOptions)
responseHeadersPolicySecurityHeadersConfig_contentTypeOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicySecurityHeadersConfig' {Maybe ResponseHeadersPolicyContentTypeOptions
contentTypeOptions :: Maybe ResponseHeadersPolicyContentTypeOptions
$sel:contentTypeOptions:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentTypeOptions
contentTypeOptions} -> Maybe ResponseHeadersPolicyContentTypeOptions
contentTypeOptions) (\s :: ResponseHeadersPolicySecurityHeadersConfig
s@ResponseHeadersPolicySecurityHeadersConfig' {} Maybe ResponseHeadersPolicyContentTypeOptions
a -> ResponseHeadersPolicySecurityHeadersConfig
s {$sel:contentTypeOptions:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyContentTypeOptions
contentTypeOptions = Maybe ResponseHeadersPolicyContentTypeOptions
a} :: ResponseHeadersPolicySecurityHeadersConfig)

-- | Determines whether CloudFront includes the @X-Frame-Options@ HTTP
-- response header and the header\'s value.
--
-- For more information about the @X-Frame-Options@ HTTP response header,
-- see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options X-Frame-Options>
-- in the MDN Web Docs.
responseHeadersPolicySecurityHeadersConfig_frameOptions :: Lens.Lens' ResponseHeadersPolicySecurityHeadersConfig (Prelude.Maybe ResponseHeadersPolicyFrameOptions)
responseHeadersPolicySecurityHeadersConfig_frameOptions :: Lens'
  ResponseHeadersPolicySecurityHeadersConfig
  (Maybe ResponseHeadersPolicyFrameOptions)
responseHeadersPolicySecurityHeadersConfig_frameOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicySecurityHeadersConfig' {Maybe ResponseHeadersPolicyFrameOptions
frameOptions :: Maybe ResponseHeadersPolicyFrameOptions
$sel:frameOptions:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyFrameOptions
frameOptions} -> Maybe ResponseHeadersPolicyFrameOptions
frameOptions) (\s :: ResponseHeadersPolicySecurityHeadersConfig
s@ResponseHeadersPolicySecurityHeadersConfig' {} Maybe ResponseHeadersPolicyFrameOptions
a -> ResponseHeadersPolicySecurityHeadersConfig
s {$sel:frameOptions:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyFrameOptions
frameOptions = Maybe ResponseHeadersPolicyFrameOptions
a} :: ResponseHeadersPolicySecurityHeadersConfig)

-- | Determines whether CloudFront includes the @Referrer-Policy@ HTTP
-- response header and the header\'s value.
--
-- For more information about the @Referrer-Policy@ HTTP response header,
-- see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy Referrer-Policy>
-- in the MDN Web Docs.
responseHeadersPolicySecurityHeadersConfig_referrerPolicy :: Lens.Lens' ResponseHeadersPolicySecurityHeadersConfig (Prelude.Maybe ResponseHeadersPolicyReferrerPolicy)
responseHeadersPolicySecurityHeadersConfig_referrerPolicy :: Lens'
  ResponseHeadersPolicySecurityHeadersConfig
  (Maybe ResponseHeadersPolicyReferrerPolicy)
responseHeadersPolicySecurityHeadersConfig_referrerPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicySecurityHeadersConfig' {Maybe ResponseHeadersPolicyReferrerPolicy
referrerPolicy :: Maybe ResponseHeadersPolicyReferrerPolicy
$sel:referrerPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyReferrerPolicy
referrerPolicy} -> Maybe ResponseHeadersPolicyReferrerPolicy
referrerPolicy) (\s :: ResponseHeadersPolicySecurityHeadersConfig
s@ResponseHeadersPolicySecurityHeadersConfig' {} Maybe ResponseHeadersPolicyReferrerPolicy
a -> ResponseHeadersPolicySecurityHeadersConfig
s {$sel:referrerPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyReferrerPolicy
referrerPolicy = Maybe ResponseHeadersPolicyReferrerPolicy
a} :: ResponseHeadersPolicySecurityHeadersConfig)

-- | Determines whether CloudFront includes the @Strict-Transport-Security@
-- HTTP response header and the header\'s value.
--
-- For more information about the @Strict-Transport-Security@ HTTP response
-- header, see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security Strict-Transport-Security>
-- in the MDN Web Docs.
responseHeadersPolicySecurityHeadersConfig_strictTransportSecurity :: Lens.Lens' ResponseHeadersPolicySecurityHeadersConfig (Prelude.Maybe ResponseHeadersPolicyStrictTransportSecurity)
responseHeadersPolicySecurityHeadersConfig_strictTransportSecurity :: Lens'
  ResponseHeadersPolicySecurityHeadersConfig
  (Maybe ResponseHeadersPolicyStrictTransportSecurity)
responseHeadersPolicySecurityHeadersConfig_strictTransportSecurity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicySecurityHeadersConfig' {Maybe ResponseHeadersPolicyStrictTransportSecurity
strictTransportSecurity :: Maybe ResponseHeadersPolicyStrictTransportSecurity
$sel:strictTransportSecurity:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyStrictTransportSecurity
strictTransportSecurity} -> Maybe ResponseHeadersPolicyStrictTransportSecurity
strictTransportSecurity) (\s :: ResponseHeadersPolicySecurityHeadersConfig
s@ResponseHeadersPolicySecurityHeadersConfig' {} Maybe ResponseHeadersPolicyStrictTransportSecurity
a -> ResponseHeadersPolicySecurityHeadersConfig
s {$sel:strictTransportSecurity:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyStrictTransportSecurity
strictTransportSecurity = Maybe ResponseHeadersPolicyStrictTransportSecurity
a} :: ResponseHeadersPolicySecurityHeadersConfig)

-- | Determines whether CloudFront includes the @X-XSS-Protection@ HTTP
-- response header and the header\'s value.
--
-- For more information about the @X-XSS-Protection@ HTTP response header,
-- see
-- <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection X-XSS-Protection>
-- in the MDN Web Docs.
responseHeadersPolicySecurityHeadersConfig_xSSProtection :: Lens.Lens' ResponseHeadersPolicySecurityHeadersConfig (Prelude.Maybe ResponseHeadersPolicyXSSProtection)
responseHeadersPolicySecurityHeadersConfig_xSSProtection :: Lens'
  ResponseHeadersPolicySecurityHeadersConfig
  (Maybe ResponseHeadersPolicyXSSProtection)
responseHeadersPolicySecurityHeadersConfig_xSSProtection = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResponseHeadersPolicySecurityHeadersConfig' {Maybe ResponseHeadersPolicyXSSProtection
xSSProtection :: Maybe ResponseHeadersPolicyXSSProtection
$sel:xSSProtection:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyXSSProtection
xSSProtection} -> Maybe ResponseHeadersPolicyXSSProtection
xSSProtection) (\s :: ResponseHeadersPolicySecurityHeadersConfig
s@ResponseHeadersPolicySecurityHeadersConfig' {} Maybe ResponseHeadersPolicyXSSProtection
a -> ResponseHeadersPolicySecurityHeadersConfig
s {$sel:xSSProtection:ResponseHeadersPolicySecurityHeadersConfig' :: Maybe ResponseHeadersPolicyXSSProtection
xSSProtection = Maybe ResponseHeadersPolicyXSSProtection
a} :: ResponseHeadersPolicySecurityHeadersConfig)

instance
  Data.FromXML
    ResponseHeadersPolicySecurityHeadersConfig
  where
  parseXML :: [Node] -> Either String ResponseHeadersPolicySecurityHeadersConfig
parseXML [Node]
x =
    Maybe ResponseHeadersPolicyContentSecurityPolicy
-> Maybe ResponseHeadersPolicyContentTypeOptions
-> Maybe ResponseHeadersPolicyFrameOptions
-> Maybe ResponseHeadersPolicyReferrerPolicy
-> Maybe ResponseHeadersPolicyStrictTransportSecurity
-> Maybe ResponseHeadersPolicyXSSProtection
-> ResponseHeadersPolicySecurityHeadersConfig
ResponseHeadersPolicySecurityHeadersConfig'
      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
"ContentSecurityPolicy")
      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
"ContentTypeOptions")
      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
"FrameOptions")
      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
"ReferrerPolicy")
      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
"StrictTransportSecurity")
      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
"XSSProtection")

instance
  Prelude.Hashable
    ResponseHeadersPolicySecurityHeadersConfig
  where
  hashWithSalt :: Int -> ResponseHeadersPolicySecurityHeadersConfig -> Int
hashWithSalt
    Int
_salt
    ResponseHeadersPolicySecurityHeadersConfig' {Maybe ResponseHeadersPolicyContentSecurityPolicy
Maybe ResponseHeadersPolicyContentTypeOptions
Maybe ResponseHeadersPolicyFrameOptions
Maybe ResponseHeadersPolicyReferrerPolicy
Maybe ResponseHeadersPolicyStrictTransportSecurity
Maybe ResponseHeadersPolicyXSSProtection
xSSProtection :: Maybe ResponseHeadersPolicyXSSProtection
strictTransportSecurity :: Maybe ResponseHeadersPolicyStrictTransportSecurity
referrerPolicy :: Maybe ResponseHeadersPolicyReferrerPolicy
frameOptions :: Maybe ResponseHeadersPolicyFrameOptions
contentTypeOptions :: Maybe ResponseHeadersPolicyContentTypeOptions
contentSecurityPolicy :: Maybe ResponseHeadersPolicyContentSecurityPolicy
$sel:xSSProtection:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyXSSProtection
$sel:strictTransportSecurity:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyStrictTransportSecurity
$sel:referrerPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyReferrerPolicy
$sel:frameOptions:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyFrameOptions
$sel:contentTypeOptions:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentTypeOptions
$sel:contentSecurityPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentSecurityPolicy
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyContentSecurityPolicy
contentSecurityPolicy
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyContentTypeOptions
contentTypeOptions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyFrameOptions
frameOptions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyReferrerPolicy
referrerPolicy
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyStrictTransportSecurity
strictTransportSecurity
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResponseHeadersPolicyXSSProtection
xSSProtection

instance
  Prelude.NFData
    ResponseHeadersPolicySecurityHeadersConfig
  where
  rnf :: ResponseHeadersPolicySecurityHeadersConfig -> ()
rnf ResponseHeadersPolicySecurityHeadersConfig' {Maybe ResponseHeadersPolicyContentSecurityPolicy
Maybe ResponseHeadersPolicyContentTypeOptions
Maybe ResponseHeadersPolicyFrameOptions
Maybe ResponseHeadersPolicyReferrerPolicy
Maybe ResponseHeadersPolicyStrictTransportSecurity
Maybe ResponseHeadersPolicyXSSProtection
xSSProtection :: Maybe ResponseHeadersPolicyXSSProtection
strictTransportSecurity :: Maybe ResponseHeadersPolicyStrictTransportSecurity
referrerPolicy :: Maybe ResponseHeadersPolicyReferrerPolicy
frameOptions :: Maybe ResponseHeadersPolicyFrameOptions
contentTypeOptions :: Maybe ResponseHeadersPolicyContentTypeOptions
contentSecurityPolicy :: Maybe ResponseHeadersPolicyContentSecurityPolicy
$sel:xSSProtection:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyXSSProtection
$sel:strictTransportSecurity:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyStrictTransportSecurity
$sel:referrerPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyReferrerPolicy
$sel:frameOptions:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyFrameOptions
$sel:contentTypeOptions:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentTypeOptions
$sel:contentSecurityPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentSecurityPolicy
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyContentSecurityPolicy
contentSecurityPolicy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyContentTypeOptions
contentTypeOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyFrameOptions
frameOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyReferrerPolicy
referrerPolicy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyStrictTransportSecurity
strictTransportSecurity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResponseHeadersPolicyXSSProtection
xSSProtection

instance
  Data.ToXML
    ResponseHeadersPolicySecurityHeadersConfig
  where
  toXML :: ResponseHeadersPolicySecurityHeadersConfig -> XML
toXML ResponseHeadersPolicySecurityHeadersConfig' {Maybe ResponseHeadersPolicyContentSecurityPolicy
Maybe ResponseHeadersPolicyContentTypeOptions
Maybe ResponseHeadersPolicyFrameOptions
Maybe ResponseHeadersPolicyReferrerPolicy
Maybe ResponseHeadersPolicyStrictTransportSecurity
Maybe ResponseHeadersPolicyXSSProtection
xSSProtection :: Maybe ResponseHeadersPolicyXSSProtection
strictTransportSecurity :: Maybe ResponseHeadersPolicyStrictTransportSecurity
referrerPolicy :: Maybe ResponseHeadersPolicyReferrerPolicy
frameOptions :: Maybe ResponseHeadersPolicyFrameOptions
contentTypeOptions :: Maybe ResponseHeadersPolicyContentTypeOptions
contentSecurityPolicy :: Maybe ResponseHeadersPolicyContentSecurityPolicy
$sel:xSSProtection:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyXSSProtection
$sel:strictTransportSecurity:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyStrictTransportSecurity
$sel:referrerPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyReferrerPolicy
$sel:frameOptions:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyFrameOptions
$sel:contentTypeOptions:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentTypeOptions
$sel:contentSecurityPolicy:ResponseHeadersPolicySecurityHeadersConfig' :: ResponseHeadersPolicySecurityHeadersConfig
-> Maybe ResponseHeadersPolicyContentSecurityPolicy
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ Name
"ContentSecurityPolicy"
          forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyContentSecurityPolicy
contentSecurityPolicy,
        Name
"ContentTypeOptions" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyContentTypeOptions
contentTypeOptions,
        Name
"FrameOptions" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyFrameOptions
frameOptions,
        Name
"ReferrerPolicy" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyReferrerPolicy
referrerPolicy,
        Name
"StrictTransportSecurity"
          forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyStrictTransportSecurity
strictTransportSecurity,
        Name
"XSSProtection" forall a. ToXML a => Name -> a -> XML
Data.@= Maybe ResponseHeadersPolicyXSSProtection
xSSProtection
      ]