{-# 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.ElasticBeanstalk.Types.PlatformDescription
-- 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.ElasticBeanstalk.Types.PlatformDescription where

import qualified Amazonka.Core as Core
import Amazonka.ElasticBeanstalk.Types.CustomAmi
import Amazonka.ElasticBeanstalk.Types.PlatformFramework
import Amazonka.ElasticBeanstalk.Types.PlatformProgrammingLanguage
import Amazonka.ElasticBeanstalk.Types.PlatformStatus
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Detailed information about a platform version.
--
-- /See:/ 'newPlatformDescription' smart constructor.
data PlatformDescription = PlatformDescription'
  { -- | The platform branch to which the platform version belongs.
    PlatformDescription -> Maybe Text
platformBranchName :: Prelude.Maybe Prelude.Text,
    -- | The additions supported by the platform version.
    PlatformDescription -> Maybe [Text]
supportedAddonList :: Prelude.Maybe [Prelude.Text],
    -- | The category of the platform version.
    PlatformDescription -> Maybe Text
platformCategory :: Prelude.Maybe Prelude.Text,
    -- | The state of the platform version\'s branch in its lifecycle.
    --
    -- Possible values: @Beta@ | @Supported@ | @Deprecated@ | @Retired@
    PlatformDescription -> Maybe Text
platformBranchLifecycleState :: Prelude.Maybe Prelude.Text,
    -- | The version of the platform version.
    PlatformDescription -> Maybe Text
platformVersion :: Prelude.Maybe Prelude.Text,
    -- | The status of the platform version.
    PlatformDescription -> Maybe PlatformStatus
platformStatus :: Prelude.Maybe PlatformStatus,
    -- | Information about the maintainer of the platform version.
    PlatformDescription -> Maybe Text
maintainer :: Prelude.Maybe Prelude.Text,
    -- | The state of the platform version in its lifecycle.
    --
    -- Possible values: @Recommended@ | @null@
    --
    -- If a null value is returned, the platform version isn\'t the recommended
    -- one for its branch. Each platform branch has a single recommended
    -- platform version, typically the most recent one.
    PlatformDescription -> Maybe Text
platformLifecycleState :: Prelude.Maybe Prelude.Text,
    -- | The AWS account ID of the person who created the platform version.
    PlatformDescription -> Maybe Text
platformOwner :: Prelude.Maybe Prelude.Text,
    -- | The date when the platform version was last updated.
    PlatformDescription -> Maybe ISO8601
dateUpdated :: Prelude.Maybe Core.ISO8601,
    -- | The custom AMIs supported by the platform version.
    PlatformDescription -> Maybe [CustomAmi]
customAmiList :: Prelude.Maybe [CustomAmi],
    -- | The date when the platform version was created.
    PlatformDescription -> Maybe ISO8601
dateCreated :: Prelude.Maybe Core.ISO8601,
    -- | The operating system used by the platform version.
    PlatformDescription -> Maybe Text
operatingSystemName :: Prelude.Maybe Prelude.Text,
    -- | The frameworks supported by the platform version.
    PlatformDescription -> Maybe [PlatformFramework]
frameworks :: Prelude.Maybe [PlatformFramework],
    -- | The ARN of the platform version.
    PlatformDescription -> Maybe Text
platformArn :: Prelude.Maybe Prelude.Text,
    -- | The version of the operating system used by the platform version.
    PlatformDescription -> Maybe Text
operatingSystemVersion :: Prelude.Maybe Prelude.Text,
    -- | The programming languages supported by the platform version.
    PlatformDescription -> Maybe [PlatformProgrammingLanguage]
programmingLanguages :: Prelude.Maybe [PlatformProgrammingLanguage],
    -- | The name of the solution stack used by the platform version.
    PlatformDescription -> Maybe Text
solutionStackName :: Prelude.Maybe Prelude.Text,
    -- | The name of the platform version.
    PlatformDescription -> Maybe Text
platformName :: Prelude.Maybe Prelude.Text,
    -- | The description of the platform version.
    PlatformDescription -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The tiers supported by the platform version.
    PlatformDescription -> Maybe [Text]
supportedTierList :: Prelude.Maybe [Prelude.Text]
  }
  deriving (PlatformDescription -> PlatformDescription -> Bool
(PlatformDescription -> PlatformDescription -> Bool)
-> (PlatformDescription -> PlatformDescription -> Bool)
-> Eq PlatformDescription
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PlatformDescription -> PlatformDescription -> Bool
$c/= :: PlatformDescription -> PlatformDescription -> Bool
== :: PlatformDescription -> PlatformDescription -> Bool
$c== :: PlatformDescription -> PlatformDescription -> Bool
Prelude.Eq, ReadPrec [PlatformDescription]
ReadPrec PlatformDescription
Int -> ReadS PlatformDescription
ReadS [PlatformDescription]
(Int -> ReadS PlatformDescription)
-> ReadS [PlatformDescription]
-> ReadPrec PlatformDescription
-> ReadPrec [PlatformDescription]
-> Read PlatformDescription
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [PlatformDescription]
$creadListPrec :: ReadPrec [PlatformDescription]
readPrec :: ReadPrec PlatformDescription
$creadPrec :: ReadPrec PlatformDescription
readList :: ReadS [PlatformDescription]
$creadList :: ReadS [PlatformDescription]
readsPrec :: Int -> ReadS PlatformDescription
$creadsPrec :: Int -> ReadS PlatformDescription
Prelude.Read, Int -> PlatformDescription -> ShowS
[PlatformDescription] -> ShowS
PlatformDescription -> String
(Int -> PlatformDescription -> ShowS)
-> (PlatformDescription -> String)
-> ([PlatformDescription] -> ShowS)
-> Show PlatformDescription
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PlatformDescription] -> ShowS
$cshowList :: [PlatformDescription] -> ShowS
show :: PlatformDescription -> String
$cshow :: PlatformDescription -> String
showsPrec :: Int -> PlatformDescription -> ShowS
$cshowsPrec :: Int -> PlatformDescription -> ShowS
Prelude.Show, (forall x. PlatformDescription -> Rep PlatformDescription x)
-> (forall x. Rep PlatformDescription x -> PlatformDescription)
-> Generic PlatformDescription
forall x. Rep PlatformDescription x -> PlatformDescription
forall x. PlatformDescription -> Rep PlatformDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep PlatformDescription x -> PlatformDescription
$cfrom :: forall x. PlatformDescription -> Rep PlatformDescription x
Prelude.Generic)

-- |
-- Create a value of 'PlatformDescription' 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:
--
-- 'platformBranchName', 'platformDescription_platformBranchName' - The platform branch to which the platform version belongs.
--
-- 'supportedAddonList', 'platformDescription_supportedAddonList' - The additions supported by the platform version.
--
-- 'platformCategory', 'platformDescription_platformCategory' - The category of the platform version.
--
-- 'platformBranchLifecycleState', 'platformDescription_platformBranchLifecycleState' - The state of the platform version\'s branch in its lifecycle.
--
-- Possible values: @Beta@ | @Supported@ | @Deprecated@ | @Retired@
--
-- 'platformVersion', 'platformDescription_platformVersion' - The version of the platform version.
--
-- 'platformStatus', 'platformDescription_platformStatus' - The status of the platform version.
--
-- 'maintainer', 'platformDescription_maintainer' - Information about the maintainer of the platform version.
--
-- 'platformLifecycleState', 'platformDescription_platformLifecycleState' - The state of the platform version in its lifecycle.
--
-- Possible values: @Recommended@ | @null@
--
-- If a null value is returned, the platform version isn\'t the recommended
-- one for its branch. Each platform branch has a single recommended
-- platform version, typically the most recent one.
--
-- 'platformOwner', 'platformDescription_platformOwner' - The AWS account ID of the person who created the platform version.
--
-- 'dateUpdated', 'platformDescription_dateUpdated' - The date when the platform version was last updated.
--
-- 'customAmiList', 'platformDescription_customAmiList' - The custom AMIs supported by the platform version.
--
-- 'dateCreated', 'platformDescription_dateCreated' - The date when the platform version was created.
--
-- 'operatingSystemName', 'platformDescription_operatingSystemName' - The operating system used by the platform version.
--
-- 'frameworks', 'platformDescription_frameworks' - The frameworks supported by the platform version.
--
-- 'platformArn', 'platformDescription_platformArn' - The ARN of the platform version.
--
-- 'operatingSystemVersion', 'platformDescription_operatingSystemVersion' - The version of the operating system used by the platform version.
--
-- 'programmingLanguages', 'platformDescription_programmingLanguages' - The programming languages supported by the platform version.
--
-- 'solutionStackName', 'platformDescription_solutionStackName' - The name of the solution stack used by the platform version.
--
-- 'platformName', 'platformDescription_platformName' - The name of the platform version.
--
-- 'description', 'platformDescription_description' - The description of the platform version.
--
-- 'supportedTierList', 'platformDescription_supportedTierList' - The tiers supported by the platform version.
newPlatformDescription ::
  PlatformDescription
newPlatformDescription :: PlatformDescription
newPlatformDescription =
  PlatformDescription' :: Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe PlatformStatus
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe [CustomAmi]
-> Maybe ISO8601
-> Maybe Text
-> Maybe [PlatformFramework]
-> Maybe Text
-> Maybe Text
-> Maybe [PlatformProgrammingLanguage]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> PlatformDescription
PlatformDescription'
    { $sel:platformBranchName:PlatformDescription' :: Maybe Text
platformBranchName =
        Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:supportedAddonList:PlatformDescription' :: Maybe [Text]
supportedAddonList = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:platformCategory:PlatformDescription' :: Maybe Text
platformCategory = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platformBranchLifecycleState:PlatformDescription' :: Maybe Text
platformBranchLifecycleState = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platformVersion:PlatformDescription' :: Maybe Text
platformVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platformStatus:PlatformDescription' :: Maybe PlatformStatus
platformStatus = Maybe PlatformStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:maintainer:PlatformDescription' :: Maybe Text
maintainer = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platformLifecycleState:PlatformDescription' :: Maybe Text
platformLifecycleState = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platformOwner:PlatformDescription' :: Maybe Text
platformOwner = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dateUpdated:PlatformDescription' :: Maybe ISO8601
dateUpdated = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:customAmiList:PlatformDescription' :: Maybe [CustomAmi]
customAmiList = Maybe [CustomAmi]
forall a. Maybe a
Prelude.Nothing,
      $sel:dateCreated:PlatformDescription' :: Maybe ISO8601
dateCreated = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:operatingSystemName:PlatformDescription' :: Maybe Text
operatingSystemName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:frameworks:PlatformDescription' :: Maybe [PlatformFramework]
frameworks = Maybe [PlatformFramework]
forall a. Maybe a
Prelude.Nothing,
      $sel:platformArn:PlatformDescription' :: Maybe Text
platformArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:operatingSystemVersion:PlatformDescription' :: Maybe Text
operatingSystemVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:programmingLanguages:PlatformDescription' :: Maybe [PlatformProgrammingLanguage]
programmingLanguages = Maybe [PlatformProgrammingLanguage]
forall a. Maybe a
Prelude.Nothing,
      $sel:solutionStackName:PlatformDescription' :: Maybe Text
solutionStackName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platformName:PlatformDescription' :: Maybe Text
platformName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:description:PlatformDescription' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:supportedTierList:PlatformDescription' :: Maybe [Text]
supportedTierList = Maybe [Text]
forall a. Maybe a
Prelude.Nothing
    }

-- | The platform branch to which the platform version belongs.
platformDescription_platformBranchName :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_platformBranchName :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_platformBranchName = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
platformBranchName :: Maybe Text
$sel:platformBranchName:PlatformDescription' :: PlatformDescription -> Maybe Text
platformBranchName} -> Maybe Text
platformBranchName) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:platformBranchName:PlatformDescription' :: Maybe Text
platformBranchName = Maybe Text
a} :: PlatformDescription)

-- | The additions supported by the platform version.
platformDescription_supportedAddonList :: Lens.Lens' PlatformDescription (Prelude.Maybe [Prelude.Text])
platformDescription_supportedAddonList :: (Maybe [Text] -> f (Maybe [Text]))
-> PlatformDescription -> f PlatformDescription
platformDescription_supportedAddonList = (PlatformDescription -> Maybe [Text])
-> (PlatformDescription -> Maybe [Text] -> PlatformDescription)
-> Lens
     PlatformDescription
     PlatformDescription
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe [Text]
supportedAddonList :: Maybe [Text]
$sel:supportedAddonList:PlatformDescription' :: PlatformDescription -> Maybe [Text]
supportedAddonList} -> Maybe [Text]
supportedAddonList) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe [Text]
a -> PlatformDescription
s {$sel:supportedAddonList:PlatformDescription' :: Maybe [Text]
supportedAddonList = Maybe [Text]
a} :: PlatformDescription) ((Maybe [Text] -> f (Maybe [Text]))
 -> PlatformDescription -> f PlatformDescription)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> PlatformDescription
-> f PlatformDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The category of the platform version.
platformDescription_platformCategory :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_platformCategory :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_platformCategory = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
platformCategory :: Maybe Text
$sel:platformCategory:PlatformDescription' :: PlatformDescription -> Maybe Text
platformCategory} -> Maybe Text
platformCategory) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:platformCategory:PlatformDescription' :: Maybe Text
platformCategory = Maybe Text
a} :: PlatformDescription)

-- | The state of the platform version\'s branch in its lifecycle.
--
-- Possible values: @Beta@ | @Supported@ | @Deprecated@ | @Retired@
platformDescription_platformBranchLifecycleState :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_platformBranchLifecycleState :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_platformBranchLifecycleState = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
platformBranchLifecycleState :: Maybe Text
$sel:platformBranchLifecycleState:PlatformDescription' :: PlatformDescription -> Maybe Text
platformBranchLifecycleState} -> Maybe Text
platformBranchLifecycleState) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:platformBranchLifecycleState:PlatformDescription' :: Maybe Text
platformBranchLifecycleState = Maybe Text
a} :: PlatformDescription)

-- | The version of the platform version.
platformDescription_platformVersion :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_platformVersion :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_platformVersion = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
platformVersion :: Maybe Text
$sel:platformVersion:PlatformDescription' :: PlatformDescription -> Maybe Text
platformVersion} -> Maybe Text
platformVersion) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:platformVersion:PlatformDescription' :: Maybe Text
platformVersion = Maybe Text
a} :: PlatformDescription)

-- | The status of the platform version.
platformDescription_platformStatus :: Lens.Lens' PlatformDescription (Prelude.Maybe PlatformStatus)
platformDescription_platformStatus :: (Maybe PlatformStatus -> f (Maybe PlatformStatus))
-> PlatformDescription -> f PlatformDescription
platformDescription_platformStatus = (PlatformDescription -> Maybe PlatformStatus)
-> (PlatformDescription
    -> Maybe PlatformStatus -> PlatformDescription)
-> Lens
     PlatformDescription
     PlatformDescription
     (Maybe PlatformStatus)
     (Maybe PlatformStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe PlatformStatus
platformStatus :: Maybe PlatformStatus
$sel:platformStatus:PlatformDescription' :: PlatformDescription -> Maybe PlatformStatus
platformStatus} -> Maybe PlatformStatus
platformStatus) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe PlatformStatus
a -> PlatformDescription
s {$sel:platformStatus:PlatformDescription' :: Maybe PlatformStatus
platformStatus = Maybe PlatformStatus
a} :: PlatformDescription)

-- | Information about the maintainer of the platform version.
platformDescription_maintainer :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_maintainer :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_maintainer = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
maintainer :: Maybe Text
$sel:maintainer:PlatformDescription' :: PlatformDescription -> Maybe Text
maintainer} -> Maybe Text
maintainer) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:maintainer:PlatformDescription' :: Maybe Text
maintainer = Maybe Text
a} :: PlatformDescription)

-- | The state of the platform version in its lifecycle.
--
-- Possible values: @Recommended@ | @null@
--
-- If a null value is returned, the platform version isn\'t the recommended
-- one for its branch. Each platform branch has a single recommended
-- platform version, typically the most recent one.
platformDescription_platformLifecycleState :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_platformLifecycleState :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_platformLifecycleState = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
platformLifecycleState :: Maybe Text
$sel:platformLifecycleState:PlatformDescription' :: PlatformDescription -> Maybe Text
platformLifecycleState} -> Maybe Text
platformLifecycleState) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:platformLifecycleState:PlatformDescription' :: Maybe Text
platformLifecycleState = Maybe Text
a} :: PlatformDescription)

-- | The AWS account ID of the person who created the platform version.
platformDescription_platformOwner :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_platformOwner :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_platformOwner = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
platformOwner :: Maybe Text
$sel:platformOwner:PlatformDescription' :: PlatformDescription -> Maybe Text
platformOwner} -> Maybe Text
platformOwner) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:platformOwner:PlatformDescription' :: Maybe Text
platformOwner = Maybe Text
a} :: PlatformDescription)

