{-# 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.DeleteDecoderManifest
-- 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 decoder manifest. You can\'t delete a decoder manifest if it
-- has vehicles associated with it.
--
-- If the decoder manifest is successfully deleted, Amazon Web Services IoT
-- FleetWise sends back an HTTP 200 response with an empty body.
module Amazonka.IoTFleetWise.DeleteDecoderManifest
  ( -- * Creating a Request
    DeleteDecoderManifest (..),
    newDeleteDecoderManifest,

    -- * Request Lenses
    deleteDecoderManifest_name,

    -- * Destructuring the Response
    DeleteDecoderManifestResponse (..),
    newDeleteDecoderManifestResponse,

    -- * Response Lenses
    deleteDecoderManifestResponse_httpStatus,
    deleteDecoderManifestResponse_name,
    deleteDecoderManifestResponse_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:/ 'newDeleteDecoderManifest' smart constructor.
data DeleteDecoderManifest = DeleteDecoderManifest'
  { -- | The name of the decoder manifest to delete.
    DeleteDecoderManifest -> Text
name :: Prelude.Text
  }
  deriving (DeleteDecoderManifest -> DeleteDecoderManifest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteDecoderManifest -> DeleteDecoderManifest -> Bool
$c/= :: DeleteDecoderManifest -> DeleteDecoderManifest -> Bool
== :: DeleteDecoderManifest -> DeleteDecoderManifest -> Bool
$c== :: DeleteDecoderManifest -> DeleteDecoderManifest -> Bool
Prelude.Eq, ReadPrec [DeleteDecoderManifest]
ReadPrec DeleteDecoderManifest
Int -> ReadS DeleteDecoderManifest
ReadS [DeleteDecoderManifest]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteDecoderManifest]
$creadListPrec :: ReadPrec [DeleteDecoderManifest]
readPrec :: ReadPrec DeleteDecoderManifest
$creadPrec :: ReadPrec DeleteDecoderManifest
readList :: ReadS [DeleteDecoderManifest]
$creadList :: ReadS [DeleteDecoderManifest]
readsPrec :: Int -> ReadS DeleteDecoderManifest
$creadsPrec :: Int -> ReadS DeleteDecoderManifest
Prelude.Read, Int -> DeleteDecoderManifest -> ShowS
[DeleteDecoderManifest] -> ShowS
DeleteDecoderManifest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteDecoderManifest] -> ShowS
$cshowList :: [DeleteDecoderManifest] -> ShowS
show :: DeleteDecoderManifest -> String
$cshow :: DeleteDecoderManifest -> String
showsPrec :: Int -> DeleteDecoderManifest -> ShowS
$cshowsPrec :: Int -> DeleteDecoderManifest -> ShowS
Prelude.Show, forall x. Rep DeleteDecoderManifest x -> DeleteDecoderManifest
forall x. DeleteDecoderManifest -> Rep DeleteDecoderManifest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteDecoderManifest x -> DeleteDecoderManifest
$cfrom :: forall x. DeleteDecoderManifest -> Rep DeleteDecoderManifest x
Prelude.Generic)

-- |
-- Create a value of 'DeleteDecoderManifest' 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', 'deleteDecoderManifest_name' - The name of the decoder manifest to delete.
newDeleteDecoderManifest ::
  -- | 'name'
  Prelude.Text ->
  DeleteDecoderManifest
newDeleteDecoderManifest :: Text -> DeleteDecoderManifest
newDeleteDecoderManifest Text
pName_ =
  DeleteDecoderManifest' {$sel:name:DeleteDecoderManifest' :: Text
name = Text
pName_}

-- | The name of the decoder manifest to delete.
deleteDecoderManifest_name :: Lens.Lens' DeleteDecoderManifest Prelude.Text
deleteDecoderManifest_name :: Lens' DeleteDecoderManifest Text
deleteDecoderManifest_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteDecoderManifest' {Text
name :: Text
$sel:name:DeleteDecoderManifest' :: DeleteDecoderManifest -> Text
name} -> Text
name) (\s :: DeleteDecoderManifest
s@DeleteDecoderManifest' {} Text
a -> DeleteDecoderManifest
s {$sel:name:DeleteDecoderManifest' :: Text
name = Text
a} :: DeleteDecoderManifest)

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

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

instance Data.ToHeaders DeleteDecoderManifest where
  toHeaders :: DeleteDecoderManifest -> 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.DeleteDecoderManifest" ::
                          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 DeleteDecoderManifest where
  toJSON :: DeleteDecoderManifest -> Value
toJSON DeleteDecoderManifest' {Text
name :: Text
$sel:name:DeleteDecoderManifest' :: DeleteDecoderManifest -> 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 DeleteDecoderManifest where
  toPath :: DeleteDecoderManifest -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

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

-- |
-- Create a value of 'DeleteDecoderManifestResponse' 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', 'deleteDecoderManifestResponse_httpStatus' - The response's http status code.
--
-- 'name', 'deleteDecoderManifestResponse_name' - The name of the deleted decoder manifest.
--
-- 'arn', 'deleteDecoderManifestResponse_arn' - The Amazon Resource Name (ARN) of the deleted decoder manifest.
newDeleteDecoderManifestResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'name'
  Prelude.Text ->
  -- | 'arn'
  Prelude.Text ->
  DeleteDecoderManifestResponse
newDeleteDecoderManifestResponse :: Int -> Text -> Text -> DeleteDecoderManifestResponse
newDeleteDecoderManifestResponse
  Int
pHttpStatus_
  Text
pName_
  Text
pArn_ =
    DeleteDecoderManifestResponse'
      { $sel:httpStatus:DeleteDecoderManifestResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:name:DeleteDecoderManifestResponse' :: Text
name = Text
pName_,
        $sel:arn:DeleteDecoderManifestResponse' :: Text
arn = Text
pArn_
      }

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

-- | The name of the deleted decoder manifest.
deleteDecoderManifestResponse_name :: Lens.Lens' DeleteDecoderManifestResponse Prelude.Text
deleteDecoderManifestResponse_name :: Lens' DeleteDecoderManifestResponse Text
deleteDecoderManifestResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteDecoderManifestResponse' {Text
name :: Text
$sel:name:DeleteDecoderManifestResponse' :: DeleteDecoderManifestResponse -> Text
name} -> Text
name) (\s :: DeleteDecoderManifestResponse
s@DeleteDecoderManifestResponse' {} Text
a -> DeleteDecoderManifestResponse
s {$sel:name:DeleteDecoderManifestResponse' :: Text
name = Text
a} :: DeleteDecoderManifestResponse)

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

instance Prelude.NFData DeleteDecoderManifestResponse where
  rnf :: DeleteDecoderManifestResponse -> ()
rnf DeleteDecoderManifestResponse' {Int
Text
arn :: Text
name :: Text
httpStatus :: Int
$sel:arn:DeleteDecoderManifestResponse' :: DeleteDecoderManifestResponse -> Text
$sel:name:DeleteDecoderManifestResponse' :: DeleteDecoderManifestResponse -> Text
$sel:httpStatus:DeleteDecoderManifestResponse' :: DeleteDecoderManifestResponse -> 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