{-# 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.StorageGateway.DeleteChapCredentials
-- 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 Challenge-Handshake Authentication Protocol (CHAP) credentials
-- for a specified iSCSI target and initiator pair. This operation is
-- supported in volume and tape gateway types.
module Amazonka.StorageGateway.DeleteChapCredentials
  ( -- * Creating a Request
    DeleteChapCredentials (..),
    newDeleteChapCredentials,

    -- * Request Lenses
    deleteChapCredentials_targetARN,
    deleteChapCredentials_initiatorName,

    -- * Destructuring the Response
    DeleteChapCredentialsResponse (..),
    newDeleteChapCredentialsResponse,

    -- * Response Lenses
    deleteChapCredentialsResponse_initiatorName,
    deleteChapCredentialsResponse_targetARN,
    deleteChapCredentialsResponse_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.StorageGateway.Types

-- | A JSON object containing one or more of the following fields:
--
-- -   DeleteChapCredentialsInput$InitiatorName
--
-- -   DeleteChapCredentialsInput$TargetARN
--
-- /See:/ 'newDeleteChapCredentials' smart constructor.
data DeleteChapCredentials = DeleteChapCredentials'
  { -- | The Amazon Resource Name (ARN) of the iSCSI volume target. Use the
    -- DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN
    -- for specified VolumeARN.
    DeleteChapCredentials -> Text
targetARN :: Prelude.Text,
    -- | The iSCSI initiator that connects to the target.
    DeleteChapCredentials -> Text
initiatorName :: Prelude.Text
  }
  deriving (DeleteChapCredentials -> DeleteChapCredentials -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteChapCredentials -> DeleteChapCredentials -> Bool
$c/= :: DeleteChapCredentials -> DeleteChapCredentials -> Bool
== :: DeleteChapCredentials -> DeleteChapCredentials -> Bool
$c== :: DeleteChapCredentials -> DeleteChapCredentials -> Bool
Prelude.Eq, ReadPrec [DeleteChapCredentials]
ReadPrec DeleteChapCredentials
Int -> ReadS DeleteChapCredentials
ReadS [DeleteChapCredentials]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteChapCredentials]
$creadListPrec :: ReadPrec [DeleteChapCredentials]
readPrec :: ReadPrec DeleteChapCredentials
$creadPrec :: ReadPrec DeleteChapCredentials
readList :: ReadS [DeleteChapCredentials]
$creadList :: ReadS [DeleteChapCredentials]
readsPrec :: Int -> ReadS DeleteChapCredentials
$creadsPrec :: Int -> ReadS DeleteChapCredentials
Prelude.Read, Int -> DeleteChapCredentials -> ShowS
[DeleteChapCredentials] -> ShowS
DeleteChapCredentials -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteChapCredentials] -> ShowS
$cshowList :: [DeleteChapCredentials] -> ShowS
show :: DeleteChapCredentials -> String
$cshow :: DeleteChapCredentials -> String
showsPrec :: Int -> DeleteChapCredentials -> ShowS
$cshowsPrec :: Int -> DeleteChapCredentials -> ShowS
Prelude.Show, forall x. Rep DeleteChapCredentials x -> DeleteChapCredentials
forall x. DeleteChapCredentials -> Rep DeleteChapCredentials x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteChapCredentials x -> DeleteChapCredentials
$cfrom :: forall x. DeleteChapCredentials -> Rep DeleteChapCredentials x
Prelude.Generic)

-- |
-- Create a value of 'DeleteChapCredentials' 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:
--
-- 'targetARN', 'deleteChapCredentials_targetARN' - The Amazon Resource Name (ARN) of the iSCSI volume target. Use the
-- DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN
-- for specified VolumeARN.
--
-- 'initiatorName', 'deleteChapCredentials_initiatorName' - The iSCSI initiator that connects to the target.
newDeleteChapCredentials ::
  -- | 'targetARN'
  Prelude.Text ->
  -- | 'initiatorName'
  Prelude.Text ->
  DeleteChapCredentials
newDeleteChapCredentials :: Text -> Text -> DeleteChapCredentials
newDeleteChapCredentials Text
pTargetARN_ Text
pInitiatorName_ =
  DeleteChapCredentials'
    { $sel:targetARN:DeleteChapCredentials' :: Text
targetARN = Text
pTargetARN_,
      $sel:initiatorName:DeleteChapCredentials' :: Text
initiatorName = Text
pInitiatorName_
    }

-- | The Amazon Resource Name (ARN) of the iSCSI volume target. Use the
-- DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN
-- for specified VolumeARN.
deleteChapCredentials_targetARN :: Lens.Lens' DeleteChapCredentials Prelude.Text
deleteChapCredentials_targetARN :: Lens' DeleteChapCredentials Text
deleteChapCredentials_targetARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteChapCredentials' {Text
targetARN :: Text
$sel:targetARN:DeleteChapCredentials' :: DeleteChapCredentials -> Text
targetARN} -> Text
targetARN) (\s :: DeleteChapCredentials
s@DeleteChapCredentials' {} Text
a -> DeleteChapCredentials
s {$sel:targetARN:DeleteChapCredentials' :: Text
targetARN = Text
a} :: DeleteChapCredentials)

-- | The iSCSI initiator that connects to the target.
deleteChapCredentials_initiatorName :: Lens.Lens' DeleteChapCredentials Prelude.Text
deleteChapCredentials_initiatorName :: Lens' DeleteChapCredentials Text
deleteChapCredentials_initiatorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteChapCredentials' {Text
initiatorName :: Text
$sel:initiatorName:DeleteChapCredentials' :: DeleteChapCredentials -> Text
initiatorName} -> Text
initiatorName) (\s :: DeleteChapCredentials
s@DeleteChapCredentials' {} Text
a -> DeleteChapCredentials
s {$sel:initiatorName:DeleteChapCredentials' :: Text
initiatorName = Text
a} :: DeleteChapCredentials)

instance Core.AWSRequest DeleteChapCredentials where
  type
    AWSResponse DeleteChapCredentials =
      DeleteChapCredentialsResponse
  request :: (Service -> Service)
-> DeleteChapCredentials -> Request DeleteChapCredentials
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 DeleteChapCredentials
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteChapCredentials)))
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 ->
          Maybe Text -> Maybe Text -> Int -> DeleteChapCredentialsResponse
DeleteChapCredentialsResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"InitiatorName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"TargetARN")
            forall (f :: * -> *) a b. Applicative f => 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 DeleteChapCredentials where
  hashWithSalt :: Int -> DeleteChapCredentials -> Int
hashWithSalt Int
_salt DeleteChapCredentials' {Text
initiatorName :: Text
targetARN :: Text
$sel:initiatorName:DeleteChapCredentials' :: DeleteChapCredentials -> Text
$sel:targetARN:DeleteChapCredentials' :: DeleteChapCredentials -> Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
targetARN
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
initiatorName

instance Prelude.NFData DeleteChapCredentials where
  rnf :: DeleteChapCredentials -> ()
rnf DeleteChapCredentials' {Text
initiatorName :: Text
targetARN :: Text
$sel:initiatorName:DeleteChapCredentials' :: DeleteChapCredentials -> Text
$sel:targetARN:DeleteChapCredentials' :: DeleteChapCredentials -> Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Text
targetARN
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
initiatorName

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

instance Data.ToJSON DeleteChapCredentials where
  toJSON :: DeleteChapCredentials -> Value
toJSON DeleteChapCredentials' {Text
initiatorName :: Text
targetARN :: Text
$sel:initiatorName:DeleteChapCredentials' :: DeleteChapCredentials -> Text
$sel:targetARN:DeleteChapCredentials' :: DeleteChapCredentials -> Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just (Key
"TargetARN" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
targetARN),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"InitiatorName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
initiatorName)
          ]
      )

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

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

-- | A JSON object containing the following fields:
--
-- /See:/ 'newDeleteChapCredentialsResponse' smart constructor.
data DeleteChapCredentialsResponse = DeleteChapCredentialsResponse'
  { -- | The iSCSI initiator that connects to the target.
    DeleteChapCredentialsResponse -> Maybe Text
initiatorName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the target.
    DeleteChapCredentialsResponse -> Maybe Text
targetARN :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DeleteChapCredentialsResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeleteChapCredentialsResponse
-> DeleteChapCredentialsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteChapCredentialsResponse
-> DeleteChapCredentialsResponse -> Bool
$c/= :: DeleteChapCredentialsResponse
-> DeleteChapCredentialsResponse -> Bool
== :: DeleteChapCredentialsResponse
-> DeleteChapCredentialsResponse -> Bool
$c== :: DeleteChapCredentialsResponse
-> DeleteChapCredentialsResponse -> Bool
Prelude.Eq, ReadPrec [DeleteChapCredentialsResponse]
ReadPrec DeleteChapCredentialsResponse
Int -> ReadS DeleteChapCredentialsResponse
ReadS [DeleteChapCredentialsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteChapCredentialsResponse]
$creadListPrec :: ReadPrec [DeleteChapCredentialsResponse]
readPrec :: ReadPrec DeleteChapCredentialsResponse
$creadPrec :: ReadPrec DeleteChapCredentialsResponse
readList :: ReadS [DeleteChapCredentialsResponse]
$creadList :: ReadS [DeleteChapCredentialsResponse]
readsPrec :: Int -> ReadS DeleteChapCredentialsResponse
$creadsPrec :: Int -> ReadS DeleteChapCredentialsResponse
Prelude.Read, Int -> DeleteChapCredentialsResponse -> ShowS
[DeleteChapCredentialsResponse] -> ShowS
DeleteChapCredentialsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteChapCredentialsResponse] -> ShowS
$cshowList :: [DeleteChapCredentialsResponse] -> ShowS
show :: DeleteChapCredentialsResponse -> String
$cshow :: DeleteChapCredentialsResponse -> String
showsPrec :: Int -> DeleteChapCredentialsResponse -> ShowS
$cshowsPrec :: Int -> DeleteChapCredentialsResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteChapCredentialsResponse x
-> DeleteChapCredentialsResponse
forall x.
DeleteChapCredentialsResponse
-> Rep DeleteChapCredentialsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteChapCredentialsResponse x
-> DeleteChapCredentialsResponse
$cfrom :: forall x.
DeleteChapCredentialsResponse
-> Rep DeleteChapCredentialsResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteChapCredentialsResponse' 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:
--
-- 'initiatorName', 'deleteChapCredentialsResponse_initiatorName' - The iSCSI initiator that connects to the target.
--
-- 'targetARN', 'deleteChapCredentialsResponse_targetARN' - The Amazon Resource Name (ARN) of the target.
--
-- 'httpStatus', 'deleteChapCredentialsResponse_httpStatus' - The response's http status code.
newDeleteChapCredentialsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteChapCredentialsResponse
newDeleteChapCredentialsResponse :: Int -> DeleteChapCredentialsResponse
newDeleteChapCredentialsResponse Int
pHttpStatus_ =
  DeleteChapCredentialsResponse'
    { $sel:initiatorName:DeleteChapCredentialsResponse' :: Maybe Text
initiatorName =
        forall a. Maybe a
Prelude.Nothing,
      $sel:targetARN:DeleteChapCredentialsResponse' :: Maybe Text
targetARN = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteChapCredentialsResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The iSCSI initiator that connects to the target.
deleteChapCredentialsResponse_initiatorName :: Lens.Lens' DeleteChapCredentialsResponse (Prelude.Maybe Prelude.Text)
deleteChapCredentialsResponse_initiatorName :: Lens' DeleteChapCredentialsResponse (Maybe Text)
deleteChapCredentialsResponse_initiatorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteChapCredentialsResponse' {Maybe Text
initiatorName :: Maybe Text
$sel:initiatorName:DeleteChapCredentialsResponse' :: DeleteChapCredentialsResponse -> Maybe Text
initiatorName} -> Maybe Text
initiatorName) (\s :: DeleteChapCredentialsResponse
s@DeleteChapCredentialsResponse' {} Maybe Text
a -> DeleteChapCredentialsResponse
s {$sel:initiatorName:DeleteChapCredentialsResponse' :: Maybe Text
initiatorName = Maybe Text
a} :: DeleteChapCredentialsResponse)

-- | The Amazon Resource Name (ARN) of the target.
deleteChapCredentialsResponse_targetARN :: Lens.Lens' DeleteChapCredentialsResponse (Prelude.Maybe Prelude.Text)
deleteChapCredentialsResponse_targetARN :: Lens' DeleteChapCredentialsResponse (Maybe Text)
deleteChapCredentialsResponse_targetARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteChapCredentialsResponse' {Maybe Text
targetARN :: Maybe Text
$sel:targetARN:DeleteChapCredentialsResponse' :: DeleteChapCredentialsResponse -> Maybe Text
targetARN} -> Maybe Text
targetARN) (\s :: DeleteChapCredentialsResponse
s@DeleteChapCredentialsResponse' {} Maybe Text
a -> DeleteChapCredentialsResponse
s {$sel:targetARN:DeleteChapCredentialsResponse' :: Maybe Text
targetARN = Maybe Text
a} :: DeleteChapCredentialsResponse)

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

instance Prelude.NFData DeleteChapCredentialsResponse where
  rnf :: DeleteChapCredentialsResponse -> ()
rnf DeleteChapCredentialsResponse' {Int
Maybe Text
httpStatus :: Int
targetARN :: Maybe Text
initiatorName :: Maybe Text
$sel:httpStatus:DeleteChapCredentialsResponse' :: DeleteChapCredentialsResponse -> Int
$sel:targetARN:DeleteChapCredentialsResponse' :: DeleteChapCredentialsResponse -> Maybe Text
$sel:initiatorName:DeleteChapCredentialsResponse' :: DeleteChapCredentialsResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
initiatorName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
targetARN
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus