{-# 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.ChimeSDKMessaging.DeleteChannelFlow
-- 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 channel flow, an irreversible process. This is a developer
-- API.
--
-- This API works only when the channel flow is not associated with any
-- channel. To get a list of all channels that a channel flow is associated
-- with, use the @ListChannelsAssociatedWithChannelFlow@ API. Use the
-- @DisassociateChannelFlow@ API to disassociate a channel flow from all
-- channels.
module Amazonka.ChimeSDKMessaging.DeleteChannelFlow
  ( -- * Creating a Request
    DeleteChannelFlow (..),
    newDeleteChannelFlow,

    -- * Request Lenses
    deleteChannelFlow_channelFlowArn,

    -- * Destructuring the Response
    DeleteChannelFlowResponse (..),
    newDeleteChannelFlowResponse,
  )
where

import Amazonka.ChimeSDKMessaging.Types
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

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

-- |
-- Create a value of 'DeleteChannelFlow' 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:
--
-- 'channelFlowArn', 'deleteChannelFlow_channelFlowArn' - The ARN of the channel flow.
newDeleteChannelFlow ::
  -- | 'channelFlowArn'
  Prelude.Text ->
  DeleteChannelFlow
newDeleteChannelFlow :: Text -> DeleteChannelFlow
newDeleteChannelFlow Text
pChannelFlowArn_ =
  DeleteChannelFlow'
    { $sel:channelFlowArn:DeleteChannelFlow' :: Text
channelFlowArn =
        Text
pChannelFlowArn_
    }

-- | The ARN of the channel flow.
deleteChannelFlow_channelFlowArn :: Lens.Lens' DeleteChannelFlow Prelude.Text
deleteChannelFlow_channelFlowArn :: Lens' DeleteChannelFlow Text
deleteChannelFlow_channelFlowArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteChannelFlow' {Text
channelFlowArn :: Text
$sel:channelFlowArn:DeleteChannelFlow' :: DeleteChannelFlow -> Text
channelFlowArn} -> Text
channelFlowArn) (\s :: DeleteChannelFlow
s@DeleteChannelFlow' {} Text
a -> DeleteChannelFlow
s {$sel:channelFlowArn:DeleteChannelFlow' :: Text
channelFlowArn = Text
a} :: DeleteChannelFlow)

instance Core.AWSRequest DeleteChannelFlow where
  type
    AWSResponse DeleteChannelFlow =
      DeleteChannelFlowResponse
  request :: (Service -> Service)
-> DeleteChannelFlow -> Request DeleteChannelFlow
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 DeleteChannelFlow
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DeleteChannelFlow)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
AWSResponse a
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveNull DeleteChannelFlowResponse
DeleteChannelFlowResponse'

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

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

instance Data.ToHeaders DeleteChannelFlow where
  toHeaders :: DeleteChannelFlow -> [Header]
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DeleteChannelFlow where
  toPath :: DeleteChannelFlow -> ByteString
toPath DeleteChannelFlow' {Text
channelFlowArn :: Text
$sel:channelFlowArn:DeleteChannelFlow' :: DeleteChannelFlow -> Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/channel-flows/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
channelFlowArn]

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

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

-- |
-- Create a value of 'DeleteChannelFlowResponse' 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.
newDeleteChannelFlowResponse ::
  DeleteChannelFlowResponse
newDeleteChannelFlowResponse :: DeleteChannelFlowResponse
newDeleteChannelFlowResponse =
  DeleteChannelFlowResponse
DeleteChannelFlowResponse'

instance Prelude.NFData DeleteChannelFlowResponse where
  rnf :: DeleteChannelFlowResponse -> ()
rnf DeleteChannelFlowResponse
_ = ()