{-# 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.Translate.DeleteParallelData
-- 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 parallel data resource in Amazon Translate.
module Amazonka.Translate.DeleteParallelData
  ( -- * Creating a Request
    DeleteParallelData (..),
    newDeleteParallelData,

    -- * Request Lenses
    deleteParallelData_name,

    -- * Destructuring the Response
    DeleteParallelDataResponse (..),
    newDeleteParallelDataResponse,

    -- * Response Lenses
    deleteParallelDataResponse_name,
    deleteParallelDataResponse_status,
    deleteParallelDataResponse_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.Translate.Types

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

-- |
-- Create a value of 'DeleteParallelData' 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', 'deleteParallelData_name' - The name of the parallel data resource that is being deleted.
newDeleteParallelData ::
  -- | 'name'
  Prelude.Text ->
  DeleteParallelData
newDeleteParallelData :: Text -> DeleteParallelData
newDeleteParallelData Text
pName_ =
  DeleteParallelData' {$sel:name:DeleteParallelData' :: Text
name = Text
pName_}

-- | The name of the parallel data resource that is being deleted.
deleteParallelData_name :: Lens.Lens' DeleteParallelData Prelude.Text
deleteParallelData_name :: Lens' DeleteParallelData Text
deleteParallelData_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteParallelData' {Text
name :: Text
$sel:name:DeleteParallelData' :: DeleteParallelData -> Text
name} -> Text
name) (\s :: DeleteParallelData
s@DeleteParallelData' {} Text
a -> DeleteParallelData
s {$sel:name:DeleteParallelData' :: Text
name = Text
a} :: DeleteParallelData)

instance Core.AWSRequest DeleteParallelData where
  type
    AWSResponse DeleteParallelData =
      DeleteParallelDataResponse
  request :: (Service -> Service)
-> DeleteParallelData -> Request DeleteParallelData
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 DeleteParallelData
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteParallelData)))
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 ParallelDataStatus -> Int -> DeleteParallelDataResponse
DeleteParallelDataResponse'
            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
"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 (Maybe a)
Data..?> Key
"Status")
            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 DeleteParallelData where
  hashWithSalt :: Int -> DeleteParallelData -> Int
hashWithSalt Int
_salt DeleteParallelData' {Text
name :: Text
$sel:name:DeleteParallelData' :: DeleteParallelData -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

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

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

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

-- | /See:/ 'newDeleteParallelDataResponse' smart constructor.
data DeleteParallelDataResponse = DeleteParallelDataResponse'
  { -- | The name of the parallel data resource that is being deleted.
    DeleteParallelDataResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The status of the parallel data deletion.
    DeleteParallelDataResponse -> Maybe ParallelDataStatus
status :: Prelude.Maybe ParallelDataStatus,
    -- | The response's http status code.
    DeleteParallelDataResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeleteParallelDataResponse -> DeleteParallelDataResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteParallelDataResponse -> DeleteParallelDataResponse -> Bool
$c/= :: DeleteParallelDataResponse -> DeleteParallelDataResponse -> Bool
== :: DeleteParallelDataResponse -> DeleteParallelDataResponse -> Bool
$c== :: DeleteParallelDataResponse -> DeleteParallelDataResponse -> Bool
Prelude.Eq, ReadPrec [DeleteParallelDataResponse]
ReadPrec DeleteParallelDataResponse
Int -> ReadS DeleteParallelDataResponse
ReadS [DeleteParallelDataResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteParallelDataResponse]
$creadListPrec :: ReadPrec [DeleteParallelDataResponse]
readPrec :: ReadPrec DeleteParallelDataResponse
$creadPrec :: ReadPrec DeleteParallelDataResponse
readList :: ReadS [DeleteParallelDataResponse]
$creadList :: ReadS [DeleteParallelDataResponse]
readsPrec :: Int -> ReadS DeleteParallelDataResponse
$creadsPrec :: Int -> ReadS DeleteParallelDataResponse
Prelude.Read, Int -> DeleteParallelDataResponse -> ShowS
[DeleteParallelDataResponse] -> ShowS
DeleteParallelDataResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteParallelDataResponse] -> ShowS
$cshowList :: [DeleteParallelDataResponse] -> ShowS
show :: DeleteParallelDataResponse -> String
$cshow :: DeleteParallelDataResponse -> String
showsPrec :: Int -> DeleteParallelDataResponse -> ShowS
$cshowsPrec :: Int -> DeleteParallelDataResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteParallelDataResponse x -> DeleteParallelDataResponse
forall x.
DeleteParallelDataResponse -> Rep DeleteParallelDataResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteParallelDataResponse x -> DeleteParallelDataResponse
$cfrom :: forall x.
DeleteParallelDataResponse -> Rep DeleteParallelDataResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteParallelDataResponse' 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', 'deleteParallelDataResponse_name' - The name of the parallel data resource that is being deleted.
--
-- 'status', 'deleteParallelDataResponse_status' - The status of the parallel data deletion.
--
-- 'httpStatus', 'deleteParallelDataResponse_httpStatus' - The response's http status code.
newDeleteParallelDataResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteParallelDataResponse
newDeleteParallelDataResponse :: Int -> DeleteParallelDataResponse
newDeleteParallelDataResponse Int
pHttpStatus_ =
  DeleteParallelDataResponse'
    { $sel:name:DeleteParallelDataResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DeleteParallelDataResponse' :: Maybe ParallelDataStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteParallelDataResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The name of the parallel data resource that is being deleted.
deleteParallelDataResponse_name :: Lens.Lens' DeleteParallelDataResponse (Prelude.Maybe Prelude.Text)
deleteParallelDataResponse_name :: Lens' DeleteParallelDataResponse (Maybe Text)
deleteParallelDataResponse_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteParallelDataResponse' {Maybe Text
name :: Maybe Text
$sel:name:DeleteParallelDataResponse' :: DeleteParallelDataResponse -> Maybe Text
name} -> Maybe Text
name) (\s :: DeleteParallelDataResponse
s@DeleteParallelDataResponse' {} Maybe Text
a -> DeleteParallelDataResponse
s {$sel:name:DeleteParallelDataResponse' :: Maybe Text
name = Maybe Text
a} :: DeleteParallelDataResponse)

-- | The status of the parallel data deletion.
deleteParallelDataResponse_status :: Lens.Lens' DeleteParallelDataResponse (Prelude.Maybe ParallelDataStatus)
deleteParallelDataResponse_status :: Lens' DeleteParallelDataResponse (Maybe ParallelDataStatus)
deleteParallelDataResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteParallelDataResponse' {Maybe ParallelDataStatus
status :: Maybe ParallelDataStatus
$sel:status:DeleteParallelDataResponse' :: DeleteParallelDataResponse -> Maybe ParallelDataStatus
status} -> Maybe ParallelDataStatus
status) (\s :: DeleteParallelDataResponse
s@DeleteParallelDataResponse' {} Maybe ParallelDataStatus
a -> DeleteParallelDataResponse
s {$sel:status:DeleteParallelDataResponse' :: Maybe ParallelDataStatus
status = Maybe ParallelDataStatus
a} :: DeleteParallelDataResponse)

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

instance Prelude.NFData DeleteParallelDataResponse where
  rnf :: DeleteParallelDataResponse -> ()
rnf DeleteParallelDataResponse' {Int
Maybe Text
Maybe ParallelDataStatus
httpStatus :: Int
status :: Maybe ParallelDataStatus
name :: Maybe Text
$sel:httpStatus:DeleteParallelDataResponse' :: DeleteParallelDataResponse -> Int
$sel:status:DeleteParallelDataResponse' :: DeleteParallelDataResponse -> Maybe ParallelDataStatus
$sel:name:DeleteParallelDataResponse' :: DeleteParallelDataResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ParallelDataStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus