{-# 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.AppConfig.DeleteEnvironment
-- 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 an environment. Deleting an environment does not delete a
-- configuration from a host.
module Amazonka.AppConfig.DeleteEnvironment
  ( -- * Creating a Request
    DeleteEnvironment (..),
    newDeleteEnvironment,

    -- * Request Lenses
    deleteEnvironment_applicationId,
    deleteEnvironment_environmentId,

    -- * Destructuring the Response
    DeleteEnvironmentResponse (..),
    newDeleteEnvironmentResponse,
  )
where

import Amazonka.AppConfig.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:/ 'newDeleteEnvironment' smart constructor.
data DeleteEnvironment = DeleteEnvironment'
  { -- | The application ID that includes the environment that you want to
    -- delete.
    DeleteEnvironment -> Text
applicationId :: Prelude.Text,
    -- | The ID of the environment that you want to delete.
    DeleteEnvironment -> Text
environmentId :: Prelude.Text
  }
  deriving (DeleteEnvironment -> DeleteEnvironment -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteEnvironment -> DeleteEnvironment -> Bool
$c/= :: DeleteEnvironment -> DeleteEnvironment -> Bool
== :: DeleteEnvironment -> DeleteEnvironment -> Bool
$c== :: DeleteEnvironment -> DeleteEnvironment -> Bool
Prelude.Eq, ReadPrec [DeleteEnvironment]
ReadPrec DeleteEnvironment
Int -> ReadS DeleteEnvironment
ReadS [DeleteEnvironment]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteEnvironment]
$creadListPrec :: ReadPrec [DeleteEnvironment]
readPrec :: ReadPrec DeleteEnvironment
$creadPrec :: ReadPrec DeleteEnvironment
readList :: ReadS [DeleteEnvironment]
$creadList :: ReadS [DeleteEnvironment]
readsPrec :: Int -> ReadS DeleteEnvironment
$creadsPrec :: Int -> ReadS DeleteEnvironment
Prelude.Read, Int -> DeleteEnvironment -> ShowS
[DeleteEnvironment] -> ShowS
DeleteEnvironment -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteEnvironment] -> ShowS
$cshowList :: [DeleteEnvironment] -> ShowS
show :: DeleteEnvironment -> String
$cshow :: DeleteEnvironment -> String
showsPrec :: Int -> DeleteEnvironment -> ShowS
$cshowsPrec :: Int -> DeleteEnvironment -> ShowS
Prelude.Show, forall x. Rep DeleteEnvironment x -> DeleteEnvironment
forall x. DeleteEnvironment -> Rep DeleteEnvironment x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteEnvironment x -> DeleteEnvironment
$cfrom :: forall x. DeleteEnvironment -> Rep DeleteEnvironment x
Prelude.Generic)

-- |
-- Create a value of 'DeleteEnvironment' 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:
--
-- 'applicationId', 'deleteEnvironment_applicationId' - The application ID that includes the environment that you want to
-- delete.
--
-- 'environmentId', 'deleteEnvironment_environmentId' - The ID of the environment that you want to delete.
newDeleteEnvironment ::
  -- | 'applicationId'
  Prelude.Text ->
  -- | 'environmentId'
  Prelude.Text ->
  DeleteEnvironment
newDeleteEnvironment :: Text -> Text -> DeleteEnvironment
newDeleteEnvironment Text
pApplicationId_ Text
pEnvironmentId_ =
  DeleteEnvironment'
    { $sel:applicationId:DeleteEnvironment' :: Text
applicationId = Text
pApplicationId_,
      $sel:environmentId:DeleteEnvironment' :: Text
environmentId = Text
pEnvironmentId_
    }

-- | The application ID that includes the environment that you want to
-- delete.
deleteEnvironment_applicationId :: Lens.Lens' DeleteEnvironment Prelude.Text
deleteEnvironment_applicationId :: Lens' DeleteEnvironment Text
deleteEnvironment_applicationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteEnvironment' {Text
applicationId :: Text
$sel:applicationId:DeleteEnvironment' :: DeleteEnvironment -> Text
applicationId} -> Text
applicationId) (\s :: DeleteEnvironment
s@DeleteEnvironment' {} Text
a -> DeleteEnvironment
s {$sel:applicationId:DeleteEnvironment' :: Text
applicationId = Text
a} :: DeleteEnvironment)

-- | The ID of the environment that you want to delete.
deleteEnvironment_environmentId :: Lens.Lens' DeleteEnvironment Prelude.Text
deleteEnvironment_environmentId :: Lens' DeleteEnvironment Text
deleteEnvironment_environmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteEnvironment' {Text
environmentId :: Text
$sel:environmentId:DeleteEnvironment' :: DeleteEnvironment -> Text
environmentId} -> Text
environmentId) (\s :: DeleteEnvironment
s@DeleteEnvironment' {} Text
a -> DeleteEnvironment
s {$sel:environmentId:DeleteEnvironment' :: Text
environmentId = Text
a} :: DeleteEnvironment)

instance Core.AWSRequest DeleteEnvironment where
  type
    AWSResponse DeleteEnvironment =
      DeleteEnvironmentResponse
  request :: (Service -> Service)
-> DeleteEnvironment -> Request DeleteEnvironment
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.delete (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DeleteEnvironment
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteEnvironment)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull DeleteEnvironmentResponse
DeleteEnvironmentResponse'

instance Prelude.Hashable DeleteEnvironment where
  hashWithSalt :: Int -> DeleteEnvironment -> Int
hashWithSalt Int
_salt DeleteEnvironment' {Text
environmentId :: Text
applicationId :: Text
$sel:environmentId:DeleteEnvironment' :: DeleteEnvironment -> Text
$sel:applicationId:DeleteEnvironment' :: DeleteEnvironment -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
applicationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
environmentId

instance Prelude.NFData DeleteEnvironment where
  rnf :: DeleteEnvironment -> ()
rnf DeleteEnvironment' {Text
environmentId :: Text
applicationId :: Text
$sel:environmentId:DeleteEnvironment' :: DeleteEnvironment -> Text
$sel:applicationId:DeleteEnvironment' :: DeleteEnvironment -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
applicationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
environmentId

instance Data.ToHeaders DeleteEnvironment where
  toHeaders :: DeleteEnvironment -> [Header]
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 -> [Header]
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToPath DeleteEnvironment where
  toPath :: DeleteEnvironment -> ByteString
toPath DeleteEnvironment' {Text
environmentId :: Text
applicationId :: Text
$sel:environmentId:DeleteEnvironment' :: DeleteEnvironment -> Text
$sel:applicationId:DeleteEnvironment' :: DeleteEnvironment -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/applications/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
applicationId,
        ByteString
"/environments/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
environmentId
      ]

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

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

-- |
-- Create a value of 'DeleteEnvironmentResponse' 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.
newDeleteEnvironmentResponse ::
  DeleteEnvironmentResponse
newDeleteEnvironmentResponse :: DeleteEnvironmentResponse
newDeleteEnvironmentResponse =
  DeleteEnvironmentResponse
DeleteEnvironmentResponse'

instance Prelude.NFData DeleteEnvironmentResponse where
  rnf :: DeleteEnvironmentResponse -> ()
rnf DeleteEnvironmentResponse
_ = ()