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

import Amazonka.CloudFront.Types.ActiveTrustedKeyGroups
import Amazonka.CloudFront.Types.ActiveTrustedSigners
import Amazonka.CloudFront.Types.AliasICPRecordal
import Amazonka.CloudFront.Types.DistributionConfig
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 distribution tells CloudFront where you want content to be delivered
-- from, and the details about how to track and manage content delivery.
--
-- /See:/ 'newDistribution' smart constructor.
data Distribution = Distribution'
  { -- | This field contains a list of key groups and the public keys in each key
    -- group that CloudFront can use to verify the signatures of signed URLs or
    -- signed cookies.
    Distribution -> Maybe ActiveTrustedKeyGroups
activeTrustedKeyGroups :: Prelude.Maybe ActiveTrustedKeyGroups,
    -- | We recommend using @TrustedKeyGroups@ instead of @TrustedSigners@.
    --
    -- This field contains a list of Amazon Web Services account IDs and the
    -- active CloudFront key pairs in each account that CloudFront can use to
    -- verify the signatures of signed URLs or signed cookies.
    Distribution -> Maybe ActiveTrustedSigners
activeTrustedSigners :: Prelude.Maybe ActiveTrustedSigners,
    -- | Amazon Web Services services in China customers must file for an
    -- Internet Content Provider (ICP) recordal if they want to serve content
    -- publicly on an alternate domain name, also known as a CNAME, that
    -- they\'ve added to CloudFront. AliasICPRecordal provides the ICP recordal
    -- status for CNAMEs associated with distributions.
    --
    -- For more information about ICP recordals, see
    -- <https://docs.amazonaws.cn/en_us/aws/latest/userguide/accounts-and-credentials.html Signup, Accounts, and Credentials>
    -- in /Getting Started with Amazon Web Services services in China/.
    Distribution -> Maybe [AliasICPRecordal]
aliasICPRecordals :: Prelude.Maybe [AliasICPRecordal],
    -- | The distribution\'s identifier. For example: @E1U5RQF7T870K0@.
    Distribution -> Text
id :: Prelude.Text,
    -- | The distribution\'s Amazon Resource Name (ARN).
    Distribution -> Text
arn :: Prelude.Text,
    -- | The distribution\'s status. When the status is @Deployed@, the
    -- distribution\'s information is fully propagated to all CloudFront edge
    -- locations.
    Distribution -> Text
status :: Prelude.Text,
    -- | The date and time when the distribution was last modified.
    Distribution -> ISO8601
lastModifiedTime :: Data.ISO8601,
    -- | The number of invalidation batches currently in progress.
    Distribution -> Int
inProgressInvalidationBatches :: Prelude.Int,
    -- | The distribution\'s CloudFront domain name. For example:
    -- @d111111abcdef8.cloudfront.net@.
    Distribution -> Text
domainName :: Prelude.Text,
    -- | The distribution\'s configuration.
    Distribution -> DistributionConfig
distributionConfig :: DistributionConfig
  }
  deriving (Distribution -> Distribution -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Distribution -> Distribution -> Bool
$c/= :: Distribution -> Distribution -> Bool
== :: Distribution -> Distribution -> Bool
$c== :: Distribution -> Distribution -> Bool
Prelude.Eq, Int -> Distribution -> ShowS
[Distribution] -> ShowS
Distribution -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Distribution] -> ShowS
$cshowList :: [Distribution] -> ShowS
show :: Distribution -> String
$cshow :: Distribution -> String
showsPrec :: Int -> Distribution -> ShowS
$cshowsPrec :: Int -> Distribution -> ShowS
Prelude.Show, forall x. Rep Distribution x -> Distribution
forall x. Distribution -> Rep Distribution x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Distribution x -> Distribution
$cfrom :: forall x. Distribution -> Rep Distribution x
Prelude.Generic)

-- |
-- Create a value of 'Distribution' 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:
--
-- 'activeTrustedKeyGroups', 'distribution_activeTrustedKeyGroups' - This field contains a list of key groups and the public keys in each key
-- group that CloudFront can use to verify the signatures of signed URLs or
-- signed cookies.
--
-- 'activeTrustedSigners', 'distribution_activeTrustedSigners' - We recommend using @TrustedKeyGroups@ instead of @TrustedSigners@.
--
-- This field contains a list of Amazon Web Services account IDs and the
-- active CloudFront key pairs in each account that CloudFront can use to
-- verify the signatures of signed URLs or signed cookies.
--
-- 'aliasICPRecordals', 'distribution_aliasICPRecordals' - Amazon Web Services services in China customers must file for an
-- Internet Content Provider (ICP) recordal if they want to serve content
-- publicly on an alternate domain name, also known as a CNAME, that
-- they\'ve added to CloudFront. AliasICPRecordal provides the ICP recordal
-- status for CNAMEs associated with distributions.
--
-- For more information about ICP recordals, see
-- <https://docs.amazonaws.cn/en_us/aws/latest/userguide/accounts-and-credentials.html Signup, Accounts, and Credentials>
-- in /Getting Started with Amazon Web Services services in China/.
--
-- 'id', 'distribution_id' - The distribution\'s identifier. For example: @E1U5RQF7T870K0@.
--
-- 'arn', 'distribution_arn' - The distribution\'s Amazon Resource Name (ARN).
--
-- 'status', 'distribution_status' - The distribution\'s status. When the status is @Deployed@, the
-- distribution\'s information is fully propagated to all CloudFront edge
-- locations.
--
-- 'lastModifiedTime', 'distribution_lastModifiedTime' - The date and time when the distribution was last modified.
--
-- 'inProgressInvalidationBatches', 'distribution_inProgressInvalidationBatches' - The number of invalidation batches currently in progress.
--
-- 'domainName', 'distribution_domainName' - The distribution\'s CloudFront domain name. For example:
-- @d111111abcdef8.cloudfront.net@.
--
-- 'distributionConfig', 'distribution_distributionConfig' - The distribution\'s configuration.
newDistribution ::
  -- | 'id'
  Prelude.Text ->
  -- | 'arn'
  Prelude.Text ->
  -- | 'status'
  Prelude.Text ->
  -- | 'lastModifiedTime'
  Prelude.UTCTime ->
  -- | 'inProgressInvalidationBatches'
  Prelude.Int ->
  -- | 'domainName'
  Prelude.Text ->
  -- | 'distributionConfig'
  DistributionConfig ->
  Distribution
newDistribution :: Text
-> Text
-> Text
-> UTCTime
-> Int
-> Text
-> DistributionConfig
-> Distribution
newDistribution
  Text
pId_
  Text
pARN_
  Text
pStatus_
  UTCTime
pLastModifiedTime_
  Int
pInProgressInvalidationBatches_
  Text
pDomainName_
  DistributionConfig
pDistributionConfig_ =
    Distribution'
      { $sel:activeTrustedKeyGroups:Distribution' :: Maybe ActiveTrustedKeyGroups
activeTrustedKeyGroups =
          forall a. Maybe a
Prelude.Nothing,
        $sel:activeTrustedSigners:Distribution' :: Maybe ActiveTrustedSigners
activeTrustedSigners = forall a. Maybe a
Prelude.Nothing,
        $sel:aliasICPRecordals:Distribution' :: Maybe [AliasICPRecordal]
aliasICPRecordals = forall a. Maybe a
Prelude.Nothing,
        $sel:id:Distribution' :: Text
id = Text
pId_,
        $sel:arn:Distribution' :: Text
arn = Text
pARN_,
        $sel:status:Distribution' :: Text
status = Text
pStatus_,
        $sel:lastModifiedTime:Distribution' :: ISO8601
lastModifiedTime =
          forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pLastModifiedTime_,
        $sel:inProgressInvalidationBatches:Distribution' :: Int
inProgressInvalidationBatches =
          Int
pInProgressInvalidationBatches_,
        $sel:domainName:Distribution' :: Text
domainName = Text
pDomainName_,
        $sel:distributionConfig:Distribution' :: DistributionConfig
distributionConfig = DistributionConfig
pDistributionConfig_
      }

-- | This field contains a list of key groups and the public keys in each key
-- group that CloudFront can use to verify the signatures of signed URLs or
-- signed cookies.
distribution_activeTrustedKeyGroups :: Lens.Lens' Distribution (Prelude.Maybe ActiveTrustedKeyGroups)
distribution_activeTrustedKeyGroups :: Lens' Distribution (Maybe ActiveTrustedKeyGroups)
distribution_activeTrustedKeyGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {Maybe ActiveTrustedKeyGroups
activeTrustedKeyGroups :: Maybe ActiveTrustedKeyGroups
$sel:activeTrustedKeyGroups:Distribution' :: Distribution -> Maybe ActiveTrustedKeyGroups
activeTrustedKeyGroups} -> Maybe ActiveTrustedKeyGroups
activeTrustedKeyGroups) (\s :: Distribution
s@Distribution' {} Maybe ActiveTrustedKeyGroups
a -> Distribution
s {$sel:activeTrustedKeyGroups:Distribution' :: Maybe ActiveTrustedKeyGroups
activeTrustedKeyGroups = Maybe ActiveTrustedKeyGroups
a} :: Distribution)

-- | We recommend using @TrustedKeyGroups@ instead of @TrustedSigners@.
--
-- This field contains a list of Amazon Web Services account IDs and the
-- active CloudFront key pairs in each account that CloudFront can use to
-- verify the signatures of signed URLs or signed cookies.
distribution_activeTrustedSigners :: Lens.Lens' Distribution (Prelude.Maybe ActiveTrustedSigners)
distribution_activeTrustedSigners :: Lens' Distribution (Maybe ActiveTrustedSigners)
distribution_activeTrustedSigners = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {Maybe ActiveTrustedSigners
activeTrustedSigners :: Maybe ActiveTrustedSigners
$sel:activeTrustedSigners:Distribution' :: Distribution -> Maybe ActiveTrustedSigners
activeTrustedSigners} -> Maybe ActiveTrustedSigners
activeTrustedSigners) (\s :: Distribution
s@Distribution' {} Maybe ActiveTrustedSigners
a -> Distribution
s {$sel:activeTrustedSigners:Distribution' :: Maybe ActiveTrustedSigners
activeTrustedSigners = Maybe ActiveTrustedSigners
a} :: Distribution)

-- | Amazon Web Services services in China customers must file for an
-- Internet Content Provider (ICP) recordal if they want to serve content
-- publicly on an alternate domain name, also known as a CNAME, that
-- they\'ve added to CloudFront. AliasICPRecordal provides the ICP recordal
-- status for CNAMEs associated with distributions.
--
-- For more information about ICP recordals, see
-- <https://docs.amazonaws.cn/en_us/aws/latest/userguide/accounts-and-credentials.html Signup, Accounts, and Credentials>
-- in /Getting Started with Amazon Web Services services in China/.
distribution_aliasICPRecordals :: Lens.Lens' Distribution (Prelude.Maybe [AliasICPRecordal])
distribution_aliasICPRecordals :: Lens' Distribution (Maybe [AliasICPRecordal])
distribution_aliasICPRecordals = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {Maybe [AliasICPRecordal]
aliasICPRecordals :: Maybe [AliasICPRecordal]
$sel:aliasICPRecordals:Distribution' :: Distribution -> Maybe [AliasICPRecordal]
aliasICPRecordals} -> Maybe [AliasICPRecordal]
aliasICPRecordals) (\s :: Distribution
s@Distribution' {} Maybe [AliasICPRecordal]
a -> Distribution
s {$sel:aliasICPRecordals:Distribution' :: Maybe [AliasICPRecordal]
aliasICPRecordals = Maybe [AliasICPRecordal]
a} :: Distribution) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The distribution\'s identifier. For example: @E1U5RQF7T870K0@.
distribution_id :: Lens.Lens' Distribution Prelude.Text
distribution_id :: Lens' Distribution Text
distribution_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {Text
id :: Text
$sel:id:Distribution' :: Distribution -> Text
id} -> Text
id) (\s :: Distribution
s@Distribution' {} Text
a -> Distribution
s {$sel:id:Distribution' :: Text
id = Text
a} :: Distribution)

-- | The distribution\'s Amazon Resource Name (ARN).
distribution_arn :: Lens.Lens' Distribution Prelude.Text
distribution_arn :: Lens' Distribution Text
distribution_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {Text
arn :: Text
$sel:arn:Distribution' :: Distribution -> Text
arn} -> Text
arn) (\s :: Distribution
s@Distribution' {} Text
a -> Distribution
s {$sel:arn:Distribution' :: Text
arn = Text
a} :: Distribution)

-- | The distribution\'s status. When the status is @Deployed@, the
-- distribution\'s information is fully propagated to all CloudFront edge
-- locations.
distribution_status :: Lens.Lens' Distribution Prelude.Text
distribution_status :: Lens' Distribution Text
distribution_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {Text
status :: Text
$sel:status:Distribution' :: Distribution -> Text
status} -> Text
status) (\s :: Distribution
s@Distribution' {} Text
a -> Distribution
s {$sel:status:Distribution' :: Text
status = Text
a} :: Distribution)

-- | The date and time when the distribution was last modified.
distribution_lastModifiedTime :: Lens.Lens' Distribution Prelude.UTCTime
distribution_lastModifiedTime :: Lens' Distribution UTCTime
distribution_lastModifiedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {ISO8601
lastModifiedTime :: ISO8601
$sel:lastModifiedTime:Distribution' :: Distribution -> ISO8601
lastModifiedTime} -> ISO8601
lastModifiedTime) (\s :: Distribution
s@Distribution' {} ISO8601
a -> Distribution
s {$sel:lastModifiedTime:Distribution' :: ISO8601
lastModifiedTime = ISO8601
a} :: Distribution) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The number of invalidation batches currently in progress.
distribution_inProgressInvalidationBatches :: Lens.Lens' Distribution Prelude.Int
distribution_inProgressInvalidationBatches :: Lens' Distribution Int
distribution_inProgressInvalidationBatches = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {Int
inProgressInvalidationBatches :: Int
$sel:inProgressInvalidationBatches:Distribution' :: Distribution -> Int
inProgressInvalidationBatches} -> Int
inProgressInvalidationBatches) (\s :: Distribution
s@Distribution' {} Int
a -> Distribution
s {$sel:inProgressInvalidationBatches:Distribution' :: Int
inProgressInvalidationBatches = Int
a} :: Distribution)

-- | The distribution\'s CloudFront domain name. For example:
-- @d111111abcdef8.cloudfront.net@.
distribution_domainName :: Lens.Lens' Distribution Prelude.Text
distribution_domainName :: Lens' Distribution Text
distribution_domainName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {Text
domainName :: Text
$sel:domainName:Distribution' :: Distribution -> Text
domainName} -> Text
domainName) (\s :: Distribution
s@Distribution' {} Text
a -> Distribution
s {$sel:domainName:Distribution' :: Text
domainName = Text
a} :: Distribution)

-- | The distribution\'s configuration.
distribution_distributionConfig :: Lens.Lens' Distribution DistributionConfig
distribution_distributionConfig :: Lens' Distribution DistributionConfig
distribution_distributionConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Distribution' {DistributionConfig
distributionConfig :: DistributionConfig
$sel:distributionConfig:Distribution' :: Distribution -> DistributionConfig
distributionConfig} -> DistributionConfig
distributionConfig) (\s :: Distribution
s@Distribution' {} DistributionConfig
a -> Distribution
s {$sel:distributionConfig:Distribution' :: DistributionConfig
distributionConfig = DistributionConfig
a} :: Distribution)

instance Data.FromXML Distribution where
  parseXML :: [Node] -> Either String Distribution
parseXML [Node]
x =
    Maybe ActiveTrustedKeyGroups
-> Maybe ActiveTrustedSigners
-> Maybe [AliasICPRecordal]
-> Text
-> Text
-> Text
-> ISO8601
-> Int
-> Text
-> DistributionConfig
-> Distribution
Distribution'
      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
"ActiveTrustedKeyGroups")
      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
"ActiveTrustedSigners")
      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
"AliasICPRecordals"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"AliasICPRecordal")
                  )
      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
"Id")
      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
"ARN")
      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
"Status")
      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
"LastModifiedTime")
      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
"InProgressInvalidationBatches")
      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
"DomainName")
      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
"DistributionConfig")

instance Prelude.Hashable Distribution where
  hashWithSalt :: Int -> Distribution -> Int
hashWithSalt Int
_salt Distribution' {Int
Maybe [AliasICPRecordal]
Maybe ActiveTrustedKeyGroups
Maybe ActiveTrustedSigners
Text
ISO8601
DistributionConfig
distributionConfig :: DistributionConfig
domainName :: Text
inProgressInvalidationBatches :: Int
lastModifiedTime :: ISO8601
status :: Text
arn :: Text
id :: Text
aliasICPRecordals :: Maybe [AliasICPRecordal]
activeTrustedSigners :: Maybe ActiveTrustedSigners
activeTrustedKeyGroups :: Maybe ActiveTrustedKeyGroups
$sel:distributionConfig:Distribution' :: Distribution -> DistributionConfig
$sel:domainName:Distribution' :: Distribution -> Text
$sel:inProgressInvalidationBatches:Distribution' :: Distribution -> Int
$sel:lastModifiedTime:Distribution' :: Distribution -> ISO8601
$sel:status:Distribution' :: Distribution -> Text
$sel:arn:Distribution' :: Distribution -> Text
$sel:id:Distribution' :: Distribution -> Text
$sel:aliasICPRecordals:Distribution' :: Distribution -> Maybe [AliasICPRecordal]
$sel:activeTrustedSigners:Distribution' :: Distribution -> Maybe ActiveTrustedSigners
$sel:activeTrustedKeyGroups:Distribution' :: Distribution -> Maybe ActiveTrustedKeyGroups
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ActiveTrustedKeyGroups
activeTrustedKeyGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ActiveTrustedSigners
activeTrustedSigners
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [AliasICPRecordal]
aliasICPRecordals
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ISO8601
lastModifiedTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Int
inProgressInvalidationBatches
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domainName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` DistributionConfig
distributionConfig

instance Prelude.NFData Distribution where
  rnf :: Distribution -> ()
rnf Distribution' {Int
Maybe [AliasICPRecordal]
Maybe ActiveTrustedKeyGroups
Maybe ActiveTrustedSigners
Text
ISO8601
DistributionConfig
distributionConfig :: DistributionConfig
domainName :: Text
inProgressInvalidationBatches :: Int
lastModifiedTime :: ISO8601
status :: Text
arn :: Text
id :: Text
aliasICPRecordals :: Maybe [AliasICPRecordal]
activeTrustedSigners :: Maybe ActiveTrustedSigners
activeTrustedKeyGroups :: Maybe ActiveTrustedKeyGroups
$sel:distributionConfig:Distribution' :: Distribution -> DistributionConfig
$sel:domainName:Distribution' :: Distribution -> Text
$sel:inProgressInvalidationBatches:Distribution' :: Distribution -> Int
$sel:lastModifiedTime:Distribution' :: Distribution -> ISO8601
$sel:status:Distribution' :: Distribution -> Text
$sel:arn:Distribution' :: Distribution -> Text
$sel:id:Distribution' :: Distribution -> Text
$sel:aliasICPRecordals:Distribution' :: Distribution -> Maybe [AliasICPRecordal]
$sel:activeTrustedSigners:Distribution' :: Distribution -> Maybe ActiveTrustedSigners
$sel:activeTrustedKeyGroups:Distribution' :: Distribution -> Maybe ActiveTrustedKeyGroups
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ActiveTrustedKeyGroups
activeTrustedKeyGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ActiveTrustedSigners
activeTrustedSigners
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [AliasICPRecordal]
aliasICPRecordals
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ISO8601
lastModifiedTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
inProgressInvalidationBatches
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
domainName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf DistributionConfig
distributionConfig