{-# 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.RobOMaker.DeleteSimulationApplication
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes a simulation application.
module Amazonka.RobOMaker.DeleteSimulationApplication
  ( -- * Creating a Request
    DeleteSimulationApplication (..),
    newDeleteSimulationApplication,

    -- * Request Lenses
    deleteSimulationApplication_applicationVersion,
    deleteSimulationApplication_application,

    -- * Destructuring the Response
    DeleteSimulationApplicationResponse (..),
    newDeleteSimulationApplicationResponse,

    -- * Response Lenses
    deleteSimulationApplicationResponse_httpStatus,
  )
where

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
import Amazonka.RobOMaker.Types

-- | /See:/ 'newDeleteSimulationApplication' smart constructor.
data DeleteSimulationApplication = DeleteSimulationApplication'
  { -- | The version of the simulation application to delete.
    DeleteSimulationApplication -> Maybe Text
applicationVersion :: Prelude.Maybe Prelude.Text,
    -- | The application information for the simulation application to delete.
    DeleteSimulationApplication -> Text
application :: Prelude.Text
  }
  deriving (DeleteSimulationApplication -> DeleteSimulationApplication -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteSimulationApplication -> DeleteSimulationApplication -> Bool
$c/= :: DeleteSimulationApplication -> DeleteSimulationApplication -> Bool
== :: DeleteSimulationApplication -> DeleteSimulationApplication -> Bool
$c== :: DeleteSimulationApplication -> DeleteSimulationApplication -> Bool
Prelude.Eq, ReadPrec [DeleteSimulationApplication]
ReadPrec DeleteSimulationApplication
Int -> ReadS DeleteSimulationApplication
ReadS [DeleteSimulationApplication]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteSimulationApplication]
$creadListPrec :: ReadPrec [DeleteSimulationApplication]
readPrec :: ReadPrec DeleteSimulationApplication
$creadPrec :: ReadPrec DeleteSimulationApplication
readList :: ReadS [DeleteSimulationApplication]
$creadList :: ReadS [DeleteSimulationApplication]
readsPrec :: Int -> ReadS DeleteSimulationApplication
$creadsPrec :: Int -> ReadS DeleteSimulationApplication
Prelude.Read, Int -> DeleteSimulationApplication -> ShowS
[DeleteSimulationApplication] -> ShowS
DeleteSimulationApplication -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteSimulationApplication] -> ShowS
$cshowList :: [DeleteSimulationApplication] -> ShowS
show :: DeleteSimulationApplication -> String
$cshow :: DeleteSimulationApplication -> String
showsPrec :: Int -> DeleteSimulationApplication -> ShowS
$cshowsPrec :: Int -> DeleteSimulationApplication -> ShowS
Prelude.Show, forall x.
Rep DeleteSimulationApplication x -> DeleteSimulationApplication
forall x.
DeleteSimulationApplication -> Rep DeleteSimulationApplication x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteSimulationApplication x -> DeleteSimulationApplication
$cfrom :: forall x.
DeleteSimulationApplication -> Rep DeleteSimulationApplication x
Prelude.Generic)

-- |
-- Create a value of 'DeleteSimulationApplication' 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:
--
-- 'applicationVersion', 'deleteSimulationApplication_applicationVersion' - The version of the simulation application to delete.
--
-- 'application', 'deleteSimulationApplication_application' - The application information for the simulation application to delete.
newDeleteSimulationApplication ::
  -- | 'application'
  Prelude.Text ->
  DeleteSimulationApplication
newDeleteSimulationApplication :: Text -> DeleteSimulationApplication
newDeleteSimulationApplication Text
pApplication_ =
  DeleteSimulationApplication'
    { $sel:applicationVersion:DeleteSimulationApplication' :: Maybe Text
applicationVersion =
        forall a. Maybe a
Prelude.Nothing,
      $sel:application:DeleteSimulationApplication' :: Text
application = Text
pApplication_
    }

-- | The version of the simulation application to delete.
deleteSimulationApplication_applicationVersion :: Lens.Lens' DeleteSimulationApplication (Prelude.Maybe Prelude.Text)
deleteSimulationApplication_applicationVersion :: Lens' DeleteSimulationApplication (Maybe Text)
deleteSimulationApplication_applicationVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSimulationApplication' {Maybe Text
applicationVersion :: Maybe Text
$sel:applicationVersion:DeleteSimulationApplication' :: DeleteSimulationApplication -> Maybe Text
applicationVersion} -> Maybe Text
applicationVersion) (\s :: DeleteSimulationApplication
s@DeleteSimulationApplication' {} Maybe Text
a -> DeleteSimulationApplication
s {$sel:applicationVersion:DeleteSimulationApplication' :: Maybe Text
applicationVersion = Maybe Text
a} :: DeleteSimulationApplication)

-- | The application information for the simulation application to delete.
deleteSimulationApplication_application :: Lens.Lens' DeleteSimulationApplication Prelude.Text
deleteSimulationApplication_application :: Lens' DeleteSimulationApplication Text
deleteSimulationApplication_application = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSimulationApplication' {Text
application :: Text
$sel:application:DeleteSimulationApplication' :: DeleteSimulationApplication -> Text
application} -> Text
application) (\s :: DeleteSimulationApplication
s@DeleteSimulationApplication' {} Text
a -> DeleteSimulationApplication
s {$sel:application:DeleteSimulationApplication' :: Text
application = Text
a} :: DeleteSimulationApplication)

instance Core.AWSRequest DeleteSimulationApplication where
  type
    AWSResponse DeleteSimulationApplication =
      DeleteSimulationApplicationResponse
  request :: (Service -> Service)
-> DeleteSimulationApplication
-> Request DeleteSimulationApplication
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 DeleteSimulationApplication
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteSimulationApplication)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> () -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveEmpty
      ( \Int
s ResponseHeaders
h ()
x ->
          Int -> DeleteSimulationApplicationResponse
DeleteSimulationApplicationResponse'
            forall (f :: * -> *) a b. Functor 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 DeleteSimulationApplication where
  hashWithSalt :: Int -> DeleteSimulationApplication -> Int
hashWithSalt Int
_salt DeleteSimulationApplication' {Maybe Text
Text
application :: Text
applicationVersion :: Maybe Text
$sel:application:DeleteSimulationApplication' :: DeleteSimulationApplication -> Text
$sel:applicationVersion:DeleteSimulationApplication' :: DeleteSimulationApplication -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
applicationVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
application

instance Prelude.NFData DeleteSimulationApplication where
  rnf :: DeleteSimulationApplication -> ()
rnf DeleteSimulationApplication' {Maybe Text
Text
application :: Text
applicationVersion :: Maybe Text
$sel:application:DeleteSimulationApplication' :: DeleteSimulationApplication -> Text
$sel:applicationVersion:DeleteSimulationApplication' :: DeleteSimulationApplication -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
applicationVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
application

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

instance Data.ToJSON DeleteSimulationApplication where
  toJSON :: DeleteSimulationApplication -> Value
toJSON DeleteSimulationApplication' {Maybe Text
Text
application :: Text
applicationVersion :: Maybe Text
$sel:application:DeleteSimulationApplication' :: DeleteSimulationApplication -> Text
$sel:applicationVersion:DeleteSimulationApplication' :: DeleteSimulationApplication -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"applicationVersion" 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
applicationVersion,
            forall a. a -> Maybe a
Prelude.Just (Key
"application" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
application)
          ]
      )

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

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

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

-- |
-- Create a value of 'DeleteSimulationApplicationResponse' 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:
--
-- 'httpStatus', 'deleteSimulationApplicationResponse_httpStatus' - The response's http status code.
newDeleteSimulationApplicationResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteSimulationApplicationResponse
newDeleteSimulationApplicationResponse :: Int -> DeleteSimulationApplicationResponse
newDeleteSimulationApplicationResponse Int
pHttpStatus_ =
  DeleteSimulationApplicationResponse'
    { $sel:httpStatus:DeleteSimulationApplicationResponse' :: Int
httpStatus =
        Int
pHttpStatus_
    }

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

instance
  Prelude.NFData
    DeleteSimulationApplicationResponse
  where
  rnf :: DeleteSimulationApplicationResponse -> ()
rnf DeleteSimulationApplicationResponse' {Int
httpStatus :: Int
$sel:httpStatus:DeleteSimulationApplicationResponse' :: DeleteSimulationApplicationResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus