{-# 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.IoTFleetWise.DeleteSignalCatalog
-- 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 signal catalog.
--
-- If the signal catalog is successfully deleted, Amazon Web Services IoT
-- FleetWise sends back an HTTP 200 response with an empty body.
module Amazonka.IoTFleetWise.DeleteSignalCatalog
  ( -- * Creating a Request
    DeleteSignalCatalog (..),
    newDeleteSignalCatalog,

    -- * Request Lenses
    deleteSignalCatalog_name,

    -- * Destructuring the Response
    DeleteSignalCatalogResponse (..),
    newDeleteSignalCatalogResponse,

    -- * Response Lenses
    deleteSignalCatalogResponse_httpStatus,
    deleteSignalCatalogResponse_name,
    deleteSignalCatalogResponse_arn,
  )
where

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

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

-- |
-- Create a value of 'DeleteSignalCatalog' 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:
--
-- 'name', 'deleteSignalCatalog_name' - The name of the signal catalog to delete.
newDeleteSignalCatalog ::
  -- | 'name'
  Prelude.Text ->
  DeleteSignalCatalog
newDeleteSignalCatalog :: Text -> DeleteSignalCatalog
newDeleteSignalCatalog Text
pName_ =
  DeleteSignalCatalog' {$sel:name:DeleteSignalCatalog' :: Text
name = Text
pName_}

-- | The name of the signal catalog to delete.
deleteSignalCatalog_name :: Lens.Lens' DeleteSignalCatalog Prelude.Text
deleteSignalCatalog_name :: Lens' DeleteSignalCatalog Text
deleteSignalCatalog_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSignalCatalog' {Text
name :: Text
$sel:name:DeleteSignalCatalog' :: DeleteSignalCatalog -> Text
name} -> Text
name) (\s :: DeleteSignalCatalog
s@DeleteSignalCatalog' {} Text
a -> DeleteSignalCatalog
s {$sel:name:DeleteSignalCatalog' :: Text
name = Text
a} :: DeleteSignalCatalog)

instance Core.AWSRequest DeleteSignalCatalog where
  type
    AWSResponse DeleteSignalCatalog =
      DeleteSignalCatalogResponse
  request :: (Service -> Service)
-> DeleteSignalCatalog -> Request DeleteSignalCatalog
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 DeleteSignalCatalog
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteSignalCatalog)))
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 -> Text -> Text -> DeleteSignalCatalogResponse
DeleteSignalCatalogResponse'
            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
"name")
            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
"arn")
      )

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

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

instance Data.ToHeaders DeleteSignalCatalog where
  toHeaders :: DeleteSignalCatalog -> 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
"IoTAutobahnControlPlane.DeleteSignalCatalog" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

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

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

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

-- | /See:/ 'newDeleteSignalCatalogResponse' smart constructor.
data DeleteSignalCatalogResponse = DeleteSignalCatalogResponse'
  { -- | The response's http status code.
    DeleteSignalCatalogResponse -> Int
httpStatus :: Prelude.Int,
    -- | The name of the deleted signal catalog.
    DeleteSignalCatalogResponse -> Text
name :: Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the deleted signal catalog.
    DeleteSignalCatalogResponse -> Text
arn :: Prelude.Text
  }
  deriving (DeleteSignalCatalogResponse -> DeleteSignalCatalogResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteSignalCatalogResponse -> DeleteSignalCatalogResponse -> Bool
$c/= :: DeleteSignalCatalogResponse -> DeleteSignalCatalogResponse -> Bool
== :: DeleteSignalCatalogResponse -> DeleteSignalCatalogResponse -> Bool
$c== :: DeleteSignalCatalogResponse -> DeleteSignalCatalogResponse -> Bool
Prelude.Eq, ReadPrec [DeleteSignalCatalogResponse]
ReadPrec DeleteSignalCatalogResponse
Int -> ReadS DeleteSignalCatalogResponse
ReadS [DeleteSignalCatalogResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteSignalCatalogResponse]
$creadListPrec :: ReadPrec [DeleteSignalCatalogResponse]
readPrec :: ReadPrec DeleteSignalCatalogResponse
$creadPrec :: ReadPrec DeleteSignalCatalogResponse
readList :: ReadS [DeleteSignalCatalogResponse]
$creadList :: ReadS [DeleteSignalCatalogResponse]
readsPrec :: Int -> ReadS DeleteSignalCatalogResponse
$creadsPrec :: Int -> ReadS DeleteSignalCatalogResponse
Prelude.Read, Int -> DeleteSignalCatalogResponse -> ShowS
[DeleteSignalCatalogResponse] -> ShowS
DeleteSignalCatalogResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteSignalCatalogResponse] -> ShowS
$cshowList :: [DeleteSignalCatalogResponse] -> ShowS
show :: DeleteSignalCatalogResponse -> String
$cshow :: DeleteSignalCatalogResponse -> String
showsPrec :: Int -> DeleteSignalCatalogResponse -> ShowS
$cshowsPrec :: Int -> DeleteSignalCatalogResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteSignalCatalogResponse x -> DeleteSignalCatalogResponse
forall x.
DeleteSignalCatalogResponse -> Rep DeleteSignalCatalogResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteSignalCatalogResponse x -> DeleteSignalCatalogResponse
$cfrom :: forall x.
DeleteSignalCatalogResponse -> Rep DeleteSignalCatalogResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteSignalCatalogResponse' 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', 'deleteSignalCatalogResponse_httpStatus' - The response's http status code.
--
-- 'name', 'deleteSignalCatalogResponse_name' - The name of the deleted signal catalog.
--
-- 'arn', 'deleteSignalCatalogResponse_arn' - The Amazon Resource Name (ARN) of the deleted signal catalog.
newDeleteSignalCatalogResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'name'
  Prelude.Text ->
  -- | 'arn'
  Prelude.Text ->
  DeleteSignalCatalogResponse
newDeleteSignalCatalogResponse :: Int -> Text -> Text -> DeleteSignalCatalogResponse
newDeleteSignalCatalogResponse
  Int
pHttpStatus_
  Text
pName_
  Text
pArn_ =
    DeleteSignalCatalogResponse'
      { $sel:httpStatus:DeleteSignalCatalogResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:name:DeleteSignalCatalogResponse' :: Text
name = Text
pName_,
        $sel:arn:DeleteSignalCatalogResponse' :: Text
arn = Text
pArn_
      }

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

-- | The name of the deleted signal catalog.
deleteSignalCatalogResponse_name :: Lens.Lens' DeleteSignalCatalogResponse Prelude.Text
deleteSignalCatalogResponse_name :: Lens' DeleteSignalCatalogResponse Text
deleteSignalCatalogResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSignalCatalogResponse' {Text
name :: Text
$sel:name:DeleteSignalCatalogResponse' :: DeleteSignalCatalogResponse -> Text
name} -> Text
name) (\s :: DeleteSignalCatalogResponse
s@DeleteSignalCatalogResponse' {} Text
a -> DeleteSignalCatalogResponse
s {$sel:name:DeleteSignalCatalogResponse' :: Text
name = Text
a} :: DeleteSignalCatalogResponse)

-- | The Amazon Resource Name (ARN) of the deleted signal catalog.
deleteSignalCatalogResponse_arn :: Lens.Lens' DeleteSignalCatalogResponse Prelude.Text
deleteSignalCatalogResponse_arn :: Lens' DeleteSignalCatalogResponse Text
deleteSignalCatalogResponse_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteSignalCatalogResponse' {Text
arn :: Text
$sel:arn:DeleteSignalCatalogResponse' :: DeleteSignalCatalogResponse -> Text
arn} -> Text
arn) (\s :: DeleteSignalCatalogResponse
s@DeleteSignalCatalogResponse' {} Text
a -> DeleteSignalCatalogResponse
s {$sel:arn:DeleteSignalCatalogResponse' :: Text
arn = Text
a} :: DeleteSignalCatalogResponse)

instance Prelude.NFData DeleteSignalCatalogResponse where
  rnf :: DeleteSignalCatalogResponse -> ()
rnf DeleteSignalCatalogResponse' {Int
Text
arn :: Text
name :: Text
httpStatus :: Int
$sel:arn:DeleteSignalCatalogResponse' :: DeleteSignalCatalogResponse -> Text
$sel:name:DeleteSignalCatalogResponse' :: DeleteSignalCatalogResponse -> Text
$sel:httpStatus:DeleteSignalCatalogResponse' :: DeleteSignalCatalogResponse -> 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 Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
arn