{-# 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.AwsCloudFrontDistributionDetails
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SecurityHub.Types.AwsCloudFrontDistributionDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionCacheBehaviors
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionDefaultCacheBehavior
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionLogging
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionOriginGroups
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionOrigins
import Amazonka.SecurityHub.Types.AwsCloudFrontDistributionViewerCertificate

-- | A distribution configuration.
--
-- /See:/ 'newAwsCloudFrontDistributionDetails' smart constructor.
data AwsCloudFrontDistributionDetails = AwsCloudFrontDistributionDetails'
  { -- | Indicates the current status of the distribution.
    AwsCloudFrontDistributionDetails -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | The entity tag is a hash of the object.
    AwsCloudFrontDistributionDetails -> Maybe Text
eTag :: Prelude.Maybe Prelude.Text,
    -- | Provides information about the origin groups in the distribution.
    AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionOriginGroups
originGroups :: Prelude.Maybe AwsCloudFrontDistributionOriginGroups,
    -- | The object that CloudFront sends in response to requests from the origin
    -- (for example, index.html) when a viewer requests the root URL for the
    -- distribution (http:\/\/www.example.com) instead of an object in your
    -- distribution (http:\/\/www.example.com\/product-description.html).
    AwsCloudFrontDistributionDetails -> Maybe Text
defaultRootObject :: Prelude.Maybe Prelude.Text,
    -- | A unique identifier that specifies the WAF web ACL, if any, to associate
    -- with this distribution.
    AwsCloudFrontDistributionDetails -> Maybe Text
webAclId :: Prelude.Maybe Prelude.Text,
    -- | Indicates when that the distribution was last modified.
    --
    -- Uses the @date-time@ format specified in
    -- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
    -- The value cannot contain spaces. For example,
    -- @2020-03-22T13:22:13.933Z@.
    AwsCloudFrontDistributionDetails -> Maybe Text
lastModifiedTime :: Prelude.Maybe Prelude.Text,
    -- | Provides information about the TLS\/SSL configuration that the
    -- distribution uses to communicate with viewers.
    AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionViewerCertificate
viewerCertificate :: Prelude.Maybe AwsCloudFrontDistributionViewerCertificate,
    -- | The domain name corresponding to the distribution.
    AwsCloudFrontDistributionDetails -> Maybe Text
domainName :: Prelude.Maybe Prelude.Text,
    -- | A complex type that contains information about origins for this
    -- distribution.
    AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionOrigins
origins :: Prelude.Maybe AwsCloudFrontDistributionOrigins,
    -- | A complex type that controls whether access logs are written for the
    -- distribution.
    AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionLogging
logging :: Prelude.Maybe AwsCloudFrontDistributionLogging,
    -- | Provides information about the cache configuration for the distribution.
    AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionCacheBehaviors
cacheBehaviors :: Prelude.Maybe AwsCloudFrontDistributionCacheBehaviors,
    -- | The default cache behavior for the configuration.
    AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
defaultCacheBehavior :: Prelude.Maybe AwsCloudFrontDistributionDefaultCacheBehavior
  }
  deriving (AwsCloudFrontDistributionDetails
-> AwsCloudFrontDistributionDetails -> Bool
(AwsCloudFrontDistributionDetails
 -> AwsCloudFrontDistributionDetails -> Bool)
-> (AwsCloudFrontDistributionDetails
    -> AwsCloudFrontDistributionDetails -> Bool)
-> Eq AwsCloudFrontDistributionDetails
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AwsCloudFrontDistributionDetails
-> AwsCloudFrontDistributionDetails -> Bool
$c/= :: AwsCloudFrontDistributionDetails
-> AwsCloudFrontDistributionDetails -> Bool
== :: AwsCloudFrontDistributionDetails
-> AwsCloudFrontDistributionDetails -> Bool
$c== :: AwsCloudFrontDistributionDetails
-> AwsCloudFrontDistributionDetails -> Bool
Prelude.Eq, ReadPrec [AwsCloudFrontDistributionDetails]
ReadPrec AwsCloudFrontDistributionDetails
Int -> ReadS AwsCloudFrontDistributionDetails
ReadS [AwsCloudFrontDistributionDetails]
(Int -> ReadS AwsCloudFrontDistributionDetails)
-> ReadS [AwsCloudFrontDistributionDetails]
-> ReadPrec AwsCloudFrontDistributionDetails
-> ReadPrec [AwsCloudFrontDistributionDetails]
-> Read AwsCloudFrontDistributionDetails
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AwsCloudFrontDistributionDetails]
$creadListPrec :: ReadPrec [AwsCloudFrontDistributionDetails]
readPrec :: ReadPrec AwsCloudFrontDistributionDetails
$creadPrec :: ReadPrec AwsCloudFrontDistributionDetails
readList :: ReadS [AwsCloudFrontDistributionDetails]
$creadList :: ReadS [AwsCloudFrontDistributionDetails]
readsPrec :: Int -> ReadS AwsCloudFrontDistributionDetails
$creadsPrec :: Int -> ReadS AwsCloudFrontDistributionDetails
Prelude.Read, Int -> AwsCloudFrontDistributionDetails -> ShowS
[AwsCloudFrontDistributionDetails] -> ShowS
AwsCloudFrontDistributionDetails -> String
(Int -> AwsCloudFrontDistributionDetails -> ShowS)
-> (AwsCloudFrontDistributionDetails -> String)
-> ([AwsCloudFrontDistributionDetails] -> ShowS)
-> Show AwsCloudFrontDistributionDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AwsCloudFrontDistributionDetails] -> ShowS
$cshowList :: [AwsCloudFrontDistributionDetails] -> ShowS
show :: AwsCloudFrontDistributionDetails -> String
$cshow :: AwsCloudFrontDistributionDetails -> String
showsPrec :: Int -> AwsCloudFrontDistributionDetails -> ShowS
$cshowsPrec :: Int -> AwsCloudFrontDistributionDetails -> ShowS
Prelude.Show, (forall x.
 AwsCloudFrontDistributionDetails
 -> Rep AwsCloudFrontDistributionDetails x)
-> (forall x.
    Rep AwsCloudFrontDistributionDetails x
    -> AwsCloudFrontDistributionDetails)
-> Generic AwsCloudFrontDistributionDetails
forall x.
Rep AwsCloudFrontDistributionDetails x
-> AwsCloudFrontDistributionDetails
forall x.
AwsCloudFrontDistributionDetails
-> Rep AwsCloudFrontDistributionDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep AwsCloudFrontDistributionDetails x
-> AwsCloudFrontDistributionDetails
$cfrom :: forall x.
AwsCloudFrontDistributionDetails
-> Rep AwsCloudFrontDistributionDetails x
Prelude.Generic)

-- |
-- Create a value of 'AwsCloudFrontDistributionDetails' 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:
--
-- 'status', 'awsCloudFrontDistributionDetails_status' - Indicates the current status of the distribution.
--
-- 'eTag', 'awsCloudFrontDistributionDetails_eTag' - The entity tag is a hash of the object.
--
-- 'originGroups', 'awsCloudFrontDistributionDetails_originGroups' - Provides information about the origin groups in the distribution.
--
-- 'defaultRootObject', 'awsCloudFrontDistributionDetails_defaultRootObject' - The object that CloudFront sends in response to requests from the origin
-- (for example, index.html) when a viewer requests the root URL for the
-- distribution (http:\/\/www.example.com) instead of an object in your
-- distribution (http:\/\/www.example.com\/product-description.html).
--
-- 'webAclId', 'awsCloudFrontDistributionDetails_webAclId' - A unique identifier that specifies the WAF web ACL, if any, to associate
-- with this distribution.
--
-- 'lastModifiedTime', 'awsCloudFrontDistributionDetails_lastModifiedTime' - Indicates when that the distribution was last modified.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
--
-- 'viewerCertificate', 'awsCloudFrontDistributionDetails_viewerCertificate' - Provides information about the TLS\/SSL configuration that the
-- distribution uses to communicate with viewers.
--
-- 'domainName', 'awsCloudFrontDistributionDetails_domainName' - The domain name corresponding to the distribution.
--
-- 'origins', 'awsCloudFrontDistributionDetails_origins' - A complex type that contains information about origins for this
-- distribution.
--
-- 'logging', 'awsCloudFrontDistributionDetails_logging' - A complex type that controls whether access logs are written for the
-- distribution.
--
-- 'cacheBehaviors', 'awsCloudFrontDistributionDetails_cacheBehaviors' - Provides information about the cache configuration for the distribution.
--
-- 'defaultCacheBehavior', 'awsCloudFrontDistributionDetails_defaultCacheBehavior' - The default cache behavior for the configuration.
newAwsCloudFrontDistributionDetails ::
  AwsCloudFrontDistributionDetails
newAwsCloudFrontDistributionDetails :: AwsCloudFrontDistributionDetails
newAwsCloudFrontDistributionDetails =
  AwsCloudFrontDistributionDetails' :: Maybe Text
-> Maybe Text
-> Maybe AwsCloudFrontDistributionOriginGroups
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AwsCloudFrontDistributionViewerCertificate
-> Maybe Text
-> Maybe AwsCloudFrontDistributionOrigins
-> Maybe AwsCloudFrontDistributionLogging
-> Maybe AwsCloudFrontDistributionCacheBehaviors
-> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
-> AwsCloudFrontDistributionDetails
AwsCloudFrontDistributionDetails'
    { $sel:status:AwsCloudFrontDistributionDetails' :: Maybe Text
status =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:eTag:AwsCloudFrontDistributionDetails' :: Maybe Text
eTag = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:originGroups:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionOriginGroups
originGroups = Maybe AwsCloudFrontDistributionOriginGroups
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultRootObject:AwsCloudFrontDistributionDetails' :: Maybe Text
defaultRootObject = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:webAclId:AwsCloudFrontDistributionDetails' :: Maybe Text
webAclId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedTime:AwsCloudFrontDistributionDetails' :: Maybe Text
lastModifiedTime = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:viewerCertificate:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionViewerCertificate
viewerCertificate = Maybe AwsCloudFrontDistributionViewerCertificate
forall a. Maybe a
Prelude.Nothing,
      $sel:domainName:AwsCloudFrontDistributionDetails' :: Maybe Text
domainName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:origins:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionOrigins
origins = Maybe AwsCloudFrontDistributionOrigins
forall a. Maybe a
Prelude.Nothing,
      $sel:logging:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionLogging
logging = Maybe AwsCloudFrontDistributionLogging
forall a. Maybe a
Prelude.Nothing,
      $sel:cacheBehaviors:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionCacheBehaviors
cacheBehaviors = Maybe AwsCloudFrontDistributionCacheBehaviors
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultCacheBehavior:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionDefaultCacheBehavior
defaultCacheBehavior = Maybe AwsCloudFrontDistributionDefaultCacheBehavior
forall a. Maybe a
Prelude.Nothing
    }

-- | Indicates the current status of the distribution.
awsCloudFrontDistributionDetails_status :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_status :: (Maybe Text -> f (Maybe Text))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_status = (AwsCloudFrontDistributionDetails -> Maybe Text)
-> (AwsCloudFrontDistributionDetails
    -> Maybe Text -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe Text
status :: Maybe Text
$sel:status:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
status} -> Maybe Text
status) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe Text
a -> AwsCloudFrontDistributionDetails
s {$sel:status:AwsCloudFrontDistributionDetails' :: Maybe Text
status = Maybe Text
a} :: AwsCloudFrontDistributionDetails)

-- | The entity tag is a hash of the object.
awsCloudFrontDistributionDetails_eTag :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_eTag :: (Maybe Text -> f (Maybe Text))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_eTag = (AwsCloudFrontDistributionDetails -> Maybe Text)
-> (AwsCloudFrontDistributionDetails
    -> Maybe Text -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe Text
eTag :: Maybe Text
$sel:eTag:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
eTag} -> Maybe Text
eTag) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe Text
a -> AwsCloudFrontDistributionDetails
s {$sel:eTag:AwsCloudFrontDistributionDetails' :: Maybe Text
eTag = Maybe Text
a} :: AwsCloudFrontDistributionDetails)

-- | Provides information about the origin groups in the distribution.
awsCloudFrontDistributionDetails_originGroups :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionOriginGroups)
awsCloudFrontDistributionDetails_originGroups :: (Maybe AwsCloudFrontDistributionOriginGroups
 -> f (Maybe AwsCloudFrontDistributionOriginGroups))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_originGroups = (AwsCloudFrontDistributionDetails
 -> Maybe AwsCloudFrontDistributionOriginGroups)
-> (AwsCloudFrontDistributionDetails
    -> Maybe AwsCloudFrontDistributionOriginGroups
    -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe AwsCloudFrontDistributionOriginGroups)
     (Maybe AwsCloudFrontDistributionOriginGroups)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe AwsCloudFrontDistributionOriginGroups
originGroups :: Maybe AwsCloudFrontDistributionOriginGroups
$sel:originGroups:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionOriginGroups
originGroups} -> Maybe AwsCloudFrontDistributionOriginGroups
originGroups) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe AwsCloudFrontDistributionOriginGroups
a -> AwsCloudFrontDistributionDetails
s {$sel:originGroups:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionOriginGroups
originGroups = Maybe AwsCloudFrontDistributionOriginGroups
a} :: AwsCloudFrontDistributionDetails)

-- | The object that CloudFront sends in response to requests from the origin
-- (for example, index.html) when a viewer requests the root URL for the
-- distribution (http:\/\/www.example.com) instead of an object in your
-- distribution (http:\/\/www.example.com\/product-description.html).
awsCloudFrontDistributionDetails_defaultRootObject :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_defaultRootObject :: (Maybe Text -> f (Maybe Text))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_defaultRootObject = (AwsCloudFrontDistributionDetails -> Maybe Text)
-> (AwsCloudFrontDistributionDetails
    -> Maybe Text -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe Text
defaultRootObject :: Maybe Text
$sel:defaultRootObject:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
defaultRootObject} -> Maybe Text
defaultRootObject) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe Text
a -> AwsCloudFrontDistributionDetails
s {$sel:defaultRootObject:AwsCloudFrontDistributionDetails' :: Maybe Text
defaultRootObject = Maybe Text
a} :: AwsCloudFrontDistributionDetails)

-- | A unique identifier that specifies the WAF web ACL, if any, to associate
-- with this distribution.
awsCloudFrontDistributionDetails_webAclId :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_webAclId :: (Maybe Text -> f (Maybe Text))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_webAclId = (AwsCloudFrontDistributionDetails -> Maybe Text)
-> (AwsCloudFrontDistributionDetails
    -> Maybe Text -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe Text
webAclId :: Maybe Text
$sel:webAclId:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
webAclId} -> Maybe Text
webAclId) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe Text
a -> AwsCloudFrontDistributionDetails
s {$sel:webAclId:AwsCloudFrontDistributionDetails' :: Maybe Text
webAclId = Maybe Text
a} :: AwsCloudFrontDistributionDetails)

-- | Indicates when that the distribution was last modified.
--
-- Uses the @date-time@ format specified in
-- <https://tools.ietf.org/html/rfc3339#section-5.6 RFC 3339 section 5.6, Internet Date\/Time Format>.
-- The value cannot contain spaces. For example,
-- @2020-03-22T13:22:13.933Z@.
awsCloudFrontDistributionDetails_lastModifiedTime :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_lastModifiedTime :: (Maybe Text -> f (Maybe Text))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_lastModifiedTime = (AwsCloudFrontDistributionDetails -> Maybe Text)
-> (AwsCloudFrontDistributionDetails
    -> Maybe Text -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe Text
lastModifiedTime :: Maybe Text
$sel:lastModifiedTime:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
lastModifiedTime} -> Maybe Text
lastModifiedTime) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe Text
a -> AwsCloudFrontDistributionDetails
s {$sel:lastModifiedTime:AwsCloudFrontDistributionDetails' :: Maybe Text
lastModifiedTime = Maybe Text
a} :: AwsCloudFrontDistributionDetails)

-- | Provides information about the TLS\/SSL configuration that the
-- distribution uses to communicate with viewers.
awsCloudFrontDistributionDetails_viewerCertificate :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionViewerCertificate)
awsCloudFrontDistributionDetails_viewerCertificate :: (Maybe AwsCloudFrontDistributionViewerCertificate
 -> f (Maybe AwsCloudFrontDistributionViewerCertificate))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_viewerCertificate = (AwsCloudFrontDistributionDetails
 -> Maybe AwsCloudFrontDistributionViewerCertificate)
-> (AwsCloudFrontDistributionDetails
    -> Maybe AwsCloudFrontDistributionViewerCertificate
    -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe AwsCloudFrontDistributionViewerCertificate)
     (Maybe AwsCloudFrontDistributionViewerCertificate)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe AwsCloudFrontDistributionViewerCertificate
viewerCertificate :: Maybe AwsCloudFrontDistributionViewerCertificate
$sel:viewerCertificate:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionViewerCertificate
viewerCertificate} -> Maybe AwsCloudFrontDistributionViewerCertificate
viewerCertificate) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe AwsCloudFrontDistributionViewerCertificate
a -> AwsCloudFrontDistributionDetails
s {$sel:viewerCertificate:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionViewerCertificate
viewerCertificate = Maybe AwsCloudFrontDistributionViewerCertificate
a} :: AwsCloudFrontDistributionDetails)

-- | The domain name corresponding to the distribution.
awsCloudFrontDistributionDetails_domainName :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe Prelude.Text)
awsCloudFrontDistributionDetails_domainName :: (Maybe Text -> f (Maybe Text))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_domainName = (AwsCloudFrontDistributionDetails -> Maybe Text)
-> (AwsCloudFrontDistributionDetails
    -> Maybe Text -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe Text
domainName :: Maybe Text
$sel:domainName:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
domainName} -> Maybe Text
domainName) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe Text
a -> AwsCloudFrontDistributionDetails
s {$sel:domainName:AwsCloudFrontDistributionDetails' :: Maybe Text
domainName = Maybe Text
a} :: AwsCloudFrontDistributionDetails)

-- | A complex type that contains information about origins for this
-- distribution.
awsCloudFrontDistributionDetails_origins :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionOrigins)
awsCloudFrontDistributionDetails_origins :: (Maybe AwsCloudFrontDistributionOrigins
 -> f (Maybe AwsCloudFrontDistributionOrigins))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_origins = (AwsCloudFrontDistributionDetails
 -> Maybe AwsCloudFrontDistributionOrigins)
-> (AwsCloudFrontDistributionDetails
    -> Maybe AwsCloudFrontDistributionOrigins
    -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe AwsCloudFrontDistributionOrigins)
     (Maybe AwsCloudFrontDistributionOrigins)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe AwsCloudFrontDistributionOrigins
origins :: Maybe AwsCloudFrontDistributionOrigins
$sel:origins:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionOrigins
origins} -> Maybe AwsCloudFrontDistributionOrigins
origins) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe AwsCloudFrontDistributionOrigins
a -> AwsCloudFrontDistributionDetails
s {$sel:origins:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionOrigins
origins = Maybe AwsCloudFrontDistributionOrigins
a} :: AwsCloudFrontDistributionDetails)

-- | A complex type that controls whether access logs are written for the
-- distribution.
awsCloudFrontDistributionDetails_logging :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionLogging)
awsCloudFrontDistributionDetails_logging :: (Maybe AwsCloudFrontDistributionLogging
 -> f (Maybe AwsCloudFrontDistributionLogging))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_logging = (AwsCloudFrontDistributionDetails
 -> Maybe AwsCloudFrontDistributionLogging)
-> (AwsCloudFrontDistributionDetails
    -> Maybe AwsCloudFrontDistributionLogging
    -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe AwsCloudFrontDistributionLogging)
     (Maybe AwsCloudFrontDistributionLogging)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe AwsCloudFrontDistributionLogging
logging :: Maybe AwsCloudFrontDistributionLogging
$sel:logging:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionLogging
logging} -> Maybe AwsCloudFrontDistributionLogging
logging) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe AwsCloudFrontDistributionLogging
a -> AwsCloudFrontDistributionDetails
s {$sel:logging:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionLogging
logging = Maybe AwsCloudFrontDistributionLogging
a} :: AwsCloudFrontDistributionDetails)

-- | Provides information about the cache configuration for the distribution.
awsCloudFrontDistributionDetails_cacheBehaviors :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionCacheBehaviors)
awsCloudFrontDistributionDetails_cacheBehaviors :: (Maybe AwsCloudFrontDistributionCacheBehaviors
 -> f (Maybe AwsCloudFrontDistributionCacheBehaviors))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_cacheBehaviors = (AwsCloudFrontDistributionDetails
 -> Maybe AwsCloudFrontDistributionCacheBehaviors)
-> (AwsCloudFrontDistributionDetails
    -> Maybe AwsCloudFrontDistributionCacheBehaviors
    -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe AwsCloudFrontDistributionCacheBehaviors)
     (Maybe AwsCloudFrontDistributionCacheBehaviors)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe AwsCloudFrontDistributionCacheBehaviors
cacheBehaviors :: Maybe AwsCloudFrontDistributionCacheBehaviors
$sel:cacheBehaviors:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionCacheBehaviors
cacheBehaviors} -> Maybe AwsCloudFrontDistributionCacheBehaviors
cacheBehaviors) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe AwsCloudFrontDistributionCacheBehaviors
a -> AwsCloudFrontDistributionDetails
s {$sel:cacheBehaviors:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionCacheBehaviors
cacheBehaviors = Maybe AwsCloudFrontDistributionCacheBehaviors
a} :: AwsCloudFrontDistributionDetails)

-- | The default cache behavior for the configuration.
awsCloudFrontDistributionDetails_defaultCacheBehavior :: Lens.Lens' AwsCloudFrontDistributionDetails (Prelude.Maybe AwsCloudFrontDistributionDefaultCacheBehavior)
awsCloudFrontDistributionDetails_defaultCacheBehavior :: (Maybe AwsCloudFrontDistributionDefaultCacheBehavior
 -> f (Maybe AwsCloudFrontDistributionDefaultCacheBehavior))
-> AwsCloudFrontDistributionDetails
-> f AwsCloudFrontDistributionDetails
awsCloudFrontDistributionDetails_defaultCacheBehavior = (AwsCloudFrontDistributionDetails
 -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior)
-> (AwsCloudFrontDistributionDetails
    -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
    -> AwsCloudFrontDistributionDetails)
-> Lens
     AwsCloudFrontDistributionDetails
     AwsCloudFrontDistributionDetails
     (Maybe AwsCloudFrontDistributionDefaultCacheBehavior)
     (Maybe AwsCloudFrontDistributionDefaultCacheBehavior)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsCloudFrontDistributionDetails' {Maybe AwsCloudFrontDistributionDefaultCacheBehavior
defaultCacheBehavior :: Maybe AwsCloudFrontDistributionDefaultCacheBehavior
$sel:defaultCacheBehavior:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
defaultCacheBehavior} -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
defaultCacheBehavior) (\s :: AwsCloudFrontDistributionDetails
s@AwsCloudFrontDistributionDetails' {} Maybe AwsCloudFrontDistributionDefaultCacheBehavior
a -> AwsCloudFrontDistributionDetails
s {$sel:defaultCacheBehavior:AwsCloudFrontDistributionDetails' :: Maybe AwsCloudFrontDistributionDefaultCacheBehavior
defaultCacheBehavior = Maybe AwsCloudFrontDistributionDefaultCacheBehavior
a} :: AwsCloudFrontDistributionDetails)

instance
  Core.FromJSON
    AwsCloudFrontDistributionDetails
  where
  parseJSON :: Value -> Parser AwsCloudFrontDistributionDetails
parseJSON =
    String
-> (Object -> Parser AwsCloudFrontDistributionDetails)
-> Value
-> Parser AwsCloudFrontDistributionDetails
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"AwsCloudFrontDistributionDetails"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe AwsCloudFrontDistributionOriginGroups
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AwsCloudFrontDistributionViewerCertificate
-> Maybe Text
-> Maybe AwsCloudFrontDistributionOrigins
-> Maybe AwsCloudFrontDistributionLogging
-> Maybe AwsCloudFrontDistributionCacheBehaviors
-> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
-> AwsCloudFrontDistributionDetails
AwsCloudFrontDistributionDetails'
            (Maybe Text
 -> Maybe Text
 -> Maybe AwsCloudFrontDistributionOriginGroups
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe AwsCloudFrontDistributionViewerCertificate
 -> Maybe Text
 -> Maybe AwsCloudFrontDistributionOrigins
 -> Maybe AwsCloudFrontDistributionLogging
 -> Maybe AwsCloudFrontDistributionCacheBehaviors
 -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
 -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe AwsCloudFrontDistributionOriginGroups
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionViewerCertificate
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionOrigins
      -> Maybe AwsCloudFrontDistributionLogging
      -> Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Status")
            Parser
  (Maybe Text
   -> Maybe AwsCloudFrontDistributionOriginGroups
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionViewerCertificate
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionOrigins
   -> Maybe AwsCloudFrontDistributionLogging
   -> Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsCloudFrontDistributionOriginGroups
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionViewerCertificate
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionOrigins
      -> Maybe AwsCloudFrontDistributionLogging
      -> Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ETag")
            Parser
  (Maybe AwsCloudFrontDistributionOriginGroups
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionViewerCertificate
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionOrigins
   -> Maybe AwsCloudFrontDistributionLogging
   -> Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe AwsCloudFrontDistributionOriginGroups)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionViewerCertificate
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionOrigins
      -> Maybe AwsCloudFrontDistributionLogging
      -> Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe AwsCloudFrontDistributionOriginGroups)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"OriginGroups")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionViewerCertificate
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionOrigins
   -> Maybe AwsCloudFrontDistributionLogging
   -> Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionViewerCertificate
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionOrigins
      -> Maybe AwsCloudFrontDistributionLogging
      -> Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DefaultRootObject")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionViewerCertificate
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionOrigins
   -> Maybe AwsCloudFrontDistributionLogging
   -> Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe AwsCloudFrontDistributionViewerCertificate
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionOrigins
      -> Maybe AwsCloudFrontDistributionLogging
      -> Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"WebAclId")
            Parser
  (Maybe Text
   -> Maybe AwsCloudFrontDistributionViewerCertificate
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionOrigins
   -> Maybe AwsCloudFrontDistributionLogging
   -> Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsCloudFrontDistributionViewerCertificate
      -> Maybe Text
      -> Maybe AwsCloudFrontDistributionOrigins
      -> Maybe AwsCloudFrontDistributionLogging
      -> Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LastModifiedTime")
            Parser
  (Maybe AwsCloudFrontDistributionViewerCertificate
   -> Maybe Text
   -> Maybe AwsCloudFrontDistributionOrigins
   -> Maybe AwsCloudFrontDistributionLogging
   -> Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe AwsCloudFrontDistributionViewerCertificate)
-> Parser
     (Maybe Text
      -> Maybe AwsCloudFrontDistributionOrigins
      -> Maybe AwsCloudFrontDistributionLogging
      -> Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser (Maybe AwsCloudFrontDistributionViewerCertificate)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ViewerCertificate")
            Parser
  (Maybe Text
   -> Maybe AwsCloudFrontDistributionOrigins
   -> Maybe AwsCloudFrontDistributionLogging
   -> Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe Text)
-> Parser
     (Maybe AwsCloudFrontDistributionOrigins
      -> Maybe AwsCloudFrontDistributionLogging
      -> Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DomainName")
            Parser
  (Maybe AwsCloudFrontDistributionOrigins
   -> Maybe AwsCloudFrontDistributionLogging
   -> Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe AwsCloudFrontDistributionOrigins)
-> Parser
     (Maybe AwsCloudFrontDistributionLogging
      -> Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsCloudFrontDistributionOrigins)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Origins")
            Parser
  (Maybe AwsCloudFrontDistributionLogging
   -> Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe AwsCloudFrontDistributionLogging)
-> Parser
     (Maybe AwsCloudFrontDistributionCacheBehaviors
      -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AwsCloudFrontDistributionLogging)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Logging")
            Parser
  (Maybe AwsCloudFrontDistributionCacheBehaviors
   -> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe AwsCloudFrontDistributionCacheBehaviors)
-> Parser
     (Maybe AwsCloudFrontDistributionDefaultCacheBehavior
      -> AwsCloudFrontDistributionDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text -> Parser (Maybe AwsCloudFrontDistributionCacheBehaviors)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CacheBehaviors")
            Parser
  (Maybe AwsCloudFrontDistributionDefaultCacheBehavior
   -> AwsCloudFrontDistributionDetails)
-> Parser (Maybe AwsCloudFrontDistributionDefaultCacheBehavior)
-> Parser AwsCloudFrontDistributionDetails
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser (Maybe AwsCloudFrontDistributionDefaultCacheBehavior)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DefaultCacheBehavior")
      )

instance
  Prelude.Hashable
    AwsCloudFrontDistributionDetails

instance
  Prelude.NFData
    AwsCloudFrontDistributionDetails

instance Core.ToJSON AwsCloudFrontDistributionDetails where
  toJSON :: AwsCloudFrontDistributionDetails -> Value
toJSON AwsCloudFrontDistributionDetails' {Maybe Text
Maybe AwsCloudFrontDistributionCacheBehaviors
Maybe AwsCloudFrontDistributionDefaultCacheBehavior
Maybe AwsCloudFrontDistributionLogging
Maybe AwsCloudFrontDistributionOriginGroups
Maybe AwsCloudFrontDistributionOrigins
Maybe AwsCloudFrontDistributionViewerCertificate
defaultCacheBehavior :: Maybe AwsCloudFrontDistributionDefaultCacheBehavior
cacheBehaviors :: Maybe AwsCloudFrontDistributionCacheBehaviors
logging :: Maybe AwsCloudFrontDistributionLogging
origins :: Maybe AwsCloudFrontDistributionOrigins
domainName :: Maybe Text
viewerCertificate :: Maybe AwsCloudFrontDistributionViewerCertificate
lastModifiedTime :: Maybe Text
webAclId :: Maybe Text
defaultRootObject :: Maybe Text
originGroups :: Maybe AwsCloudFrontDistributionOriginGroups
eTag :: Maybe Text
status :: Maybe Text
$sel:defaultCacheBehavior:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
$sel:cacheBehaviors:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionCacheBehaviors
$sel:logging:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionLogging
$sel:origins:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionOrigins
$sel:domainName:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
$sel:viewerCertificate:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionViewerCertificate
$sel:lastModifiedTime:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
$sel:webAclId:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
$sel:defaultRootObject:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
$sel:originGroups:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails
-> Maybe AwsCloudFrontDistributionOriginGroups
$sel:eTag:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
$sel:status:AwsCloudFrontDistributionDetails' :: AwsCloudFrontDistributionDetails -> Maybe Text
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"Status" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
status,
            (Text
"ETag" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
eTag,
            (Text
"OriginGroups" Text -> AwsCloudFrontDistributionOriginGroups -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsCloudFrontDistributionOriginGroups -> Pair)
-> Maybe AwsCloudFrontDistributionOriginGroups -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsCloudFrontDistributionOriginGroups
originGroups,
            (Text
"DefaultRootObject" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
defaultRootObject,
            (Text
"WebAclId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
webAclId,
            (Text
"LastModifiedTime" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
lastModifiedTime,
            (Text
"ViewerCertificate" Text -> AwsCloudFrontDistributionViewerCertificate -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AwsCloudFrontDistributionViewerCertificate -> Pair)
-> Maybe AwsCloudFrontDistributionViewerCertificate -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsCloudFrontDistributionViewerCertificate
viewerCertificate,
            (Text
"DomainName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
domainName,
            (Text
"Origins" Text -> AwsCloudFrontDistributionOrigins -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsCloudFrontDistributionOrigins -> Pair)
-> Maybe AwsCloudFrontDistributionOrigins -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsCloudFrontDistributionOrigins
origins,
            (Text
"Logging" Text -> AwsCloudFrontDistributionLogging -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsCloudFrontDistributionLogging -> Pair)
-> Maybe AwsCloudFrontDistributionLogging -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsCloudFrontDistributionLogging
logging,
            (Text
"CacheBehaviors" Text -> AwsCloudFrontDistributionCacheBehaviors -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AwsCloudFrontDistributionCacheBehaviors -> Pair)
-> Maybe AwsCloudFrontDistributionCacheBehaviors -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsCloudFrontDistributionCacheBehaviors
cacheBehaviors,
            (Text
"DefaultCacheBehavior" Text -> AwsCloudFrontDistributionDefaultCacheBehavior -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (AwsCloudFrontDistributionDefaultCacheBehavior -> Pair)
-> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AwsCloudFrontDistributionDefaultCacheBehavior
defaultCacheBehavior
          ]
      )