{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.AppStream.UpdateApplication
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates the specified application.
module Amazonka.AppStream.UpdateApplication
  ( -- * Creating a Request
    UpdateApplication (..),
    newUpdateApplication,

    -- * Request Lenses
    updateApplication_appBlockArn,
    updateApplication_attributesToDelete,
    updateApplication_description,
    updateApplication_displayName,
    updateApplication_iconS3Location,
    updateApplication_launchParameters,
    updateApplication_launchPath,
    updateApplication_workingDirectory,
    updateApplication_name,

    -- * Destructuring the Response
    UpdateApplicationResponse (..),
    newUpdateApplicationResponse,

    -- * Response Lenses
    updateApplicationResponse_application,
    updateApplicationResponse_httpStatus,
  )
where

import Amazonka.AppStream.Types
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newUpdateApplication' smart constructor.
data UpdateApplication = UpdateApplication'
  { -- | The ARN of the app block.
    UpdateApplication -> Maybe Text
appBlockArn :: Prelude.Maybe Prelude.Text,
    -- | The attributes to delete for an application.
    UpdateApplication -> Maybe [ApplicationAttribute]
attributesToDelete :: Prelude.Maybe [ApplicationAttribute],
    -- | The description of the application.
    UpdateApplication -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The display name of the application. This name is visible to users in
    -- the application catalog.
    UpdateApplication -> Maybe Text
displayName :: Prelude.Maybe Prelude.Text,
    -- | The icon S3 location of the application.
    UpdateApplication -> Maybe S3Location
iconS3Location :: Prelude.Maybe S3Location,
    -- | The launch parameters of the application.
    UpdateApplication -> Maybe Text
launchParameters :: Prelude.Maybe Prelude.Text,
    -- | The launch path of the application.
    UpdateApplication -> Maybe Text
launchPath :: Prelude.Maybe Prelude.Text,
    -- | The working directory of the application.
    UpdateApplication -> Maybe Text
workingDirectory :: Prelude.Maybe Prelude.Text,
    -- | The name of the application. This name is visible to users when display
    -- name is not specified.
    UpdateApplication -> Text
name :: Prelude.Text
  }
  deriving (UpdateApplication -> UpdateApplication -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateApplication -> UpdateApplication -> Bool
$c/= :: UpdateApplication -> UpdateApplication -> Bool
== :: UpdateApplication -> UpdateApplication -> Bool
$c== :: UpdateApplication -> UpdateApplication -> Bool
Prelude.Eq, ReadPrec [UpdateApplication]
ReadPrec UpdateApplication
Int -> ReadS UpdateApplication
ReadS [UpdateApplication]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateApplication]
$creadListPrec :: ReadPrec [UpdateApplication]
readPrec :: ReadPrec UpdateApplication
$creadPrec :: ReadPrec UpdateApplication
readList :: ReadS [UpdateApplication]
$creadList :: ReadS [UpdateApplication]
readsPrec :: Int -> ReadS UpdateApplication
$creadsPrec :: Int -> ReadS UpdateApplication
Prelude.Read, Int -> UpdateApplication -> ShowS
[UpdateApplication] -> ShowS
UpdateApplication -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateApplication] -> ShowS
$cshowList :: [UpdateApplication] -> ShowS
show :: UpdateApplication -> String
$cshow :: UpdateApplication -> String
showsPrec :: Int -> UpdateApplication -> ShowS
$cshowsPrec :: Int -> UpdateApplication -> ShowS
Prelude.Show, forall x. Rep UpdateApplication x -> UpdateApplication
forall x. UpdateApplication -> Rep UpdateApplication x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateApplication x -> UpdateApplication
$cfrom :: forall x. UpdateApplication -> Rep UpdateApplication x
Prelude.Generic)

-- |
-- Create a value of 'UpdateApplication' 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:
--
-- 'appBlockArn', 'updateApplication_appBlockArn' - The ARN of the app block.
--
-- 'attributesToDelete', 'updateApplication_attributesToDelete' - The attributes to delete for an application.
--
-- 'description', 'updateApplication_description' - The description of the application.
--
-- 'displayName', 'updateApplication_displayName' - The display name of the application. This name is visible to users in
-- the application catalog.
--
-- 'iconS3Location', 'updateApplication_iconS3Location' - The icon S3 location of the application.
--
-- 'launchParameters', 'updateApplication_launchParameters' - The launch parameters of the application.
--
-- 'launchPath', 'updateApplication_launchPath' - The launch path of the application.
--
-- 'workingDirectory', 'updateApplication_workingDirectory' - The working directory of the application.
--
-- 'name', 'updateApplication_name' - The name of the application. This name is visible to users when display
-- name is not specified.
newUpdateApplication ::
  -- | 'name'
  Prelude.Text ->
  UpdateApplication
newUpdateApplication :: Text -> UpdateApplication
newUpdateApplication Text
pName_ =
  UpdateApplication'
    { $sel:appBlockArn:UpdateApplication' :: Maybe Text
appBlockArn = forall a. Maybe a
Prelude.Nothing,
      $sel:attributesToDelete:UpdateApplication' :: Maybe [ApplicationAttribute]
attributesToDelete = forall a. Maybe a
Prelude.Nothing,
      $sel:description:UpdateApplication' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:displayName:UpdateApplication' :: Maybe Text
displayName = forall a. Maybe a
Prelude.Nothing,
      $sel:iconS3Location:UpdateApplication' :: Maybe S3Location
iconS3Location = forall a. Maybe a
Prelude.Nothing,
      $sel:launchParameters:UpdateApplication' :: Maybe Text
launchParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:launchPath:UpdateApplication' :: Maybe Text
launchPath = forall a. Maybe a
Prelude.Nothing,
      $sel:workingDirectory:UpdateApplication' :: Maybe Text
workingDirectory = forall a. Maybe a
Prelude.Nothing,
      $sel:name:UpdateApplication' :: Text
name = Text
pName_
    }

-- | The ARN of the app block.
updateApplication_appBlockArn :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Text)
updateApplication_appBlockArn :: Lens' UpdateApplication (Maybe Text)
updateApplication_appBlockArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplication' {Maybe Text
appBlockArn :: Maybe Text
$sel:appBlockArn:UpdateApplication' :: UpdateApplication -> Maybe Text
appBlockArn} -> Maybe Text
appBlockArn) (\s :: UpdateApplication
s@UpdateApplication' {} Maybe Text
a -> UpdateApplication
s {$sel:appBlockArn:UpdateApplication' :: Maybe Text
appBlockArn = Maybe Text
a} :: UpdateApplication)

-- | The attributes to delete for an application.
updateApplication_attributesToDelete :: Lens.Lens' UpdateApplication (Prelude.Maybe [ApplicationAttribute])
updateApplication_attributesToDelete :: Lens' UpdateApplication (Maybe [ApplicationAttribute])
updateApplication_attributesToDelete = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplication' {Maybe [ApplicationAttribute]
attributesToDelete :: Maybe [ApplicationAttribute]
$sel:attributesToDelete:UpdateApplication' :: UpdateApplication -> Maybe [ApplicationAttribute]
attributesToDelete} -> Maybe [ApplicationAttribute]
attributesToDelete) (\s :: UpdateApplication
s@UpdateApplication' {} Maybe [ApplicationAttribute]
a -> UpdateApplication
s {$sel:attributesToDelete:UpdateApplication' :: Maybe [ApplicationAttribute]
attributesToDelete = Maybe [ApplicationAttribute]
a} :: UpdateApplication) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The description of the application.
updateApplication_description :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Text)
updateApplication_description :: Lens' UpdateApplication (Maybe Text)
updateApplication_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplication' {Maybe Text
description :: Maybe Text
$sel:description:UpdateApplication' :: UpdateApplication -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateApplication
s@UpdateApplication' {} Maybe Text
a -> UpdateApplication
s {$sel:description:UpdateApplication' :: Maybe Text
description = Maybe Text
a} :: UpdateApplication)

-- | The display name of the application. This name is visible to users in
-- the application catalog.
updateApplication_displayName :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Text)
updateApplication_displayName :: Lens' UpdateApplication (Maybe Text)
updateApplication_displayName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplication' {Maybe Text
displayName :: Maybe Text
$sel:displayName:UpdateApplication' :: UpdateApplication -> Maybe Text
displayName} -> Maybe Text
displayName) (\s :: UpdateApplication
s@UpdateApplication' {} Maybe Text
a -> UpdateApplication
s {$sel:displayName:UpdateApplication' :: Maybe Text
displayName = Maybe Text
a} :: UpdateApplication)

-- | The icon S3 location of the application.
updateApplication_iconS3Location :: Lens.Lens' UpdateApplication (Prelude.Maybe S3Location)
updateApplication_iconS3Location :: Lens' UpdateApplication (Maybe S3Location)
updateApplication_iconS3Location = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplication' {Maybe S3Location
iconS3Location :: Maybe S3Location
$sel:iconS3Location:UpdateApplication' :: UpdateApplication -> Maybe S3Location
iconS3Location} -> Maybe S3Location
iconS3Location) (\s :: UpdateApplication
s@UpdateApplication' {} Maybe S3Location
a -> UpdateApplication
s {$sel:iconS3Location:UpdateApplication' :: Maybe S3Location
iconS3Location = Maybe S3Location
a} :: UpdateApplication)

-- | The launch parameters of the application.
updateApplication_launchParameters :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Text)
updateApplication_launchParameters :: Lens' UpdateApplication (Maybe Text)
updateApplication_launchParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplication' {Maybe Text
launchParameters :: Maybe Text
$sel:launchParameters:UpdateApplication' :: UpdateApplication -> Maybe Text
launchParameters} -> Maybe Text
launchParameters) (\s :: UpdateApplication
s@UpdateApplication' {} Maybe Text
a -> UpdateApplication
s {$sel:launchParameters:UpdateApplication' :: Maybe Text
launchParameters = Maybe Text
a} :: UpdateApplication)

-- | The launch path of the application.
updateApplication_launchPath :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Text)
updateApplication_launchPath :: Lens' UpdateApplication (Maybe Text)
updateApplication_launchPath = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplication' {Maybe Text
launchPath :: Maybe Text
$sel:launchPath:UpdateApplication' :: UpdateApplication -> Maybe Text
launchPath} -> Maybe Text
launchPath) (\s :: UpdateApplication
s@UpdateApplication' {} Maybe Text
a -> UpdateApplication
s {$sel:launchPath:UpdateApplication' :: Maybe Text
launchPath = Maybe Text
a} :: UpdateApplication)

-- | The working directory of the application.
updateApplication_workingDirectory :: Lens.Lens' UpdateApplication (Prelude.Maybe Prelude.Text)
updateApplication_workingDirectory :: Lens' UpdateApplication (Maybe Text)
updateApplication_workingDirectory = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplication' {Maybe Text
workingDirectory :: Maybe Text
$sel:workingDirectory:UpdateApplication' :: UpdateApplication -> Maybe Text
workingDirectory} -> Maybe Text
workingDirectory) (\s :: UpdateApplication
s@UpdateApplication' {} Maybe Text
a -> UpdateApplication
s {$sel:workingDirectory:UpdateApplication' :: Maybe Text
workingDirectory = Maybe Text
a} :: UpdateApplication)

-- | The name of the application. This name is visible to users when display
-- name is not specified.
updateApplication_name :: Lens.Lens' UpdateApplication Prelude.Text
updateApplication_name :: Lens' UpdateApplication Text
updateApplication_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplication' {Text
name :: Text
$sel:name:UpdateApplication' :: UpdateApplication -> Text
name} -> Text
name) (\s :: UpdateApplication
s@UpdateApplication' {} Text
a -> UpdateApplication
s {$sel:name:UpdateApplication' :: Text
name = Text
a} :: UpdateApplication)

instance Core.AWSRequest UpdateApplication where
  type
    AWSResponse UpdateApplication =
      UpdateApplicationResponse
  request :: (Service -> Service)
-> UpdateApplication -> Request UpdateApplication
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateApplication
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateApplication)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Application -> Int -> UpdateApplicationResponse
UpdateApplicationResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Application")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable UpdateApplication where
  hashWithSalt :: Int -> UpdateApplication -> Int
hashWithSalt Int
_salt UpdateApplication' {Maybe [ApplicationAttribute]
Maybe Text
Maybe S3Location
Text
name :: Text
workingDirectory :: Maybe Text
launchPath :: Maybe Text
launchParameters :: Maybe Text
iconS3Location :: Maybe S3Location
displayName :: Maybe Text
description :: Maybe Text
attributesToDelete :: Maybe [ApplicationAttribute]
appBlockArn :: Maybe Text
$sel:name:UpdateApplication' :: UpdateApplication -> Text
$sel:workingDirectory:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:launchPath:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:launchParameters:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:iconS3Location:UpdateApplication' :: UpdateApplication -> Maybe S3Location
$sel:displayName:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:description:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:attributesToDelete:UpdateApplication' :: UpdateApplication -> Maybe [ApplicationAttribute]
$sel:appBlockArn:UpdateApplication' :: UpdateApplication -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
appBlockArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ApplicationAttribute]
attributesToDelete
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
displayName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe S3Location
iconS3Location
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
launchParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
launchPath
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
workingDirectory
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance Prelude.NFData UpdateApplication where
  rnf :: UpdateApplication -> ()
rnf UpdateApplication' {Maybe [ApplicationAttribute]
Maybe Text
Maybe S3Location
Text
name :: Text
workingDirectory :: Maybe Text
launchPath :: Maybe Text
launchParameters :: Maybe Text
iconS3Location :: Maybe S3Location
displayName :: Maybe Text
description :: Maybe Text
attributesToDelete :: Maybe [ApplicationAttribute]
appBlockArn :: Maybe Text
$sel:name:UpdateApplication' :: UpdateApplication -> Text
$sel:workingDirectory:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:launchPath:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:launchParameters:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:iconS3Location:UpdateApplication' :: UpdateApplication -> Maybe S3Location
$sel:displayName:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:description:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:attributesToDelete:UpdateApplication' :: UpdateApplication -> Maybe [ApplicationAttribute]
$sel:appBlockArn:UpdateApplication' :: UpdateApplication -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
appBlockArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ApplicationAttribute]
attributesToDelete
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
displayName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe S3Location
iconS3Location
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
launchParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
launchPath
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
workingDirectory
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name

instance Data.ToHeaders UpdateApplication where
  toHeaders :: UpdateApplication -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"PhotonAdminProxyService.UpdateApplication" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateApplication where
  toJSON :: UpdateApplication -> Value
toJSON UpdateApplication' {Maybe [ApplicationAttribute]
Maybe Text
Maybe S3Location
Text
name :: Text
workingDirectory :: Maybe Text
launchPath :: Maybe Text
launchParameters :: Maybe Text
iconS3Location :: Maybe S3Location
displayName :: Maybe Text
description :: Maybe Text
attributesToDelete :: Maybe [ApplicationAttribute]
appBlockArn :: Maybe Text
$sel:name:UpdateApplication' :: UpdateApplication -> Text
$sel:workingDirectory:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:launchPath:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:launchParameters:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:iconS3Location:UpdateApplication' :: UpdateApplication -> Maybe S3Location
$sel:displayName:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:description:UpdateApplication' :: UpdateApplication -> Maybe Text
$sel:attributesToDelete:UpdateApplication' :: UpdateApplication -> Maybe [ApplicationAttribute]
$sel:appBlockArn:UpdateApplication' :: UpdateApplication -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AppBlockArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
appBlockArn,
            (Key
"AttributesToDelete" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [ApplicationAttribute]
attributesToDelete,
            (Key
"Description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"DisplayName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
displayName,
            (Key
"IconS3Location" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe S3Location
iconS3Location,
            (Key
"LaunchParameters" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
launchParameters,
            (Key
"LaunchPath" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
launchPath,
            (Key
"WorkingDirectory" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
workingDirectory,
            forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name)
          ]
      )

instance Data.ToPath UpdateApplication where
  toPath :: UpdateApplication -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery UpdateApplication where
  toQuery :: UpdateApplication -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newUpdateApplicationResponse' smart constructor.
data UpdateApplicationResponse = UpdateApplicationResponse'
  { UpdateApplicationResponse -> Maybe Application
application :: Prelude.Maybe Application,
    -- | The response's http status code.
    UpdateApplicationResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateApplicationResponse -> UpdateApplicationResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateApplicationResponse -> UpdateApplicationResponse -> Bool
$c/= :: UpdateApplicationResponse -> UpdateApplicationResponse -> Bool
== :: UpdateApplicationResponse -> UpdateApplicationResponse -> Bool
$c== :: UpdateApplicationResponse -> UpdateApplicationResponse -> Bool
Prelude.Eq, ReadPrec [UpdateApplicationResponse]
ReadPrec UpdateApplicationResponse
Int -> ReadS UpdateApplicationResponse
ReadS [UpdateApplicationResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateApplicationResponse]
$creadListPrec :: ReadPrec [UpdateApplicationResponse]
readPrec :: ReadPrec UpdateApplicationResponse
$creadPrec :: ReadPrec UpdateApplicationResponse
readList :: ReadS [UpdateApplicationResponse]
$creadList :: ReadS [UpdateApplicationResponse]
readsPrec :: Int -> ReadS UpdateApplicationResponse
$creadsPrec :: Int -> ReadS UpdateApplicationResponse
Prelude.Read, Int -> UpdateApplicationResponse -> ShowS
[UpdateApplicationResponse] -> ShowS
UpdateApplicationResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateApplicationResponse] -> ShowS
$cshowList :: [UpdateApplicationResponse] -> ShowS
show :: UpdateApplicationResponse -> String
$cshow :: UpdateApplicationResponse -> String
showsPrec :: Int -> UpdateApplicationResponse -> ShowS
$cshowsPrec :: Int -> UpdateApplicationResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateApplicationResponse x -> UpdateApplicationResponse
forall x.
UpdateApplicationResponse -> Rep UpdateApplicationResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateApplicationResponse x -> UpdateApplicationResponse
$cfrom :: forall x.
UpdateApplicationResponse -> Rep UpdateApplicationResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateApplicationResponse' 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:
--
-- 'application', 'updateApplicationResponse_application' - Undocumented member.
--
-- 'httpStatus', 'updateApplicationResponse_httpStatus' - The response's http status code.
newUpdateApplicationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateApplicationResponse
newUpdateApplicationResponse :: Int -> UpdateApplicationResponse
newUpdateApplicationResponse Int
pHttpStatus_ =
  UpdateApplicationResponse'
    { $sel:application:UpdateApplicationResponse' :: Maybe Application
application =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateApplicationResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Undocumented member.
updateApplicationResponse_application :: Lens.Lens' UpdateApplicationResponse (Prelude.Maybe Application)
updateApplicationResponse_application :: Lens' UpdateApplicationResponse (Maybe Application)
updateApplicationResponse_application = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplicationResponse' {Maybe Application
application :: Maybe Application
$sel:application:UpdateApplicationResponse' :: UpdateApplicationResponse -> Maybe Application
application} -> Maybe Application
application) (\s :: UpdateApplicationResponse
s@UpdateApplicationResponse' {} Maybe Application
a -> UpdateApplicationResponse
s {$sel:application:UpdateApplicationResponse' :: Maybe Application
application = Maybe Application
a} :: UpdateApplicationResponse)

-- | The response's http status code.
updateApplicationResponse_httpStatus :: Lens.Lens' UpdateApplicationResponse Prelude.Int
updateApplicationResponse_httpStatus :: Lens' UpdateApplicationResponse Int
updateApplicationResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateApplicationResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateApplicationResponse' :: UpdateApplicationResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateApplicationResponse
s@UpdateApplicationResponse' {} Int
a -> UpdateApplicationResponse
s {$sel:httpStatus:UpdateApplicationResponse' :: Int
httpStatus = Int
a} :: UpdateApplicationResponse)

instance Prelude.NFData UpdateApplicationResponse where
  rnf :: UpdateApplicationResponse -> ()
rnf UpdateApplicationResponse' {Int
Maybe Application
httpStatus :: Int
application :: Maybe Application
$sel:httpStatus:UpdateApplicationResponse' :: UpdateApplicationResponse -> Int
$sel:application:UpdateApplicationResponse' :: UpdateApplicationResponse -> Maybe Application
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Application
application
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus