{-# 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.ManagedBlockChain.DeleteAccessor
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- The token based access feature is in preview release for Ethereum on
-- Amazon Managed Blockchain and is subject to change. We recommend that
-- you use this feature only with test scenarios, and not in production
-- environments.
--
-- Deletes an accessor that your Amazon Web Services account owns. An
-- accessor object is a container that has the information required for
-- token based access to your Ethereum nodes including, the
-- @BILLING_TOKEN@. After an accessor is deleted, the status of the
-- accessor changes from @AVAILABLE@ to @PENDING_DELETION@. An accessor in
-- the @PENDING_DELETION@ state can’t be used for new WebSocket requests or
-- HTTP requests. However, WebSocket connections that were initiated while
-- the accessor was in the @AVAILABLE@ state remain open until they expire
-- (up to 2 hours).
module Amazonka.ManagedBlockChain.DeleteAccessor
  ( -- * Creating a Request
    DeleteAccessor (..),
    newDeleteAccessor,

    -- * Request Lenses
    deleteAccessor_accessorId,

    -- * Destructuring the Response
    DeleteAccessorResponse (..),
    newDeleteAccessorResponse,

    -- * Response Lenses
    deleteAccessorResponse_httpStatus,
  )
where

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

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

-- |
-- Create a value of 'DeleteAccessor' 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:
--
-- 'accessorId', 'deleteAccessor_accessorId' - The unique identifier of the accessor.
newDeleteAccessor ::
  -- | 'accessorId'
  Prelude.Text ->
  DeleteAccessor
newDeleteAccessor :: Text -> DeleteAccessor
newDeleteAccessor Text
pAccessorId_ =
  DeleteAccessor' {$sel:accessorId:DeleteAccessor' :: Text
accessorId = Text
pAccessorId_}

-- | The unique identifier of the accessor.
deleteAccessor_accessorId :: Lens.Lens' DeleteAccessor Prelude.Text
deleteAccessor_accessorId :: Lens' DeleteAccessor Text
deleteAccessor_accessorId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteAccessor' {Text
accessorId :: Text
$sel:accessorId:DeleteAccessor' :: DeleteAccessor -> Text
accessorId} -> Text
accessorId) (\s :: DeleteAccessor
s@DeleteAccessor' {} Text
a -> DeleteAccessor
s {$sel:accessorId:DeleteAccessor' :: Text
accessorId = Text
a} :: DeleteAccessor)

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

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

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

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

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

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

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

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