{-# 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.DistributionSummary
-- 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.CloudFront.Types.DistributionSummary where

import Amazonka.CloudFront.Types.AliasICPRecordal
import Amazonka.CloudFront.Types.Aliases
import Amazonka.CloudFront.Types.CacheBehaviors
import Amazonka.CloudFront.Types.CustomErrorResponses
import Amazonka.CloudFront.Types.DefaultCacheBehavior
import Amazonka.CloudFront.Types.HttpVersion
import Amazonka.CloudFront.Types.OriginGroups
import Amazonka.CloudFront.Types.Origins
import Amazonka.CloudFront.Types.PriceClass
import Amazonka.CloudFront.Types.Restrictions
import Amazonka.CloudFront.Types.ViewerCertificate
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | A summary of the information about a CloudFront distribution.
--
-- /See:/ 'newDistributionSummary' smart constructor.
data DistributionSummary = DistributionSummary'
  { -- | A complex type that contains information about origin groups for this
    -- distribution.
    DistributionSummary -> Maybe OriginGroups
originGroups :: Prelude.Maybe OriginGroups,
    -- | 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/.
    DistributionSummary -> Maybe [AliasICPRecordal]
aliasICPRecordals :: Prelude.Maybe [AliasICPRecordal],
    -- | The identifier for the distribution. For example: @EDFDVBD632BHDS5@.
    DistributionSummary -> Text
id :: Prelude.Text,
    -- | The ARN (Amazon Resource Name) for the distribution. For example:
    -- @arn:aws:cloudfront::123456789012:distribution\/EDFDVBD632BHDS5@, where
    -- @123456789012@ is your account ID.
    DistributionSummary -> Text
arn :: Prelude.Text,
    -- | The current status of the distribution. When the status is @Deployed@,
    -- the distribution\'s information is propagated to all CloudFront edge
    -- locations.
    DistributionSummary -> Text
status :: Prelude.Text,
    -- | The date and time the distribution was last modified.
    DistributionSummary -> ISO8601
lastModifiedTime :: Core.ISO8601,
    -- | The domain name that corresponds to the distribution, for example,
    -- @d111111abcdef8.cloudfront.net@.
    DistributionSummary -> Text
domainName :: Prelude.Text,
    -- | A complex type that contains information about CNAMEs (alternate domain
    -- names), if any, for this distribution.
    DistributionSummary -> Aliases
aliases :: Aliases,
    -- | A complex type that contains information about origins for this
    -- distribution.
    DistributionSummary -> Origins
origins :: Origins,
    -- | A complex type that describes the default cache behavior if you don\'t
    -- specify a @CacheBehavior@ element or if files don\'t match any of the
    -- values of @PathPattern@ in @CacheBehavior@ elements. You must create
    -- exactly one default cache behavior.
    DistributionSummary -> DefaultCacheBehavior
defaultCacheBehavior :: DefaultCacheBehavior,
    -- | A complex type that contains zero or more @CacheBehavior@ elements.
    DistributionSummary -> CacheBehaviors
cacheBehaviors :: CacheBehaviors,
    -- | A complex type that contains zero or more @CustomErrorResponses@
    -- elements.
    DistributionSummary -> CustomErrorResponses
customErrorResponses :: CustomErrorResponses,
    -- | The comment originally specified when this distribution was created.
    DistributionSummary -> Text
comment :: Prelude.Text,
    -- | A complex type that contains information about price class for this
    -- streaming distribution.
    DistributionSummary -> PriceClass
priceClass :: PriceClass,
    -- | Whether the distribution is enabled to accept user requests for content.
    DistributionSummary -> Bool
enabled :: Prelude.Bool,
    -- | A complex type that determines the distribution’s SSL\/TLS configuration
    -- for communicating with viewers.
    DistributionSummary -> ViewerCertificate
viewerCertificate :: ViewerCertificate,
    -- | A complex type that identifies ways in which you want to restrict
    -- distribution of your content.
    DistributionSummary -> Restrictions
restrictions :: Restrictions,
    -- | The Web ACL Id (if any) associated with the distribution.
    DistributionSummary -> Text
webACLId :: Prelude.Text,
    -- | Specify the maximum HTTP version that you want viewers to use to
    -- communicate with CloudFront. The default value for new web distributions
    -- is @http2@. Viewers that don\'t support @HTTP\/2@ will automatically use
    -- an earlier version.
    DistributionSummary -> HttpVersion
httpVersion :: HttpVersion,
    -- | Whether CloudFront responds to IPv6 DNS requests with an IPv6 address
    -- for your distribution.
    DistributionSummary -> Bool
isIPV6Enabled :: Prelude.Bool
  }
  deriving (DistributionSummary -> DistributionSummary -> Bool
(DistributionSummary -> DistributionSummary -> Bool)
-> (DistributionSummary -> DistributionSummary -> Bool)
-> Eq DistributionSummary
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DistributionSummary -> DistributionSummary -> Bool
$c/= :: DistributionSummary -> DistributionSummary -> Bool
== :: DistributionSummary -> DistributionSummary -> Bool
$c== :: DistributionSummary -> DistributionSummary -> Bool
Prelude.Eq, ReadPrec [DistributionSummary]
ReadPrec DistributionSummary
Int -> ReadS DistributionSummary
ReadS [DistributionSummary]
(Int -> ReadS DistributionSummary)
-> ReadS [DistributionSummary]
-> ReadPrec DistributionSummary
-> ReadPrec [DistributionSummary]
-> Read DistributionSummary
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DistributionSummary]
$creadListPrec :: ReadPrec [DistributionSummary]
readPrec :: ReadPrec DistributionSummary
$creadPrec :: ReadPrec DistributionSummary
readList :: ReadS [DistributionSummary]
$creadList :: ReadS [DistributionSummary]
readsPrec :: Int -> ReadS DistributionSummary
$creadsPrec :: Int -> ReadS DistributionSummary
Prelude.Read, Int -> DistributionSummary -> ShowS
[DistributionSummary] -> ShowS
DistributionSummary -> String
(Int -> DistributionSummary -> ShowS)
-> (DistributionSummary -> String)
-> ([DistributionSummary] -> ShowS)
-> Show DistributionSummary
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DistributionSummary] -> ShowS
$cshowList :: [DistributionSummary] -> ShowS
show :: DistributionSummary -> String
$cshow :: DistributionSummary -> String
showsPrec :: Int -> DistributionSummary -> ShowS
$cshowsPrec :: Int -> DistributionSummary -> ShowS
Prelude.Show, (forall x. DistributionSummary -> Rep DistributionSummary x)
-> (forall x. Rep DistributionSummary x -> DistributionSummary)
-> Generic DistributionSummary
forall x. Rep DistributionSummary x -> DistributionSummary
forall x. DistributionSummary -> Rep DistributionSummary x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DistributionSummary x -> DistributionSummary
$cfrom :: forall x. DistributionSummary -> Rep DistributionSummary x
Prelude.Generic)

-- |
-- Create a value of 'DistributionSummary' 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:
--
-- 'originGroups', 'distributionSummary_originGroups' - A complex type that contains information about origin groups for this
-- distribution.
--
-- 'aliasICPRecordals', 'distributionSummary_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', 'distributionSummary_id' - The identifier for the distribution. For example: @EDFDVBD632BHDS5@.
--
-- 'arn', 'distributionSummary_arn' - The ARN (Amazon Resource Name) for the distribution. For example:
-- @arn:aws:cloudfront::123456789012:distribution\/EDFDVBD632BHDS5@, where
-- @123456789012@ is your account ID.
--
-- 'status', 'distributionSummary_status' - The current status of the distribution. When the status is @Deployed@,
-- the distribution\'s information is propagated to all CloudFront edge
-- locations.
--
-- 'lastModifiedTime', 'distributionSummary_lastModifiedTime' - The date and time the distribution was last modified.
--
-- 'domainName', 'distributionSummary_domainName' - The domain name that corresponds to the distribution, for example,
-- @d111111abcdef8.cloudfront.net@.
--
-- 'aliases', 'distributionSummary_aliases' - A complex type that contains information about CNAMEs (alternate domain
-- names), if any, for this distribution.
--
-- 'origins', 'distributionSummary_origins' - A complex type that contains information about origins for this
-- distribution.
--
-- 'defaultCacheBehavior', 'distributionSummary_defaultCacheBehavior' - A complex type that describes the default cache behavior if you don\'t
-- specify a @CacheBehavior@ element or if files don\'t match any of the
-- values of @PathPattern@ in @CacheBehavior@ elements. You must create
-- exactly one default cache behavior.
--
-- 'cacheBehaviors', 'distributionSummary_cacheBehaviors' - A complex type that contains zero or more @CacheBehavior@ elements.
--
-- 'customErrorResponses', 'distributionSummary_customErrorResponses' - A complex type that contains zero or more @CustomErrorResponses@
-- elements.
--
-- 'comment', 'distributionSummary_comment' - The comment originally specified when this distribution was created.
--
-- 'priceClass', 'distributionSummary_priceClass' - A complex type that contains information about price class for this
-- streaming distribution.
--
-- 'enabled', 'distributionSummary_enabled' - Whether the distribution is enabled to accept user requests for content.
--
-- 'viewerCertificate', 'distributionSummary_viewerCertificate' - A complex type that determines the distribution’s SSL\/TLS configuration
-- for communicating with viewers.
--
-- 'restrictions', 'distributionSummary_restrictions' - A complex type that identifies ways in which you want to restrict
-- distribution of your content.
--
-- 'webACLId', 'distributionSummary_webACLId' - The Web ACL Id (if any) associated with the distribution.
--
-- 'httpVersion', 'distributionSummary_httpVersion' - Specify the maximum HTTP version that you want viewers to use to
-- communicate with CloudFront. The default value for new web distributions
-- is @http2@. Viewers that don\'t support @HTTP\/2@ will automatically use
-- an earlier version.
--
-- 'isIPV6Enabled', 'distributionSummary_isIPV6Enabled' - Whether CloudFront responds to IPv6 DNS requests with an IPv6 address
-- for your distribution.
newDistributionSummary ::
  -- | 'id'
  Prelude.Text ->
  -- | 'arn'
  Prelude.Text ->
  -- | 'status'
  Prelude.Text ->
  -- | 'lastModifiedTime'
  Prelude.UTCTime ->
  -- | 'domainName'
  Prelude.Text ->
  -- | 'aliases'
  Aliases ->
  -- | 'origins'
  Origins ->
  -- | 'defaultCacheBehavior'
  DefaultCacheBehavior ->
  -- | 'cacheBehaviors'
  CacheBehaviors ->
  -- | 'customErrorResponses'
  CustomErrorResponses ->
  -- | 'comment'
  Prelude.Text ->
  -- | 'priceClass'
  PriceClass ->
  -- | 'enabled'
  Prelude.Bool ->
  -- | 'viewerCertificate'
  ViewerCertificate ->
  -- | 'restrictions'
  Restrictions ->
  -- | 'webACLId'
  Prelude.Text ->
  -- | 'httpVersion'
  HttpVersion ->
  -- | 'isIPV6Enabled'
  Prelude.Bool ->
  DistributionSummary
newDistributionSummary :: Text
-> Text
-> Text
-> UTCTime
-> Text
-> Aliases
-> Origins
-> DefaultCacheBehavior
-> CacheBehaviors
-> CustomErrorResponses
-> Text
-> PriceClass
-> Bool
-> ViewerCertificate
-> Restrictions
-> Text
-> HttpVersion
-> Bool
-> DistributionSummary
newDistributionSummary
  Text
pId_
  Text
pARN_
  Text
pStatus_
  UTCTime
pLastModifiedTime_
  Text
pDomainName_
  Aliases
pAliases_
  Origins
pOrigins_
  DefaultCacheBehavior
pDefaultCacheBehavior_
  CacheBehaviors
pCacheBehaviors_
  CustomErrorResponses
pCustomErrorResponses_
  Text
pComment_
  PriceClass
pPriceClass_
  Bool
pEnabled_
  ViewerCertificate
pViewerCertificate_
  Restrictions
pRestrictions_
  Text
pWebACLId_
  HttpVersion
pHttpVersion_
  Bool
pIsIPV6Enabled_ =
    DistributionSummary' :: Maybe OriginGroups
-> Maybe [AliasICPRecordal]
-> Text
-> Text
-> Text
-> ISO8601
-> Text
-> Aliases
-> Origins
-> DefaultCacheBehavior
-> CacheBehaviors
-> CustomErrorResponses
-> Text
-> PriceClass
-> Bool
-> ViewerCertificate
-> Restrictions
-> Text
-> HttpVersion
-> Bool
-> DistributionSummary
DistributionSummary'
      { $sel:originGroups:DistributionSummary' :: Maybe OriginGroups
originGroups =
          Maybe OriginGroups
forall a. Maybe a
Prelude.Nothing,
        $sel:aliasICPRecordals:DistributionSummary' :: Maybe [AliasICPRecordal]
aliasICPRecordals = Maybe [AliasICPRecordal]
forall a. Maybe a
Prelude.Nothing,
        $sel:id:DistributionSummary' :: Text
id = Text
pId_,
        $sel:arn:DistributionSummary' :: Text
arn = Text
pARN_,
        $sel:status:DistributionSummary' :: Text
status = Text
pStatus_,
        $sel:lastModifiedTime:DistributionSummary' :: ISO8601
lastModifiedTime =
          Tagged UTCTime (Identity UTCTime)
-> Tagged ISO8601 (Identity ISO8601)
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time (Tagged UTCTime (Identity UTCTime)
 -> Tagged ISO8601 (Identity ISO8601))
-> UTCTime -> ISO8601
forall t b. AReview t b -> b -> t
Lens.# UTCTime
pLastModifiedTime_,
        $sel:domainName:DistributionSummary' :: Text
domainName = Text
pDomainName_,
        $sel:aliases:DistributionSummary' :: Aliases
aliases = Aliases
pAliases_,
        $sel:origins:DistributionSummary' :: Origins
origins = Origins
pOrigins_,
        $sel:defaultCacheBehavior:DistributionSummary' :: DefaultCacheBehavior
defaultCacheBehavior = DefaultCacheBehavior
pDefaultCacheBehavior_,
        $sel:cacheBehaviors:DistributionSummary' :: CacheBehaviors
cacheBehaviors = CacheBehaviors
pCacheBehaviors_,
        $sel:customErrorResponses:DistributionSummary' :: CustomErrorResponses
customErrorResponses = CustomErrorResponses
pCustomErrorResponses_,
        $sel:comment:DistributionSummary' :: Text
comment = Text
pComment_,
        $sel:priceClass:DistributionSummary' :: PriceClass
priceClass = PriceClass
pPriceClass_,
        $sel:enabled:DistributionSummary' :: Bool
enabled = Bool
pEnabled_,
        $sel:viewerCertificate:DistributionSummary' :: ViewerCertificate
viewerCertificate = ViewerCertificate
pViewerCertificate_,
        $sel:restrictions:DistributionSummary' :: Restrictions
restrictions = Restrictions
pRestrictions_,
        $sel:webACLId:DistributionSummary' :: Text
webACLId = Text
pWebACLId_,
        $sel:httpVersion:DistributionSummary' :: HttpVersion
httpVersion = HttpVersion
pHttpVersion_,
        $sel:isIPV6Enabled:DistributionSummary' :: Bool
isIPV6Enabled = Bool
pIsIPV6Enabled_
      }

-- | A complex type that contains information about origin groups for this
-- distribution.
distributionSummary_originGroups :: Lens.Lens' DistributionSummary (Prelude.Maybe OriginGroups)
distributionSummary_originGroups :: (Maybe OriginGroups -> f (Maybe OriginGroups))
-> DistributionSummary -> f DistributionSummary
distributionSummary_originGroups = (DistributionSummary -> Maybe OriginGroups)
-> (DistributionSummary
    -> Maybe OriginGroups -> DistributionSummary)
-> Lens
     DistributionSummary
     DistributionSummary
     (Maybe OriginGroups)
     (Maybe OriginGroups)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Maybe OriginGroups
originGroups :: Maybe OriginGroups
$sel:originGroups:DistributionSummary' :: DistributionSummary -> Maybe OriginGroups
originGroups} -> Maybe OriginGroups
originGroups) (\s :: DistributionSummary
s@DistributionSummary' {} Maybe OriginGroups
a -> DistributionSummary
s {$sel:originGroups:DistributionSummary' :: Maybe OriginGroups
originGroups = Maybe OriginGroups
a} :: DistributionSummary)

-- | 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/.
distributionSummary_aliasICPRecordals :: Lens.Lens' DistributionSummary (Prelude.Maybe [AliasICPRecordal])
distributionSummary_aliasICPRecordals :: (Maybe [AliasICPRecordal] -> f (Maybe [AliasICPRecordal]))
-> DistributionSummary -> f DistributionSummary
distributionSummary_aliasICPRecordals = (DistributionSummary -> Maybe [AliasICPRecordal])
-> (DistributionSummary
    -> Maybe [AliasICPRecordal] -> DistributionSummary)
-> Lens
     DistributionSummary
     DistributionSummary
     (Maybe [AliasICPRecordal])
     (Maybe [AliasICPRecordal])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Maybe [AliasICPRecordal]
aliasICPRecordals :: Maybe [AliasICPRecordal]
$sel:aliasICPRecordals:DistributionSummary' :: DistributionSummary -> Maybe [AliasICPRecordal]
aliasICPRecordals} -> Maybe [AliasICPRecordal]
aliasICPRecordals) (\s :: DistributionSummary
s@DistributionSummary' {} Maybe [AliasICPRecordal]
a -> DistributionSummary
s {$sel:aliasICPRecordals:DistributionSummary' :: Maybe [AliasICPRecordal]
aliasICPRecordals = Maybe [AliasICPRecordal]
a} :: DistributionSummary) ((Maybe [AliasICPRecordal] -> f (Maybe [AliasICPRecordal]))
 -> DistributionSummary -> f DistributionSummary)
-> ((Maybe [AliasICPRecordal] -> f (Maybe [AliasICPRecordal]))
    -> Maybe [AliasICPRecordal] -> f (Maybe [AliasICPRecordal]))
-> (Maybe [AliasICPRecordal] -> f (Maybe [AliasICPRecordal]))
-> DistributionSummary
-> f DistributionSummary
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AliasICPRecordal]
  [AliasICPRecordal]
  [AliasICPRecordal]
  [AliasICPRecordal]
-> Iso
     (Maybe [AliasICPRecordal])
     (Maybe [AliasICPRecordal])
     (Maybe [AliasICPRecordal])
     (Maybe [AliasICPRecordal])
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 AnIso
  [AliasICPRecordal]
  [AliasICPRecordal]
  [AliasICPRecordal]
  [AliasICPRecordal]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The identifier for the distribution. For example: @EDFDVBD632BHDS5@.
distributionSummary_id :: Lens.Lens' DistributionSummary Prelude.Text
distributionSummary_id :: (Text -> f Text) -> DistributionSummary -> f DistributionSummary
distributionSummary_id = (DistributionSummary -> Text)
-> (DistributionSummary -> Text -> DistributionSummary)
-> Lens DistributionSummary DistributionSummary Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Text
id :: Text
$sel:id:DistributionSummary' :: DistributionSummary -> Text
id} -> Text
id) (\s :: DistributionSummary
s@DistributionSummary' {} Text
a -> DistributionSummary
s {$sel:id:DistributionSummary' :: Text
id = Text
a} :: DistributionSummary)

-- | The ARN (Amazon Resource Name) for the distribution. For example:
-- @arn:aws:cloudfront::123456789012:distribution\/EDFDVBD632BHDS5@, where
-- @123456789012@ is your account ID.
distributionSummary_arn :: Lens.Lens' DistributionSummary Prelude.Text
distributionSummary_arn :: (Text -> f Text) -> DistributionSummary -> f DistributionSummary
distributionSummary_arn = (DistributionSummary -> Text)
-> (DistributionSummary -> Text -> DistributionSummary)
-> Lens DistributionSummary DistributionSummary Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Text
arn :: Text
$sel:arn:DistributionSummary' :: DistributionSummary -> Text
arn} -> Text
arn) (\s :: DistributionSummary
s@DistributionSummary' {} Text
a -> DistributionSummary
s {$sel:arn:DistributionSummary' :: Text
arn = Text
a} :: DistributionSummary)

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

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

-- | The domain name that corresponds to the distribution, for example,
-- @d111111abcdef8.cloudfront.net@.
distributionSummary_domainName :: Lens.Lens' DistributionSummary Prelude.Text
distributionSummary_domainName :: (Text -> f Text) -> DistributionSummary -> f DistributionSummary
distributionSummary_domainName = (DistributionSummary -> Text)
-> (DistributionSummary -> Text -> DistributionSummary)
-> Lens DistributionSummary DistributionSummary Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Text
domainName :: Text
$sel:domainName:DistributionSummary' :: DistributionSummary -> Text
domainName} -> Text
domainName) (\s :: DistributionSummary
s@DistributionSummary' {} Text
a -> DistributionSummary
s {$sel:domainName:DistributionSummary' :: Text
domainName = Text
a} :: DistributionSummary)

-- | A complex type that contains information about CNAMEs (alternate domain
-- names), if any, for this distribution.
distributionSummary_aliases :: Lens.Lens' DistributionSummary Aliases
distributionSummary_aliases :: (Aliases -> f Aliases)
-> DistributionSummary -> f DistributionSummary
distributionSummary_aliases = (DistributionSummary -> Aliases)
-> (DistributionSummary -> Aliases -> DistributionSummary)
-> Lens DistributionSummary DistributionSummary Aliases Aliases
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Aliases
aliases :: Aliases
$sel:aliases:DistributionSummary' :: DistributionSummary -> Aliases
aliases} -> Aliases
aliases) (\s :: DistributionSummary
s@DistributionSummary' {} Aliases
a -> DistributionSummary
s {$sel:aliases:DistributionSummary' :: Aliases
aliases = Aliases
a} :: DistributionSummary)

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

-- | A complex type that describes the default cache behavior if you don\'t
-- specify a @CacheBehavior@ element or if files don\'t match any of the
-- values of @PathPattern@ in @CacheBehavior@ elements. You must create
-- exactly one default cache behavior.
distributionSummary_defaultCacheBehavior :: Lens.Lens' DistributionSummary DefaultCacheBehavior
distributionSummary_defaultCacheBehavior :: (DefaultCacheBehavior -> f DefaultCacheBehavior)
-> DistributionSummary -> f DistributionSummary
distributionSummary_defaultCacheBehavior = (DistributionSummary -> DefaultCacheBehavior)
-> (DistributionSummary
    -> DefaultCacheBehavior -> DistributionSummary)
-> Lens
     DistributionSummary
     DistributionSummary
     DefaultCacheBehavior
     DefaultCacheBehavior
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {DefaultCacheBehavior
defaultCacheBehavior :: DefaultCacheBehavior
$sel:defaultCacheBehavior:DistributionSummary' :: DistributionSummary -> DefaultCacheBehavior
defaultCacheBehavior} -> DefaultCacheBehavior
defaultCacheBehavior) (\s :: DistributionSummary
s@DistributionSummary' {} DefaultCacheBehavior
a -> DistributionSummary
s {$sel:defaultCacheBehavior:DistributionSummary' :: DefaultCacheBehavior
defaultCacheBehavior = DefaultCacheBehavior
a} :: DistributionSummary)

-- | A complex type that contains zero or more @CacheBehavior@ elements.
distributionSummary_cacheBehaviors :: Lens.Lens' DistributionSummary CacheBehaviors
distributionSummary_cacheBehaviors :: (CacheBehaviors -> f CacheBehaviors)
-> DistributionSummary -> f DistributionSummary
distributionSummary_cacheBehaviors = (DistributionSummary -> CacheBehaviors)
-> (DistributionSummary -> CacheBehaviors -> DistributionSummary)
-> Lens
     DistributionSummary
     DistributionSummary
     CacheBehaviors
     CacheBehaviors
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {CacheBehaviors
cacheBehaviors :: CacheBehaviors
$sel:cacheBehaviors:DistributionSummary' :: DistributionSummary -> CacheBehaviors
cacheBehaviors} -> CacheBehaviors
cacheBehaviors) (\s :: DistributionSummary
s@DistributionSummary' {} CacheBehaviors
a -> DistributionSummary
s {$sel:cacheBehaviors:DistributionSummary' :: CacheBehaviors
cacheBehaviors = CacheBehaviors
a} :: DistributionSummary)

-- | A complex type that contains zero or more @CustomErrorResponses@
-- elements.
distributionSummary_customErrorResponses :: Lens.Lens' DistributionSummary CustomErrorResponses
distributionSummary_customErrorResponses :: (CustomErrorResponses -> f CustomErrorResponses)
-> DistributionSummary -> f DistributionSummary
distributionSummary_customErrorResponses = (DistributionSummary -> CustomErrorResponses)
-> (DistributionSummary
    -> CustomErrorResponses -> DistributionSummary)
-> Lens
     DistributionSummary
     DistributionSummary
     CustomErrorResponses
     CustomErrorResponses
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {CustomErrorResponses
customErrorResponses :: CustomErrorResponses
$sel:customErrorResponses:DistributionSummary' :: DistributionSummary -> CustomErrorResponses
customErrorResponses} -> CustomErrorResponses
customErrorResponses) (\s :: DistributionSummary
s@DistributionSummary' {} CustomErrorResponses
a -> DistributionSummary
s {$sel:customErrorResponses:DistributionSummary' :: CustomErrorResponses
customErrorResponses = CustomErrorResponses
a} :: DistributionSummary)

-- | The comment originally specified when this distribution was created.
distributionSummary_comment :: Lens.Lens' DistributionSummary Prelude.Text
distributionSummary_comment :: (Text -> f Text) -> DistributionSummary -> f DistributionSummary
distributionSummary_comment = (DistributionSummary -> Text)
-> (DistributionSummary -> Text -> DistributionSummary)
-> Lens DistributionSummary DistributionSummary Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Text
comment :: Text
$sel:comment:DistributionSummary' :: DistributionSummary -> Text
comment} -> Text
comment) (\s :: DistributionSummary
s@DistributionSummary' {} Text
a -> DistributionSummary
s {$sel:comment:DistributionSummary' :: Text
comment = Text
a} :: DistributionSummary)

-- | A complex type that contains information about price class for this
-- streaming distribution.
distributionSummary_priceClass :: Lens.Lens' DistributionSummary PriceClass
distributionSummary_priceClass :: (PriceClass -> f PriceClass)
-> DistributionSummary -> f DistributionSummary
distributionSummary_priceClass = (DistributionSummary -> PriceClass)
-> (DistributionSummary -> PriceClass -> DistributionSummary)
-> Lens
     DistributionSummary DistributionSummary PriceClass PriceClass
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {PriceClass
priceClass :: PriceClass
$sel:priceClass:DistributionSummary' :: DistributionSummary -> PriceClass
priceClass} -> PriceClass
priceClass) (\s :: DistributionSummary
s@DistributionSummary' {} PriceClass
a -> DistributionSummary
s {$sel:priceClass:DistributionSummary' :: PriceClass
priceClass = PriceClass
a} :: DistributionSummary)

-- | Whether the distribution is enabled to accept user requests for content.
distributionSummary_enabled :: Lens.Lens' DistributionSummary Prelude.Bool
distributionSummary_enabled :: (Bool -> f Bool) -> DistributionSummary -> f DistributionSummary
distributionSummary_enabled = (DistributionSummary -> Bool)
-> (DistributionSummary -> Bool -> DistributionSummary)
-> Lens DistributionSummary DistributionSummary Bool Bool
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Bool
enabled :: Bool
$sel:enabled:DistributionSummary' :: DistributionSummary -> Bool
enabled} -> Bool
enabled) (\s :: DistributionSummary
s@DistributionSummary' {} Bool
a -> DistributionSummary
s {$sel:enabled:DistributionSummary' :: Bool
enabled = Bool
a} :: DistributionSummary)

-- | A complex type that determines the distribution’s SSL\/TLS configuration
-- for communicating with viewers.
distributionSummary_viewerCertificate :: Lens.Lens' DistributionSummary ViewerCertificate
distributionSummary_viewerCertificate :: (ViewerCertificate -> f ViewerCertificate)
-> DistributionSummary -> f DistributionSummary
distributionSummary_viewerCertificate = (DistributionSummary -> ViewerCertificate)
-> (DistributionSummary
    -> ViewerCertificate -> DistributionSummary)
-> Lens
     DistributionSummary
     DistributionSummary
     ViewerCertificate
     ViewerCertificate
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {ViewerCertificate
viewerCertificate :: ViewerCertificate
$sel:viewerCertificate:DistributionSummary' :: DistributionSummary -> ViewerCertificate
viewerCertificate} -> ViewerCertificate
viewerCertificate) (\s :: DistributionSummary
s@DistributionSummary' {} ViewerCertificate
a -> DistributionSummary
s {$sel:viewerCertificate:DistributionSummary' :: ViewerCertificate
viewerCertificate = ViewerCertificate
a} :: DistributionSummary)

-- | A complex type that identifies ways in which you want to restrict
-- distribution of your content.
distributionSummary_restrictions :: Lens.Lens' DistributionSummary Restrictions
distributionSummary_restrictions :: (Restrictions -> f Restrictions)
-> DistributionSummary -> f DistributionSummary
distributionSummary_restrictions = (DistributionSummary -> Restrictions)
-> (DistributionSummary -> Restrictions -> DistributionSummary)
-> Lens
     DistributionSummary DistributionSummary Restrictions Restrictions
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Restrictions
restrictions :: Restrictions
$sel:restrictions:DistributionSummary' :: DistributionSummary -> Restrictions
restrictions} -> Restrictions
restrictions) (\s :: DistributionSummary
s@DistributionSummary' {} Restrictions
a -> DistributionSummary
s {$sel:restrictions:DistributionSummary' :: Restrictions
restrictions = Restrictions
a} :: DistributionSummary)

-- | The Web ACL Id (if any) associated with the distribution.
distributionSummary_webACLId :: Lens.Lens' DistributionSummary Prelude.Text
distributionSummary_webACLId :: (Text -> f Text) -> DistributionSummary -> f DistributionSummary
distributionSummary_webACLId = (DistributionSummary -> Text)
-> (DistributionSummary -> Text -> DistributionSummary)
-> Lens DistributionSummary DistributionSummary Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Text
webACLId :: Text
$sel:webACLId:DistributionSummary' :: DistributionSummary -> Text
webACLId} -> Text
webACLId) (\s :: DistributionSummary
s@DistributionSummary' {} Text
a -> DistributionSummary
s {$sel:webACLId:DistributionSummary' :: Text
webACLId = Text
a} :: DistributionSummary)

-- | Specify the maximum HTTP version that you want viewers to use to
-- communicate with CloudFront. The default value for new web distributions
-- is @http2@. Viewers that don\'t support @HTTP\/2@ will automatically use
-- an earlier version.
distributionSummary_httpVersion :: Lens.Lens' DistributionSummary HttpVersion
distributionSummary_httpVersion :: (HttpVersion -> f HttpVersion)
-> DistributionSummary -> f DistributionSummary
distributionSummary_httpVersion = (DistributionSummary -> HttpVersion)
-> (DistributionSummary -> HttpVersion -> DistributionSummary)
-> Lens
     DistributionSummary DistributionSummary HttpVersion HttpVersion
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {HttpVersion
httpVersion :: HttpVersion
$sel:httpVersion:DistributionSummary' :: DistributionSummary -> HttpVersion
httpVersion} -> HttpVersion
httpVersion) (\s :: DistributionSummary
s@DistributionSummary' {} HttpVersion
a -> DistributionSummary
s {$sel:httpVersion:DistributionSummary' :: HttpVersion
httpVersion = HttpVersion
a} :: DistributionSummary)

-- | Whether CloudFront responds to IPv6 DNS requests with an IPv6 address
-- for your distribution.
distributionSummary_isIPV6Enabled :: Lens.Lens' DistributionSummary Prelude.Bool
distributionSummary_isIPV6Enabled :: (Bool -> f Bool) -> DistributionSummary -> f DistributionSummary
distributionSummary_isIPV6Enabled = (DistributionSummary -> Bool)
-> (DistributionSummary -> Bool -> DistributionSummary)
-> Lens DistributionSummary DistributionSummary Bool Bool
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DistributionSummary' {Bool
isIPV6Enabled :: Bool
$sel:isIPV6Enabled:DistributionSummary' :: DistributionSummary -> Bool
isIPV6Enabled} -> Bool
isIPV6Enabled) (\s :: DistributionSummary
s@DistributionSummary' {} Bool
a -> DistributionSummary
s {$sel:isIPV6Enabled:DistributionSummary' :: Bool
isIPV6Enabled = Bool
a} :: DistributionSummary)

instance Core.FromXML DistributionSummary where
  parseXML :: [Node] -> Either String DistributionSummary
parseXML [Node]
x =
    Maybe OriginGroups
-> Maybe [AliasICPRecordal]
-> Text
-> Text
-> Text
-> ISO8601
-> Text
-> Aliases
-> Origins
-> DefaultCacheBehavior
-> CacheBehaviors
-> CustomErrorResponses
-> Text
-> PriceClass
-> Bool
-> ViewerCertificate
-> Restrictions
-> Text
-> HttpVersion
-> Bool
-> DistributionSummary
DistributionSummary'
      (Maybe OriginGroups
 -> Maybe [AliasICPRecordal]
 -> Text
 -> Text
 -> Text
 -> ISO8601
 -> Text
 -> Aliases
 -> Origins
 -> DefaultCacheBehavior
 -> CacheBehaviors
 -> CustomErrorResponses
 -> Text
 -> PriceClass
 -> Bool
 -> ViewerCertificate
 -> Restrictions
 -> Text
 -> HttpVersion
 -> Bool
 -> DistributionSummary)
-> Either String (Maybe OriginGroups)
-> Either
     String
     (Maybe [AliasICPRecordal]
      -> Text
      -> Text
      -> Text
      -> ISO8601
      -> Text
      -> Aliases
      -> Origins
      -> DefaultCacheBehavior
      -> CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe OriginGroups)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"OriginGroups")
      Either
  String
  (Maybe [AliasICPRecordal]
   -> Text
   -> Text
   -> Text
   -> ISO8601
   -> Text
   -> Aliases
   -> Origins
   -> DefaultCacheBehavior
   -> CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String (Maybe [AliasICPRecordal])
-> Either
     String
     (Text
      -> Text
      -> Text
      -> ISO8601
      -> Text
      -> Aliases
      -> Origins
      -> DefaultCacheBehavior
      -> CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"AliasICPRecordals"
                      Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [AliasICPRecordal]))
-> Either String (Maybe [AliasICPRecordal])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [AliasICPRecordal])
-> [Node] -> Either String (Maybe [AliasICPRecordal])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [AliasICPRecordal]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"AliasICPRecordal")
                  )
      Either
  String
  (Text
   -> Text
   -> Text
   -> ISO8601
   -> Text
   -> Aliases
   -> Origins
   -> DefaultCacheBehavior
   -> CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String Text
-> Either
     String
     (Text
      -> Text
      -> ISO8601
      -> Text
      -> Aliases
      -> Origins
      -> DefaultCacheBehavior
      -> CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Text
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"Id")
      Either
  String
  (Text
   -> Text
   -> ISO8601
   -> Text
   -> Aliases
   -> Origins
   -> DefaultCacheBehavior
   -> CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String Text
-> Either
     String
     (Text
      -> ISO8601
      -> Text
      -> Aliases
      -> Origins
      -> DefaultCacheBehavior
      -> CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Text
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"ARN")
      Either
  String
  (Text
   -> ISO8601
   -> Text
   -> Aliases
   -> Origins
   -> DefaultCacheBehavior
   -> CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String Text
-> Either
     String
     (ISO8601
      -> Text
      -> Aliases
      -> Origins
      -> DefaultCacheBehavior
      -> CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Text
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"Status")
      Either
  String
  (ISO8601
   -> Text
   -> Aliases
   -> Origins
   -> DefaultCacheBehavior
   -> CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String ISO8601
-> Either
     String
     (Text
      -> Aliases
      -> Origins
      -> DefaultCacheBehavior
      -> CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String ISO8601
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"LastModifiedTime")
      Either
  String
  (Text
   -> Aliases
   -> Origins
   -> DefaultCacheBehavior
   -> CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String Text
-> Either
     String
     (Aliases
      -> Origins
      -> DefaultCacheBehavior
      -> CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Text
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"DomainName")
      Either
  String
  (Aliases
   -> Origins
   -> DefaultCacheBehavior
   -> CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String Aliases
-> Either
     String
     (Origins
      -> DefaultCacheBehavior
      -> CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Aliases
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"Aliases")
      Either
  String
  (Origins
   -> DefaultCacheBehavior
   -> CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String Origins
-> Either
     String
     (DefaultCacheBehavior
      -> CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Origins
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"Origins")
      Either
  String
  (DefaultCacheBehavior
   -> CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String DefaultCacheBehavior
-> Either
     String
     (CacheBehaviors
      -> CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String DefaultCacheBehavior
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"DefaultCacheBehavior")
      Either
  String
  (CacheBehaviors
   -> CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String CacheBehaviors
-> Either
     String
     (CustomErrorResponses
      -> Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String CacheBehaviors
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"CacheBehaviors")
      Either
  String
  (CustomErrorResponses
   -> Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String CustomErrorResponses
-> Either
     String
     (Text
      -> PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String CustomErrorResponses
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"CustomErrorResponses")
      Either
  String
  (Text
   -> PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String Text
-> Either
     String
     (PriceClass
      -> Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Text
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"Comment")
      Either
  String
  (PriceClass
   -> Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String PriceClass
-> Either
     String
     (Bool
      -> ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String PriceClass
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"PriceClass")
      Either
  String
  (Bool
   -> ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String Bool
-> Either
     String
     (ViewerCertificate
      -> Restrictions
      -> Text
      -> HttpVersion
      -> Bool
      -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Bool
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"Enabled")
      Either
  String
  (ViewerCertificate
   -> Restrictions
   -> Text
   -> HttpVersion
   -> Bool
   -> DistributionSummary)
-> Either String ViewerCertificate
-> Either
     String
     (Restrictions
      -> Text -> HttpVersion -> Bool -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String ViewerCertificate
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"ViewerCertificate")
      Either
  String
  (Restrictions
   -> Text -> HttpVersion -> Bool -> DistributionSummary)
-> Either String Restrictions
-> Either
     String (Text -> HttpVersion -> Bool -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Restrictions
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"Restrictions")
      Either String (Text -> HttpVersion -> Bool -> DistributionSummary)
-> Either String Text
-> Either String (HttpVersion -> Bool -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Text
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"WebACLId")
      Either String (HttpVersion -> Bool -> DistributionSummary)
-> Either String HttpVersion
-> Either String (Bool -> DistributionSummary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String HttpVersion
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"HttpVersion")
      Either String (Bool -> DistributionSummary)
-> Either String Bool -> Either String DistributionSummary
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String Bool
forall a. FromXML a => [Node] -> Text -> Either String a
Core..@ Text
"IsIPV6Enabled")

instance Prelude.Hashable DistributionSummary

instance Prelude.NFData DistributionSummary