{-# 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.Braket.CancelQuantumTask
-- 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 the specified task.
module Amazonka.Braket.CancelQuantumTask
  ( -- * Creating a Request
    CancelQuantumTask (..),
    newCancelQuantumTask,

    -- * Request Lenses
    cancelQuantumTask_clientToken,
    cancelQuantumTask_quantumTaskArn,

    -- * Destructuring the Response
    CancelQuantumTaskResponse (..),
    newCancelQuantumTaskResponse,

    -- * Response Lenses
    cancelQuantumTaskResponse_httpStatus,
    cancelQuantumTaskResponse_cancellationStatus,
    cancelQuantumTaskResponse_quantumTaskArn,
  )
where

import Amazonka.Braket.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:/ 'newCancelQuantumTask' smart constructor.
data CancelQuantumTask = CancelQuantumTask'
  { -- | The client token associated with the request.
    CancelQuantumTask -> Text
clientToken :: Prelude.Text,
    -- | The ARN of the task to cancel.
    CancelQuantumTask -> Text
quantumTaskArn :: Prelude.Text
  }
  deriving (CancelQuantumTask -> CancelQuantumTask -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CancelQuantumTask -> CancelQuantumTask -> Bool
$c/= :: CancelQuantumTask -> CancelQuantumTask -> Bool
== :: CancelQuantumTask -> CancelQuantumTask -> Bool
$c== :: CancelQuantumTask -> CancelQuantumTask -> Bool
Prelude.Eq, ReadPrec [CancelQuantumTask]
ReadPrec CancelQuantumTask
Int -> ReadS CancelQuantumTask
ReadS [CancelQuantumTask]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CancelQuantumTask]
$creadListPrec :: ReadPrec [CancelQuantumTask]
readPrec :: ReadPrec CancelQuantumTask
$creadPrec :: ReadPrec CancelQuantumTask
readList :: ReadS [CancelQuantumTask]
$creadList :: ReadS [CancelQuantumTask]
readsPrec :: Int -> ReadS CancelQuantumTask
$creadsPrec :: Int -> ReadS CancelQuantumTask
Prelude.Read, Int -> CancelQuantumTask -> ShowS
[CancelQuantumTask] -> ShowS
CancelQuantumTask -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CancelQuantumTask] -> ShowS
$cshowList :: [CancelQuantumTask] -> ShowS
show :: CancelQuantumTask -> String
$cshow :: CancelQuantumTask -> String
showsPrec :: Int -> CancelQuantumTask -> ShowS
$cshowsPrec :: Int -> CancelQuantumTask -> ShowS
Prelude.Show, forall x. Rep CancelQuantumTask x -> CancelQuantumTask
forall x. CancelQuantumTask -> Rep CancelQuantumTask x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CancelQuantumTask x -> CancelQuantumTask
$cfrom :: forall x. CancelQuantumTask -> Rep CancelQuantumTask x
Prelude.Generic)

-- |
-- Create a value of 'CancelQuantumTask' 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:
--
-- 'clientToken', 'cancelQuantumTask_clientToken' - The client token associated with the request.
--
-- 'quantumTaskArn', 'cancelQuantumTask_quantumTaskArn' - The ARN of the task to cancel.
newCancelQuantumTask ::
  -- | 'clientToken'
  Prelude.Text ->
  -- | 'quantumTaskArn'
  Prelude.Text ->
  CancelQuantumTask
newCancelQuantumTask :: Text -> Text -> CancelQuantumTask
newCancelQuantumTask Text
pClientToken_ Text
pQuantumTaskArn_ =
  CancelQuantumTask'
    { $sel:clientToken:CancelQuantumTask' :: Text
clientToken = Text
pClientToken_,
      $sel:quantumTaskArn:CancelQuantumTask' :: Text
quantumTaskArn = Text
pQuantumTaskArn_
    }

-- | The client token associated with the request.
cancelQuantumTask_clientToken :: Lens.Lens' CancelQuantumTask Prelude.Text
cancelQuantumTask_clientToken :: Lens' CancelQuantumTask Text
cancelQuantumTask_clientToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CancelQuantumTask' {Text
clientToken :: Text
$sel:clientToken:CancelQuantumTask' :: CancelQuantumTask -> Text
clientToken} -> Text
clientToken) (\s :: CancelQuantumTask
s@CancelQuantumTask' {} Text
a -> CancelQuantumTask
s {$sel:clientToken:CancelQuantumTask' :: Text
clientToken = Text
a} :: CancelQuantumTask)

-- | The ARN of the task to cancel.
cancelQuantumTask_quantumTaskArn :: Lens.Lens' CancelQuantumTask Prelude.Text
cancelQuantumTask_quantumTaskArn :: Lens' CancelQuantumTask Text
cancelQuantumTask_quantumTaskArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CancelQuantumTask' {Text
quantumTaskArn :: Text
$sel:quantumTaskArn:CancelQuantumTask' :: CancelQuantumTask -> Text
quantumTaskArn} -> Text
quantumTaskArn) (\s :: CancelQuantumTask
s@CancelQuantumTask' {} Text
a -> CancelQuantumTask
s {$sel:quantumTaskArn:CancelQuantumTask' :: Text
quantumTaskArn = Text
a} :: CancelQuantumTask)

instance Core.AWSRequest CancelQuantumTask where
  type
    AWSResponse CancelQuantumTask =
      CancelQuantumTaskResponse
  request :: (Service -> Service)
-> CancelQuantumTask -> Request CancelQuantumTask
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 CancelQuantumTask
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CancelQuantumTask)))
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 ->
          Int -> CancellationStatus -> Text -> CancelQuantumTaskResponse
CancelQuantumTaskResponse'
            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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"cancellationStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"quantumTaskArn")
      )

instance Prelude.Hashable CancelQuantumTask where
  hashWithSalt :: Int -> CancelQuantumTask -> Int
hashWithSalt Int
_salt CancelQuantumTask' {Text
quantumTaskArn :: Text
clientToken :: Text
$sel:quantumTaskArn:CancelQuantumTask' :: CancelQuantumTask -> Text
$sel:clientToken:CancelQuantumTask' :: CancelQuantumTask -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clientToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
quantumTaskArn

instance Prelude.NFData CancelQuantumTask where
  rnf :: CancelQuantumTask -> ()
rnf CancelQuantumTask' {Text
quantumTaskArn :: Text
clientToken :: Text
$sel:quantumTaskArn:CancelQuantumTask' :: CancelQuantumTask -> Text
$sel:clientToken:CancelQuantumTask' :: CancelQuantumTask -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
clientToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
quantumTaskArn

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

instance Data.ToPath CancelQuantumTask where
  toPath :: CancelQuantumTask -> ByteString
toPath CancelQuantumTask' {Text
quantumTaskArn :: Text
clientToken :: Text
$sel:quantumTaskArn:CancelQuantumTask' :: CancelQuantumTask -> Text
$sel:clientToken:CancelQuantumTask' :: CancelQuantumTask -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/quantum-task/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
quantumTaskArn,
        ByteString
"/cancel"
      ]

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

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

-- |
-- Create a value of 'CancelQuantumTaskResponse' 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', 'cancelQuantumTaskResponse_httpStatus' - The response's http status code.
--
-- 'cancellationStatus', 'cancelQuantumTaskResponse_cancellationStatus' - The status of the cancellation request.
--
-- 'quantumTaskArn', 'cancelQuantumTaskResponse_quantumTaskArn' - The ARN of the task.
newCancelQuantumTaskResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'cancellationStatus'
  CancellationStatus ->
  -- | 'quantumTaskArn'
  Prelude.Text ->
  CancelQuantumTaskResponse
newCancelQuantumTaskResponse :: Int -> CancellationStatus -> Text -> CancelQuantumTaskResponse
newCancelQuantumTaskResponse
  Int
pHttpStatus_
  CancellationStatus
pCancellationStatus_
  Text
pQuantumTaskArn_ =
    CancelQuantumTaskResponse'
      { $sel:httpStatus:CancelQuantumTaskResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:cancellationStatus:CancelQuantumTaskResponse' :: CancellationStatus
cancellationStatus = CancellationStatus
pCancellationStatus_,
        $sel:quantumTaskArn:CancelQuantumTaskResponse' :: Text
quantumTaskArn = Text
pQuantumTaskArn_
      }

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

-- | The status of the cancellation request.
cancelQuantumTaskResponse_cancellationStatus :: Lens.Lens' CancelQuantumTaskResponse CancellationStatus
cancelQuantumTaskResponse_cancellationStatus :: Lens' CancelQuantumTaskResponse CancellationStatus
cancelQuantumTaskResponse_cancellationStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CancelQuantumTaskResponse' {CancellationStatus
cancellationStatus :: CancellationStatus
$sel:cancellationStatus:CancelQuantumTaskResponse' :: CancelQuantumTaskResponse -> CancellationStatus
cancellationStatus} -> CancellationStatus
cancellationStatus) (\s :: CancelQuantumTaskResponse
s@CancelQuantumTaskResponse' {} CancellationStatus
a -> CancelQuantumTaskResponse
s {$sel:cancellationStatus:CancelQuantumTaskResponse' :: CancellationStatus
cancellationStatus = CancellationStatus
a} :: CancelQuantumTaskResponse)

-- | The ARN of the task.
cancelQuantumTaskResponse_quantumTaskArn :: Lens.Lens' CancelQuantumTaskResponse Prelude.Text
cancelQuantumTaskResponse_quantumTaskArn :: Lens' CancelQuantumTaskResponse Text
cancelQuantumTaskResponse_quantumTaskArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CancelQuantumTaskResponse' {Text
quantumTaskArn :: Text
$sel:quantumTaskArn:CancelQuantumTaskResponse' :: CancelQuantumTaskResponse -> Text
quantumTaskArn} -> Text
quantumTaskArn) (\s :: CancelQuantumTaskResponse
s@CancelQuantumTaskResponse' {} Text
a -> CancelQuantumTaskResponse
s {$sel:quantumTaskArn:CancelQuantumTaskResponse' :: Text
quantumTaskArn = Text
a} :: CancelQuantumTaskResponse)

instance Prelude.NFData CancelQuantumTaskResponse where
  rnf :: CancelQuantumTaskResponse -> ()
rnf CancelQuantumTaskResponse' {Int
Text
CancellationStatus
quantumTaskArn :: Text
cancellationStatus :: CancellationStatus
httpStatus :: Int
$sel:quantumTaskArn:CancelQuantumTaskResponse' :: CancelQuantumTaskResponse -> Text
$sel:cancellationStatus:CancelQuantumTaskResponse' :: CancelQuantumTaskResponse -> CancellationStatus
$sel:httpStatus:CancelQuantumTaskResponse' :: CancelQuantumTaskResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf CancellationStatus
cancellationStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
quantumTaskArn