packages feed

amazonka-securityhub-2.0: gen/Amazonka/SecurityHub/Types/AwsCloudFrontDistributionOriginCustomOriginConfig.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.SecurityHub.Types.AwsCloudFrontDistributionOriginCustomOriginConfig
-- 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.SecurityHub.Types.AwsCloudFrontDistributionOriginCustomOriginConfig where

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
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionOriginSslProtocols

-- | A custom origin. A custom origin is any origin that is not an Amazon S3
-- bucket, with one exception. An Amazon S3 bucket that is
-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html configured with static website hosting>
-- is a custom origin.
--
-- /See:/ 'newAwsCloudFrontDistributionOriginCustomOriginConfig' smart constructor.
data AwsCloudFrontDistributionOriginCustomOriginConfig = AwsCloudFrontDistributionOriginCustomOriginConfig'
  { -- | The HTTP port that CloudFront uses to connect to the origin.
    httpPort :: Prelude.Maybe Prelude.Int,
    -- | The HTTPS port that CloudFront uses to connect to the origin.
    httpsPort :: Prelude.Maybe Prelude.Int,
    -- | Specifies how long, in seconds, CloudFront persists its connection to
    -- the origin.
    originKeepaliveTimeout :: Prelude.Maybe Prelude.Int,
    -- | Specifies the protocol (HTTP or HTTPS) that CloudFront uses to connect
    -- to the origin.
    originProtocolPolicy :: Prelude.Maybe Prelude.Text,
    -- | Specifies how long, in seconds, CloudFront waits for a response from the
    -- origin.
    originReadTimeout :: Prelude.Maybe Prelude.Int,
    -- | Specifies the minimum SSL\/TLS protocol that CloudFront uses when
    -- connecting to your origin over HTTPS.
    originSslProtocols :: Prelude.Maybe AwsCloudFrontDistributionOriginSslProtocols
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'AwsCloudFrontDistributionOriginCustomOriginConfig' 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:
--
-- 'httpPort', 'awsCloudFrontDistributionOriginCustomOriginConfig_httpPort' - The HTTP port that CloudFront uses to connect to the origin.
--
-- 'httpsPort', 'awsCloudFrontDistributionOriginCustomOriginConfig_httpsPort' - The HTTPS port that CloudFront uses to connect to the origin.
--
-- 'originKeepaliveTimeout', 'awsCloudFrontDistributionOriginCustomOriginConfig_originKeepaliveTimeout' - Specifies how long, in seconds, CloudFront persists its connection to
-- the origin.
--
-- 'originProtocolPolicy', 'awsCloudFrontDistributionOriginCustomOriginConfig_originProtocolPolicy' - Specifies the protocol (HTTP or HTTPS) that CloudFront uses to connect
-- to the origin.
--
-- 'originReadTimeout', 'awsCloudFrontDistributionOriginCustomOriginConfig_originReadTimeout' - Specifies how long, in seconds, CloudFront waits for a response from the
-- origin.
--
-- 'originSslProtocols', 'awsCloudFrontDistributionOriginCustomOriginConfig_originSslProtocols' - Specifies the minimum SSL\/TLS protocol that CloudFront uses when
-- connecting to your origin over HTTPS.
newAwsCloudFrontDistributionOriginCustomOriginConfig ::
  AwsCloudFrontDistributionOriginCustomOriginConfig
newAwsCloudFrontDistributionOriginCustomOriginConfig =
  AwsCloudFrontDistributionOriginCustomOriginConfig'
    { httpPort =
        Prelude.Nothing,
      httpsPort =
        Prelude.Nothing,
      originKeepaliveTimeout =
        Prelude.Nothing,
      originProtocolPolicy =
        Prelude.Nothing,
      originReadTimeout =
        Prelude.Nothing,
      originSslProtocols =
        Prelude.Nothing
    }

-- | The HTTP port that CloudFront uses to connect to the origin.
awsCloudFrontDistributionOriginCustomOriginConfig_httpPort :: Lens.Lens' AwsCloudFrontDistributionOriginCustomOriginConfig (Prelude.Maybe Prelude.Int)
awsCloudFrontDistributionOriginCustomOriginConfig_httpPort = Lens.lens (\AwsCloudFrontDistributionOriginCustomOriginConfig' {httpPort} -> httpPort) (\s@AwsCloudFrontDistributionOriginCustomOriginConfig' {} a -> s {httpPort = a} :: AwsCloudFrontDistributionOriginCustomOriginConfig)

-- | The HTTPS port that CloudFront uses to connect to the origin.
awsCloudFrontDistributionOriginCustomOriginConfig_httpsPort :: Lens.Lens' AwsCloudFrontDistributionOriginCustomOriginConfig (Prelude.Maybe Prelude.Int)
awsCloudFrontDistributionOriginCustomOriginConfig_httpsPort = Lens.lens (\AwsCloudFrontDistributionOriginCustomOriginConfig' {httpsPort} -> httpsPort) (\s@AwsCloudFrontDistributionOriginCustomOriginConfig' {} a -> s {httpsPort = a} :: AwsCloudFrontDistributionOriginCustomOriginConfig)

-- | Specifies how long, in seconds, CloudFront persists its connection to
-- the origin.
awsCloudFrontDistributionOriginCustomOriginConfig_originKeepaliveTimeout :: Lens.Lens' AwsCloudFrontDistributionOriginCustomOriginConfig (Prelude.Maybe Prelude.Int)
awsCloudFrontDistributionOriginCustomOriginConfig_originKeepaliveTimeout = Lens.lens (\AwsCloudFrontDistributionOriginCustomOriginConfig' {originKeepaliveTimeout} -> originKeepaliveTimeout) (\s@AwsCloudFrontDistributionOriginCustomOriginConfig' {} a -> s {originKeepaliveTimeout = a} :: AwsCloudFrontDistributionOriginCustomOriginConfig)

-- | Specifies the protocol (HTTP or HTTPS) that CloudFront uses to connect
-- to the origin.
awsCloudFrontDistributionOriginCustomOriginConfig_originProtocolPolicy :: Lens.Lens' AwsCloudFrontDistributionOriginCustomOriginConfig (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionOriginCustomOriginConfig_originProtocolPolicy = Lens.lens (\AwsCloudFrontDistributionOriginCustomOriginConfig' {originProtocolPolicy} -> originProtocolPolicy) (\s@AwsCloudFrontDistributionOriginCustomOriginConfig' {} a -> s {originProtocolPolicy = a} :: AwsCloudFrontDistributionOriginCustomOriginConfig)

-- | Specifies how long, in seconds, CloudFront waits for a response from the
-- origin.
awsCloudFrontDistributionOriginCustomOriginConfig_originReadTimeout :: Lens.Lens' AwsCloudFrontDistributionOriginCustomOriginConfig (Prelude.Maybe Prelude.Int)
awsCloudFrontDistributionOriginCustomOriginConfig_originReadTimeout = Lens.lens (\AwsCloudFrontDistributionOriginCustomOriginConfig' {originReadTimeout} -> originReadTimeout) (\s@AwsCloudFrontDistributionOriginCustomOriginConfig' {} a -> s {originReadTimeout = a} :: AwsCloudFrontDistributionOriginCustomOriginConfig)

-- | Specifies the minimum SSL\/TLS protocol that CloudFront uses when
-- connecting to your origin over HTTPS.
awsCloudFrontDistributionOriginCustomOriginConfig_originSslProtocols :: Lens.Lens' AwsCloudFrontDistributionOriginCustomOriginConfig (Prelude.Maybe AwsCloudFrontDistributionOriginSslProtocols)
awsCloudFrontDistributionOriginCustomOriginConfig_originSslProtocols = Lens.lens (\AwsCloudFrontDistributionOriginCustomOriginConfig' {originSslProtocols} -> originSslProtocols) (\s@AwsCloudFrontDistributionOriginCustomOriginConfig' {} a -> s {originSslProtocols = a} :: AwsCloudFrontDistributionOriginCustomOriginConfig)

instance
  Data.FromJSON
    AwsCloudFrontDistributionOriginCustomOriginConfig
  where
  parseJSON =
    Data.withObject
      "AwsCloudFrontDistributionOriginCustomOriginConfig"
      ( \x ->
          AwsCloudFrontDistributionOriginCustomOriginConfig'
            Prelude.<$> (x Data..:? "HttpPort")
            Prelude.<*> (x Data..:? "HttpsPort")
            Prelude.<*> (x Data..:? "OriginKeepaliveTimeout")
            Prelude.<*> (x Data..:? "OriginProtocolPolicy")
            Prelude.<*> (x Data..:? "OriginReadTimeout")
            Prelude.<*> (x Data..:? "OriginSslProtocols")
      )

instance
  Prelude.Hashable
    AwsCloudFrontDistributionOriginCustomOriginConfig
  where
  hashWithSalt
    _salt
    AwsCloudFrontDistributionOriginCustomOriginConfig' {..} =
      _salt
        `Prelude.hashWithSalt` httpPort
        `Prelude.hashWithSalt` httpsPort
        `Prelude.hashWithSalt` originKeepaliveTimeout
        `Prelude.hashWithSalt` originProtocolPolicy
        `Prelude.hashWithSalt` originReadTimeout
        `Prelude.hashWithSalt` originSslProtocols

instance
  Prelude.NFData
    AwsCloudFrontDistributionOriginCustomOriginConfig
  where
  rnf
    AwsCloudFrontDistributionOriginCustomOriginConfig' {..} =
      Prelude.rnf httpPort
        `Prelude.seq` Prelude.rnf httpsPort
        `Prelude.seq` Prelude.rnf originKeepaliveTimeout
        `Prelude.seq` Prelude.rnf originProtocolPolicy
        `Prelude.seq` Prelude.rnf originReadTimeout
        `Prelude.seq` Prelude.rnf originSslProtocols

instance
  Data.ToJSON
    AwsCloudFrontDistributionOriginCustomOriginConfig
  where
  toJSON
    AwsCloudFrontDistributionOriginCustomOriginConfig' {..} =
      Data.object
        ( Prelude.catMaybes
            [ ("HttpPort" Data..=) Prelude.<$> httpPort,
              ("HttpsPort" Data..=) Prelude.<$> httpsPort,
              ("OriginKeepaliveTimeout" Data..=)
                Prelude.<$> originKeepaliveTimeout,
              ("OriginProtocolPolicy" Data..=)
                Prelude.<$> originProtocolPolicy,
              ("OriginReadTimeout" Data..=)
                Prelude.<$> originReadTimeout,
              ("OriginSslProtocols" Data..=)
                Prelude.<$> originSslProtocols
            ]
        )