{-# 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.IoT.CancelAuditMitigationActionsTask
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Cancels a mitigation action task that is in progress. If the task is not
-- in progress, an InvalidRequestException occurs.
--
-- Requires permission to access the
-- <https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions CancelAuditMitigationActionsTask>
-- action.
module Amazonka.IoT.CancelAuditMitigationActionsTask
  ( -- * Creating a Request
    CancelAuditMitigationActionsTask (..),
    newCancelAuditMitigationActionsTask,

    -- * Request Lenses
    cancelAuditMitigationActionsTask_taskId,

    -- * Destructuring the Response
    CancelAuditMitigationActionsTaskResponse (..),
    newCancelAuditMitigationActionsTaskResponse,

    -- * Response Lenses
    cancelAuditMitigationActionsTaskResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCancelAuditMitigationActionsTask' smart constructor.
data CancelAuditMitigationActionsTask = CancelAuditMitigationActionsTask'
  { -- | The unique identifier for the task that you want to cancel.
    CancelAuditMitigationActionsTask -> Text
taskId :: Prelude.Text
  }
  deriving (CancelAuditMitigationActionsTask
-> CancelAuditMitigationActionsTask -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CancelAuditMitigationActionsTask
-> CancelAuditMitigationActionsTask -> Bool
$c/= :: CancelAuditMitigationActionsTask
-> CancelAuditMitigationActionsTask -> Bool
== :: CancelAuditMitigationActionsTask
-> CancelAuditMitigationActionsTask -> Bool
$c== :: CancelAuditMitigationActionsTask
-> CancelAuditMitigationActionsTask -> Bool
Prelude.Eq, ReadPrec [CancelAuditMitigationActionsTask]
ReadPrec CancelAuditMitigationActionsTask
Int -> ReadS CancelAuditMitigationActionsTask
ReadS [CancelAuditMitigationActionsTask]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CancelAuditMitigationActionsTask]
$creadListPrec :: ReadPrec [CancelAuditMitigationActionsTask]
readPrec :: ReadPrec CancelAuditMitigationActionsTask
$creadPrec :: ReadPrec CancelAuditMitigationActionsTask
readList :: ReadS [CancelAuditMitigationActionsTask]
$creadList :: ReadS [CancelAuditMitigationActionsTask]
readsPrec :: Int -> ReadS CancelAuditMitigationActionsTask
$creadsPrec :: Int -> ReadS CancelAuditMitigationActionsTask
Prelude.Read, Int -> CancelAuditMitigationActionsTask -> ShowS
[CancelAuditMitigationActionsTask] -> ShowS
CancelAuditMitigationActionsTask -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CancelAuditMitigationActionsTask] -> ShowS
$cshowList :: [CancelAuditMitigationActionsTask] -> ShowS
show :: CancelAuditMitigationActionsTask -> String
$cshow :: CancelAuditMitigationActionsTask -> String
showsPrec :: Int -> CancelAuditMitigationActionsTask -> ShowS
$cshowsPrec :: Int -> CancelAuditMitigationActionsTask -> ShowS
Prelude.Show, forall x.
Rep CancelAuditMitigationActionsTask x
-> CancelAuditMitigationActionsTask
forall x.
CancelAuditMitigationActionsTask
-> Rep CancelAuditMitigationActionsTask x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CancelAuditMitigationActionsTask x
-> CancelAuditMitigationActionsTask
$cfrom :: forall x.
CancelAuditMitigationActionsTask
-> Rep CancelAuditMitigationActionsTask x
Prelude.Generic)

-- |
-- Create a value of 'CancelAuditMitigationActionsTask' 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:
--
-- 'taskId', 'cancelAuditMitigationActionsTask_taskId' - The unique identifier for the task that you want to cancel.
newCancelAuditMitigationActionsTask ::
  -- | 'taskId'
  Prelude.Text ->
  CancelAuditMitigationActionsTask
newCancelAuditMitigationActionsTask :: Text -> CancelAuditMitigationActionsTask
newCancelAuditMitigationActionsTask Text
pTaskId_ =
  CancelAuditMitigationActionsTask'
    { $sel:taskId:CancelAuditMitigationActionsTask' :: Text
taskId =
        Text
pTaskId_
    }

-- | The unique identifier for the task that you want to cancel.
cancelAuditMitigationActionsTask_taskId :: Lens.Lens' CancelAuditMitigationActionsTask Prelude.Text
cancelAuditMitigationActionsTask_taskId :: Lens' CancelAuditMitigationActionsTask Text
cancelAuditMitigationActionsTask_taskId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CancelAuditMitigationActionsTask' {Text
taskId :: Text
$sel:taskId:CancelAuditMitigationActionsTask' :: CancelAuditMitigationActionsTask -> Text
taskId} -> Text
taskId) (\s :: CancelAuditMitigationActionsTask
s@CancelAuditMitigationActionsTask' {} Text
a -> CancelAuditMitigationActionsTask
s {$sel:taskId:CancelAuditMitigationActionsTask' :: Text
taskId = Text
a} :: CancelAuditMitigationActionsTask)

instance
  Core.AWSRequest
    CancelAuditMitigationActionsTask
  where
  type
    AWSResponse CancelAuditMitigationActionsTask =
      CancelAuditMitigationActionsTaskResponse
  request :: (Service -> Service)
-> CancelAuditMitigationActionsTask
-> Request CancelAuditMitigationActionsTask
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.putJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CancelAuditMitigationActionsTask
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse CancelAuditMitigationActionsTask)))
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 -> CancelAuditMitigationActionsTaskResponse
CancelAuditMitigationActionsTaskResponse'
            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
    CancelAuditMitigationActionsTask
  where
  hashWithSalt :: Int -> CancelAuditMitigationActionsTask -> Int
hashWithSalt
    Int
_salt
    CancelAuditMitigationActionsTask' {Text
taskId :: Text
$sel:taskId:CancelAuditMitigationActionsTask' :: CancelAuditMitigationActionsTask -> Text
..} =
      Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
taskId

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

instance
  Data.ToHeaders
    CancelAuditMitigationActionsTask
  where
  toHeaders :: CancelAuditMitigationActionsTask -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToJSON CancelAuditMitigationActionsTask where
  toJSON :: CancelAuditMitigationActionsTask -> Value
toJSON = forall a b. a -> b -> a
Prelude.const (Object -> Value
Data.Object forall a. Monoid a => a
Prelude.mempty)

instance Data.ToPath CancelAuditMitigationActionsTask where
  toPath :: CancelAuditMitigationActionsTask -> ByteString
toPath CancelAuditMitigationActionsTask' {Text
taskId :: Text
$sel:taskId:CancelAuditMitigationActionsTask' :: CancelAuditMitigationActionsTask -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/audit/mitigationactions/tasks/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
taskId,
        ByteString
"/cancel"
      ]

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

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

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

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

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