-- | The date when the platform version was last updated.
platformDescription_dateUpdated :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.UTCTime)
platformDescription_dateUpdated :: (Maybe UTCTime -> f (Maybe UTCTime))
-> PlatformDescription -> f PlatformDescription
platformDescription_dateUpdated = (PlatformDescription -> Maybe ISO8601)
-> (PlatformDescription -> Maybe ISO8601 -> PlatformDescription)
-> Lens
     PlatformDescription
     PlatformDescription
     (Maybe ISO8601)
     (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe ISO8601
dateUpdated :: Maybe ISO8601
$sel:dateUpdated:PlatformDescription' :: PlatformDescription -> Maybe ISO8601
dateUpdated} -> Maybe ISO8601
dateUpdated) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe ISO8601
a -> PlatformDescription
s {$sel:dateUpdated:PlatformDescription' :: Maybe ISO8601
dateUpdated = Maybe ISO8601
a} :: PlatformDescription) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> PlatformDescription -> f PlatformDescription)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> PlatformDescription
-> f PlatformDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (Maybe UTCTime) (Maybe UTCTime)
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 ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The custom AMIs supported by the platform version.
platformDescription_customAmiList :: Lens.Lens' PlatformDescription (Prelude.Maybe [CustomAmi])
platformDescription_customAmiList :: (Maybe [CustomAmi] -> f (Maybe [CustomAmi]))
-> PlatformDescription -> f PlatformDescription
platformDescription_customAmiList = (PlatformDescription -> Maybe [CustomAmi])
-> (PlatformDescription
    -> Maybe [CustomAmi] -> PlatformDescription)
-> Lens
     PlatformDescription
     PlatformDescription
     (Maybe [CustomAmi])
     (Maybe [CustomAmi])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe [CustomAmi]
customAmiList :: Maybe [CustomAmi]
$sel:customAmiList:PlatformDescription' :: PlatformDescription -> Maybe [CustomAmi]
customAmiList} -> Maybe [CustomAmi]
customAmiList) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe [CustomAmi]
a -> PlatformDescription
s {$sel:customAmiList:PlatformDescription' :: Maybe [CustomAmi]
customAmiList = Maybe [CustomAmi]
a} :: PlatformDescription) ((Maybe [CustomAmi] -> f (Maybe [CustomAmi]))
 -> PlatformDescription -> f PlatformDescription)
-> ((Maybe [CustomAmi] -> f (Maybe [CustomAmi]))
    -> Maybe [CustomAmi] -> f (Maybe [CustomAmi]))
-> (Maybe [CustomAmi] -> f (Maybe [CustomAmi]))
-> PlatformDescription
-> f PlatformDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [CustomAmi] [CustomAmi] [CustomAmi] [CustomAmi]
-> Iso
     (Maybe [CustomAmi])
     (Maybe [CustomAmi])
     (Maybe [CustomAmi])
     (Maybe [CustomAmi])
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 [CustomAmi] [CustomAmi] [CustomAmi] [CustomAmi]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The date when the platform version was created.
platformDescription_dateCreated :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.UTCTime)
platformDescription_dateCreated :: (Maybe UTCTime -> f (Maybe UTCTime))
-> PlatformDescription -> f PlatformDescription
platformDescription_dateCreated = (PlatformDescription -> Maybe ISO8601)
-> (PlatformDescription -> Maybe ISO8601 -> PlatformDescription)
-> Lens
     PlatformDescription
     PlatformDescription
     (Maybe ISO8601)
     (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe ISO8601
dateCreated :: Maybe ISO8601
$sel:dateCreated:PlatformDescription' :: PlatformDescription -> Maybe ISO8601
dateCreated} -> Maybe ISO8601
dateCreated) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe ISO8601
a -> PlatformDescription
s {$sel:dateCreated:PlatformDescription' :: Maybe ISO8601
dateCreated = Maybe ISO8601
a} :: PlatformDescription) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> PlatformDescription -> f PlatformDescription)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> PlatformDescription
-> f PlatformDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (Maybe UTCTime) (Maybe UTCTime)
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 ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The operating system used by the platform version.
platformDescription_operatingSystemName :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_operatingSystemName :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_operatingSystemName = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
operatingSystemName :: Maybe Text
$sel:operatingSystemName:PlatformDescription' :: PlatformDescription -> Maybe Text
operatingSystemName} -> Maybe Text
operatingSystemName) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:operatingSystemName:PlatformDescription' :: Maybe Text
operatingSystemName = Maybe Text
a} :: PlatformDescription)

-- | The frameworks supported by the platform version.
platformDescription_frameworks :: Lens.Lens' PlatformDescription (Prelude.Maybe [PlatformFramework])
platformDescription_frameworks :: (Maybe [PlatformFramework] -> f (Maybe [PlatformFramework]))
-> PlatformDescription -> f PlatformDescription
platformDescription_frameworks = (PlatformDescription -> Maybe [PlatformFramework])
-> (PlatformDescription
    -> Maybe [PlatformFramework] -> PlatformDescription)
-> Lens
     PlatformDescription
     PlatformDescription
     (Maybe [PlatformFramework])
     (Maybe [PlatformFramework])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe [PlatformFramework]
frameworks :: Maybe [PlatformFramework]
$sel:frameworks:PlatformDescription' :: PlatformDescription -> Maybe [PlatformFramework]
frameworks} -> Maybe [PlatformFramework]
frameworks) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe [PlatformFramework]
a -> PlatformDescription
s {$sel:frameworks:PlatformDescription' :: Maybe [PlatformFramework]
frameworks = Maybe [PlatformFramework]
a} :: PlatformDescription) ((Maybe [PlatformFramework] -> f (Maybe [PlatformFramework]))
 -> PlatformDescription -> f PlatformDescription)
-> ((Maybe [PlatformFramework] -> f (Maybe [PlatformFramework]))
    -> Maybe [PlatformFramework] -> f (Maybe [PlatformFramework]))
-> (Maybe [PlatformFramework] -> f (Maybe [PlatformFramework]))
-> PlatformDescription
-> f PlatformDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [PlatformFramework]
  [PlatformFramework]
  [PlatformFramework]
  [PlatformFramework]
-> Iso
     (Maybe [PlatformFramework])
     (Maybe [PlatformFramework])
     (Maybe [PlatformFramework])
     (Maybe [PlatformFramework])
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
  [PlatformFramework]
  [PlatformFramework]
  [PlatformFramework]
  [PlatformFramework]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The ARN of the platform version.
platformDescription_platformArn :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_platformArn :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_platformArn = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
platformArn :: Maybe Text
$sel:platformArn:PlatformDescription' :: PlatformDescription -> Maybe Text
platformArn} -> Maybe Text
platformArn) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:platformArn:PlatformDescription' :: Maybe Text
platformArn = Maybe Text
a} :: PlatformDescription)

-- | The version of the operating system used by the platform version.
platformDescription_operatingSystemVersion :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_operatingSystemVersion :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_operatingSystemVersion = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
operatingSystemVersion :: Maybe Text
$sel:operatingSystemVersion:PlatformDescription' :: PlatformDescription -> Maybe Text
operatingSystemVersion} -> Maybe Text
operatingSystemVersion) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:operatingSystemVersion:PlatformDescription' :: Maybe Text
operatingSystemVersion = Maybe Text
a} :: PlatformDescription)

-- | The programming languages supported by the platform version.
platformDescription_programmingLanguages :: Lens.Lens' PlatformDescription (Prelude.Maybe [PlatformProgrammingLanguage])
platformDescription_programmingLanguages :: (Maybe [PlatformProgrammingLanguage]
 -> f (Maybe [PlatformProgrammingLanguage]))
-> PlatformDescription -> f PlatformDescription
platformDescription_programmingLanguages = (PlatformDescription -> Maybe [PlatformProgrammingLanguage])
-> (PlatformDescription
    -> Maybe [PlatformProgrammingLanguage] -> PlatformDescription)
-> Lens
     PlatformDescription
     PlatformDescription
     (Maybe [PlatformProgrammingLanguage])
     (Maybe [PlatformProgrammingLanguage])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe [PlatformProgrammingLanguage]
programmingLanguages :: Maybe [PlatformProgrammingLanguage]
$sel:programmingLanguages:PlatformDescription' :: PlatformDescription -> Maybe [PlatformProgrammingLanguage]
programmingLanguages} -> Maybe [PlatformProgrammingLanguage]
programmingLanguages) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe [PlatformProgrammingLanguage]
a -> PlatformDescription
s {$sel:programmingLanguages:PlatformDescription' :: Maybe [PlatformProgrammingLanguage]
programmingLanguages = Maybe [PlatformProgrammingLanguage]
a} :: PlatformDescription) ((Maybe [PlatformProgrammingLanguage]
  -> f (Maybe [PlatformProgrammingLanguage]))
 -> PlatformDescription -> f PlatformDescription)
-> ((Maybe [PlatformProgrammingLanguage]
     -> f (Maybe [PlatformProgrammingLanguage]))
    -> Maybe [PlatformProgrammingLanguage]
    -> f (Maybe [PlatformProgrammingLanguage]))
-> (Maybe [PlatformProgrammingLanguage]
    -> f (Maybe [PlatformProgrammingLanguage]))
-> PlatformDescription
-> f PlatformDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [PlatformProgrammingLanguage]
  [PlatformProgrammingLanguage]
  [PlatformProgrammingLanguage]
  [PlatformProgrammingLanguage]
-> Iso
     (Maybe [PlatformProgrammingLanguage])
     (Maybe [PlatformProgrammingLanguage])
     (Maybe [PlatformProgrammingLanguage])
     (Maybe [PlatformProgrammingLanguage])
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
  [PlatformProgrammingLanguage]
  [PlatformProgrammingLanguage]
  [PlatformProgrammingLanguage]
  [PlatformProgrammingLanguage]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the solution stack used by the platform version.
platformDescription_solutionStackName :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_solutionStackName :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_solutionStackName = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
solutionStackName :: Maybe Text
$sel:solutionStackName:PlatformDescription' :: PlatformDescription -> Maybe Text
solutionStackName} -> Maybe Text
solutionStackName) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:solutionStackName:PlatformDescription' :: Maybe Text
solutionStackName = Maybe Text
a} :: PlatformDescription)

-- | The name of the platform version.
platformDescription_platformName :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_platformName :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_platformName = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
platformName :: Maybe Text
$sel:platformName:PlatformDescription' :: PlatformDescription -> Maybe Text
platformName} -> Maybe Text
platformName) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:platformName:PlatformDescription' :: Maybe Text
platformName = Maybe Text
a} :: PlatformDescription)

-- | The description of the platform version.
platformDescription_description :: Lens.Lens' PlatformDescription (Prelude.Maybe Prelude.Text)
platformDescription_description :: (Maybe Text -> f (Maybe Text))
-> PlatformDescription -> f PlatformDescription
platformDescription_description = (PlatformDescription -> Maybe Text)
-> (PlatformDescription -> Maybe Text -> PlatformDescription)
-> Lens
     PlatformDescription PlatformDescription (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe Text
description :: Maybe Text
$sel:description:PlatformDescription' :: PlatformDescription -> Maybe Text
description} -> Maybe Text
description) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe Text
a -> PlatformDescription
s {$sel:description:PlatformDescription' :: Maybe Text
description = Maybe Text
a} :: PlatformDescription)

-- | The tiers supported by the platform version.
platformDescription_supportedTierList :: Lens.Lens' PlatformDescription (Prelude.Maybe [Prelude.Text])
platformDescription_supportedTierList :: (Maybe [Text] -> f (Maybe [Text]))
-> PlatformDescription -> f PlatformDescription
platformDescription_supportedTierList = (PlatformDescription -> Maybe [Text])
-> (PlatformDescription -> Maybe [Text] -> PlatformDescription)
-> Lens
     PlatformDescription
     PlatformDescription
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\PlatformDescription' {Maybe [Text]
supportedTierList :: Maybe [Text]
$sel:supportedTierList:PlatformDescription' :: PlatformDescription -> Maybe [Text]
supportedTierList} -> Maybe [Text]
supportedTierList) (\s :: PlatformDescription
s@PlatformDescription' {} Maybe [Text]
a -> PlatformDescription
s {$sel:supportedTierList:PlatformDescription' :: Maybe [Text]
supportedTierList = Maybe [Text]
a} :: PlatformDescription) ((Maybe [Text] -> f (Maybe [Text]))
 -> PlatformDescription -> f PlatformDescription)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> PlatformDescription
-> f PlatformDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.FromXML PlatformDescription where
  parseXML :: [Node] -> Either String PlatformDescription
parseXML [Node]
x =
    Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe PlatformStatus
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Maybe [CustomAmi]
-> Maybe ISO8601
-> Maybe Text
-> Maybe [PlatformFramework]
-> Maybe Text
-> Maybe Text
-> Maybe [PlatformProgrammingLanguage]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> PlatformDescription
PlatformDescription'
      (Maybe Text
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe PlatformStatus
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe ISO8601
 -> Maybe [CustomAmi]
 -> Maybe ISO8601
 -> Maybe Text
 -> Maybe [PlatformFramework]
 -> Maybe Text
 -> Maybe Text
 -> Maybe [PlatformProgrammingLanguage]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [Text]
 -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlatformStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PlatformBranchName")
      Either
  String
  (Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlatformStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe [Text])
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlatformStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
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
"SupportedAddonList"
                      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 [Text]))
-> Either String (Maybe [Text])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Text])
-> [Node] -> Either String (Maybe [Text])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Text]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlatformStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe PlatformStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PlatformCategory")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe PlatformStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe PlatformStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PlatformBranchLifecycleState")
      Either
  String
  (Maybe Text
   -> Maybe PlatformStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe PlatformStatus
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PlatformVersion")
      Either
  String
  (Maybe PlatformStatus
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe PlatformStatus)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe PlatformStatus)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PlatformStatus")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe ISO8601
      -> Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Maintainer")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe ISO8601
   -> Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe ISO8601
      -> Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PlatformLifecycleState")
      Either
  String
  (Maybe Text
   -> Maybe ISO8601
   -> Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe ISO8601
      -> Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PlatformOwner")
      Either
  String
  (Maybe ISO8601
   -> Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe [CustomAmi]
      -> Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ISO8601)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DateUpdated")
      Either
  String
  (Maybe [CustomAmi]
   -> Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe [CustomAmi])
-> Either
     String
     (Maybe ISO8601
      -> Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
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
"CustomAmiList" 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 [CustomAmi]))
-> Either String (Maybe [CustomAmi])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [CustomAmi])
-> [Node] -> Either String (Maybe [CustomAmi])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [CustomAmi]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe ISO8601
   -> Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe Text
      -> Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ISO8601)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DateCreated")
      Either
  String
  (Maybe Text
   -> Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [PlatformFramework]
      -> Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"OperatingSystemName")
      Either
  String
  (Maybe [PlatformFramework]
   -> Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe [PlatformFramework])
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
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
"Frameworks" 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 [PlatformFramework]))
-> Either String (Maybe [PlatformFramework])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [PlatformFramework])
-> [Node] -> Either String (Maybe [PlatformFramework])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [PlatformFramework]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PlatformArn")
      Either
  String
  (Maybe Text
   -> Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [PlatformProgrammingLanguage]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"OperatingSystemVersion")
      Either
  String
  (Maybe [PlatformProgrammingLanguage]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> PlatformDescription)
-> Either String (Maybe [PlatformProgrammingLanguage])
-> Either
     String
     (Maybe Text
      -> Maybe Text -> Maybe Text -> Maybe [Text] -> PlatformDescription)
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
"ProgrammingLanguages"
                      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 [PlatformProgrammingLanguage]))
-> Either String (Maybe [PlatformProgrammingLanguage])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [PlatformProgrammingLanguage])
-> [Node] -> Either String (Maybe [PlatformProgrammingLanguage])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [PlatformProgrammingLanguage]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe Text
   -> Maybe Text -> Maybe Text -> Maybe [Text] -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text -> Maybe Text -> Maybe [Text] -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"SolutionStackName")
      Either
  String
  (Maybe Text -> Maybe Text -> Maybe [Text] -> PlatformDescription)
-> Either String (Maybe Text)
-> Either
     String (Maybe Text -> Maybe [Text] -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"PlatformName")
      Either String (Maybe Text -> Maybe [Text] -> PlatformDescription)
-> Either String (Maybe Text)
-> Either String (Maybe [Text] -> PlatformDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Description")
      Either String (Maybe [Text] -> PlatformDescription)
-> Either String (Maybe [Text])
-> Either String PlatformDescription
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
"SupportedTierList"
                      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 [Text]))
-> Either String (Maybe [Text])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Text])
-> [Node] -> Either String (Maybe [Text])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Text]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )

instance Prelude.Hashable PlatformDescription

instance Prelude.NFData PlatformDescription