{-# 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.IoTDeviceAdvisor.DeleteSuiteDefinition
-- 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 Device Advisor test suite.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions DeleteSuiteDefinition>
-- action.
module Amazonka.IoTDeviceAdvisor.DeleteSuiteDefinition
  ( -- * Creating a Request
    DeleteSuiteDefinition (..),
    newDeleteSuiteDefinition,

    -- * Request Lenses
    deleteSuiteDefinition_suiteDefinitionId,

    -- * Destructuring the Response
    DeleteSuiteDefinitionResponse (..),
    newDeleteSuiteDefinitionResponse,

    -- * Response Lenses
    deleteSuiteDefinitionResponse_httpStatus,
  )
where

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

-- | /See:/ 'newDeleteSuiteDefinition' smart constructor.
data DeleteSuiteDefinition = DeleteSuiteDefinition'
  { -- | Suite definition ID of the test suite to be deleted.
    DeleteSuiteDefinition -> Text
suiteDefinitionId :: Prelude.Text
  }
  deriving (DeleteSuiteDefinition -> DeleteSuiteDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteSuiteDefinition -> DeleteSuiteDefinition -> Bool
$c/= :: DeleteSuiteDefinition -> DeleteSuiteDefinition -> Bool
== :: DeleteSuiteDefinition -> DeleteSuiteDefinition -> Bool
$c== :: DeleteSuiteDefinition -> DeleteSuiteDefinition -> Bool
Prelude.Eq, ReadPrec [DeleteSuiteDefinition]
ReadPrec DeleteSuiteDefinition
Int -> ReadS DeleteSuiteDefinition
ReadS [DeleteSuiteDefinition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteSuiteDefinition]
$creadListPrec :: ReadPrec [DeleteSuiteDefinition]
readPrec :: ReadPrec DeleteSuiteDefinition
$creadPrec :: ReadPrec DeleteSuiteDefinition
readList :: ReadS [DeleteSuiteDefinition]
$creadList :: ReadS [DeleteSuiteDefinition]
readsPrec :: Int -> ReadS DeleteSuiteDefinition
$creadsPrec :: Int -> ReadS DeleteSuiteDefinition
Prelude.Read, Int -> DeleteSuiteDefinition -> ShowS
[DeleteSuiteDefinition] -> ShowS
DeleteSuiteDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteSuiteDefinition] -> ShowS
$cshowList :: [DeleteSuiteDefinition] -> ShowS
show :: DeleteSuiteDefinition -> String
$cshow :: DeleteSuiteDefinition -> String
showsPrec :: Int -> DeleteSuiteDefinition -> ShowS
$cshowsPrec :: Int -> DeleteSuiteDefinition -> ShowS
Prelude.Show, forall x. Rep DeleteSuiteDefinition x -> DeleteSuiteDefinition
forall x. DeleteSuiteDefinition -> Rep DeleteSuiteDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteSuiteDefinition x -> DeleteSuiteDefinition
$cfrom :: forall x. DeleteSuiteDefinition -> Rep DeleteSuiteDefinition x
Prelude.Generic)

-- |
-- Create a value of 'DeleteSuiteDefinition' 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:
--
-- 'suiteDefinitionId', 'deleteSuiteDefinition_suiteDefinitionId' - Suite definition ID of the test suite to be deleted.
newDeleteSuiteDefinition ::
  -- | 'suiteDefinitionId'
  Prelude.Text ->
  DeleteSuiteDefinition
newDeleteSuiteDefinition :: Text -> DeleteSuiteDefinition
newDeleteSuiteDefinition Text
pSuiteDefinitionId_ =
  DeleteSuiteDefinition'
    { $sel:suiteDefinitionId:DeleteSuiteDefinition' :: Text
suiteDefinitionId =
        Text
pSuiteDefinitionId_
    }

-- | Suite definition ID of the test suite to be deleted.
deleteSuiteDefinition_suiteDefinitionId :: Lens.Lens' DeleteSuiteDefinition Prelude.Text
deleteSuiteDefinition_suiteDefinitionId :: Lens' DeleteSuiteDefinition Text
deleteSuiteDefinition_suiteDefinitionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSuiteDefinition' {Text
suiteDefinitionId :: Text
$sel:suiteDefinitionId:DeleteSuiteDefinition' :: DeleteSuiteDefinition -> Text
suiteDefinitionId} -> Text
suiteDefinitionId) (\s :: DeleteSuiteDefinition
s@DeleteSuiteDefinition' {} Text
a -> DeleteSuiteDefinition
s {$sel:suiteDefinitionId:DeleteSuiteDefinition' :: Text
suiteDefinitionId = Text
a} :: DeleteSuiteDefinition)

instance Core.AWSRequest DeleteSuiteDefinition where
  type
    AWSResponse DeleteSuiteDefinition =
      DeleteSuiteDefinitionResponse
  request :: (Service -> Service)
-> DeleteSuiteDefinition -> Request DeleteSuiteDefinition
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 DeleteSuiteDefinition
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteSuiteDefinition)))
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 -> DeleteSuiteDefinitionResponse
DeleteSuiteDefinitionResponse'
            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 DeleteSuiteDefinition where
  hashWithSalt :: Int -> DeleteSuiteDefinition -> Int
hashWithSalt Int
_salt DeleteSuiteDefinition' {Text
suiteDefinitionId :: Text
$sel:suiteDefinitionId:DeleteSuiteDefinition' :: DeleteSuiteDefinition -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
suiteDefinitionId

instance Prelude.NFData DeleteSuiteDefinition where
  rnf :: DeleteSuiteDefinition -> ()
rnf DeleteSuiteDefinition' {Text
suiteDefinitionId :: Text
$sel:suiteDefinitionId:DeleteSuiteDefinition' :: DeleteSuiteDefinition -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
suiteDefinitionId

instance Data.ToHeaders DeleteSuiteDefinition where
  toHeaders :: DeleteSuiteDefinition -> 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.ToPath DeleteSuiteDefinition where
  toPath :: DeleteSuiteDefinition -> ByteString
toPath DeleteSuiteDefinition' {Text
suiteDefinitionId :: Text
$sel:suiteDefinitionId:DeleteSuiteDefinition' :: DeleteSuiteDefinition -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/suiteDefinitions/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
suiteDefinitionId]

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

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

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

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

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