{-# 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.UpdateChannelMessage
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates the content of a message.
--
-- The @x-amz-chime-bearer@ request header is mandatory. Use the
-- @AppInstanceUserArn@ of the user that makes the API call as the value in
-- the header.
module Amazonka.ChimeSDKMessaging.UpdateChannelMessage
  ( -- * Creating a Request
    UpdateChannelMessage (..),
    newUpdateChannelMessage,

    -- * Request Lenses
    updateChannelMessage_content,
    updateChannelMessage_metadata,
    updateChannelMessage_subChannelId,
    updateChannelMessage_channelArn,
    updateChannelMessage_messageId,
    updateChannelMessage_chimeBearer,

    -- * Destructuring the Response
    UpdateChannelMessageResponse (..),
    newUpdateChannelMessageResponse,

    -- * Response Lenses
    updateChannelMessageResponse_channelArn,
    updateChannelMessageResponse_messageId,
    updateChannelMessageResponse_status,
    updateChannelMessageResponse_subChannelId,
    updateChannelMessageResponse_httpStatus,
  )
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:/ 'newUpdateChannelMessage' smart constructor.
data UpdateChannelMessage = UpdateChannelMessage'
  { -- | The content of the message being updated.
    UpdateChannelMessage -> Maybe (Sensitive Text)
content :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The metadata of the message being updated.
    UpdateChannelMessage -> Maybe (Sensitive Text)
metadata :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The ID of the SubChannel in the request.
    --
    -- Only required when updating messages in a SubChannel that the user
    -- belongs to.
    UpdateChannelMessage -> Maybe Text
subChannelId :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the channel.
    UpdateChannelMessage -> Text
channelArn :: Prelude.Text,
    -- | The ID string of the message being updated.
    UpdateChannelMessage -> Text
messageId :: Prelude.Text,
    -- | The @AppInstanceUserArn@ of the user that makes the API call.
    UpdateChannelMessage -> Text
chimeBearer :: Prelude.Text
  }
  deriving (UpdateChannelMessage -> UpdateChannelMessage -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateChannelMessage -> UpdateChannelMessage -> Bool
$c/= :: UpdateChannelMessage -> UpdateChannelMessage -> Bool
== :: UpdateChannelMessage -> UpdateChannelMessage -> Bool
$c== :: UpdateChannelMessage -> UpdateChannelMessage -> Bool
Prelude.Eq, Int -> UpdateChannelMessage -> ShowS
[UpdateChannelMessage] -> ShowS
UpdateChannelMessage -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateChannelMessage] -> ShowS
$cshowList :: [UpdateChannelMessage] -> ShowS
show :: UpdateChannelMessage -> String
$cshow :: UpdateChannelMessage -> String
showsPrec :: Int -> UpdateChannelMessage -> ShowS
$cshowsPrec :: Int -> UpdateChannelMessage -> ShowS
Prelude.Show, forall x. Rep UpdateChannelMessage x -> UpdateChannelMessage
forall x. UpdateChannelMessage -> Rep UpdateChannelMessage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateChannelMessage x -> UpdateChannelMessage
$cfrom :: forall x. UpdateChannelMessage -> Rep UpdateChannelMessage x
Prelude.Generic)

-- |
-- Create a value of 'UpdateChannelMessage' 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:
--
-- 'content', 'updateChannelMessage_content' - The content of the message being updated.
--
-- 'metadata', 'updateChannelMessage_metadata' - The metadata of the message being updated.
--
-- 'subChannelId', 'updateChannelMessage_subChannelId' - The ID of the SubChannel in the request.
--
-- Only required when updating messages in a SubChannel that the user
-- belongs to.
--
-- 'channelArn', 'updateChannelMessage_channelArn' - The ARN of the channel.
--
-- 'messageId', 'updateChannelMessage_messageId' - The ID string of the message being updated.
--
-- 'chimeBearer', 'updateChannelMessage_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
newUpdateChannelMessage ::
  -- | 'channelArn'
  Prelude.Text ->
  -- | 'messageId'
  Prelude.Text ->
  -- | 'chimeBearer'
  Prelude.Text ->
  UpdateChannelMessage
newUpdateChannelMessage :: Text -> Text -> Text -> UpdateChannelMessage
newUpdateChannelMessage
  Text
pChannelArn_
  Text
pMessageId_
  Text
pChimeBearer_ =
    UpdateChannelMessage'
      { $sel:content:UpdateChannelMessage' :: Maybe (Sensitive Text)
content = forall a. Maybe a
Prelude.Nothing,
        $sel:metadata:UpdateChannelMessage' :: Maybe (Sensitive Text)
metadata = forall a. Maybe a
Prelude.Nothing,
        $sel:subChannelId:UpdateChannelMessage' :: Maybe Text
subChannelId = forall a. Maybe a
Prelude.Nothing,
        $sel:channelArn:UpdateChannelMessage' :: Text
channelArn = Text
pChannelArn_,
        $sel:messageId:UpdateChannelMessage' :: Text
messageId = Text
pMessageId_,
        $sel:chimeBearer:UpdateChannelMessage' :: Text
chimeBearer = Text
pChimeBearer_
      }

-- | The content of the message being updated.
updateChannelMessage_content :: Lens.Lens' UpdateChannelMessage (Prelude.Maybe Prelude.Text)
updateChannelMessage_content :: Lens' UpdateChannelMessage (Maybe Text)
updateChannelMessage_content = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateChannelMessage' {Maybe (Sensitive Text)
content :: Maybe (Sensitive Text)
$sel:content:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
content} -> Maybe (Sensitive Text)
content) (\s :: UpdateChannelMessage
s@UpdateChannelMessage' {} Maybe (Sensitive Text)
a -> UpdateChannelMessage
s {$sel:content:UpdateChannelMessage' :: Maybe (Sensitive Text)
content = Maybe (Sensitive Text)
a} :: UpdateChannelMessage) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The metadata of the message being updated.
updateChannelMessage_metadata :: Lens.Lens' UpdateChannelMessage (Prelude.Maybe Prelude.Text)
updateChannelMessage_metadata :: Lens' UpdateChannelMessage (Maybe Text)
updateChannelMessage_metadata = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateChannelMessage' {Maybe (Sensitive Text)
metadata :: Maybe (Sensitive Text)
$sel:metadata:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
metadata} -> Maybe (Sensitive Text)
metadata) (\s :: UpdateChannelMessage
s@UpdateChannelMessage' {} Maybe (Sensitive Text)
a -> UpdateChannelMessage
s {$sel:metadata:UpdateChannelMessage' :: Maybe (Sensitive Text)
metadata = Maybe (Sensitive Text)
a} :: UpdateChannelMessage) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The ID of the SubChannel in the request.
--
-- Only required when updating messages in a SubChannel that the user
-- belongs to.
updateChannelMessage_subChannelId :: Lens.Lens' UpdateChannelMessage (Prelude.Maybe Prelude.Text)
updateChannelMessage_subChannelId :: Lens' UpdateChannelMessage (Maybe Text)
updateChannelMessage_subChannelId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateChannelMessage' {Maybe Text
subChannelId :: Maybe Text
$sel:subChannelId:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe Text
subChannelId} -> Maybe Text
subChannelId) (\s :: UpdateChannelMessage
s@UpdateChannelMessage' {} Maybe Text
a -> UpdateChannelMessage
s {$sel:subChannelId:UpdateChannelMessage' :: Maybe Text
subChannelId = Maybe Text
a} :: UpdateChannelMessage)

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

-- | The ID string of the message being updated.
updateChannelMessage_messageId :: Lens.Lens' UpdateChannelMessage Prelude.Text
updateChannelMessage_messageId :: Lens' UpdateChannelMessage Text
updateChannelMessage_messageId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateChannelMessage' {Text
messageId :: Text
$sel:messageId:UpdateChannelMessage' :: UpdateChannelMessage -> Text
messageId} -> Text
messageId) (\s :: UpdateChannelMessage
s@UpdateChannelMessage' {} Text
a -> UpdateChannelMessage
s {$sel:messageId:UpdateChannelMessage' :: Text
messageId = Text
a} :: UpdateChannelMessage)

-- | The @AppInstanceUserArn@ of the user that makes the API call.
updateChannelMessage_chimeBearer :: Lens.Lens' UpdateChannelMessage Prelude.Text
updateChannelMessage_chimeBearer :: Lens' UpdateChannelMessage Text
updateChannelMessage_chimeBearer = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateChannelMessage' {Text
chimeBearer :: Text
$sel:chimeBearer:UpdateChannelMessage' :: UpdateChannelMessage -> Text
chimeBearer} -> Text
chimeBearer) (\s :: UpdateChannelMessage
s@UpdateChannelMessage' {} Text
a -> UpdateChannelMessage
s {$sel:chimeBearer:UpdateChannelMessage' :: Text
chimeBearer = Text
a} :: UpdateChannelMessage)

instance Core.AWSRequest UpdateChannelMessage where
  type
    AWSResponse UpdateChannelMessage =
      UpdateChannelMessageResponse
  request :: (Service -> Service)
-> UpdateChannelMessage -> Request UpdateChannelMessage
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.putJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateChannelMessage
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateChannelMessage)))
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 Text
-> Maybe ChannelMessageStatusStructure
-> Maybe Text
-> Int
-> UpdateChannelMessageResponse
UpdateChannelMessageResponse'
            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
"ChannelArn")
            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
"MessageId")
            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.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"SubChannelId")
            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 UpdateChannelMessage where
  hashWithSalt :: Int -> UpdateChannelMessage -> Int
hashWithSalt Int
_salt UpdateChannelMessage' {Maybe Text
Maybe (Sensitive Text)
Text
chimeBearer :: Text
messageId :: Text
channelArn :: Text
subChannelId :: Maybe Text
metadata :: Maybe (Sensitive Text)
content :: Maybe (Sensitive Text)
$sel:chimeBearer:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:messageId:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:channelArn:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:subChannelId:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe Text
$sel:metadata:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
$sel:content:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
content
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
metadata
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subChannelId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
channelArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
messageId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
chimeBearer

instance Prelude.NFData UpdateChannelMessage where
  rnf :: UpdateChannelMessage -> ()
rnf UpdateChannelMessage' {Maybe Text
Maybe (Sensitive Text)
Text
chimeBearer :: Text
messageId :: Text
channelArn :: Text
subChannelId :: Maybe Text
metadata :: Maybe (Sensitive Text)
content :: Maybe (Sensitive Text)
$sel:chimeBearer:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:messageId:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:channelArn:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:subChannelId:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe Text
$sel:metadata:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
$sel:content:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
content
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
metadata
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subChannelId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
channelArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
messageId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
chimeBearer

instance Data.ToHeaders UpdateChannelMessage where
  toHeaders :: UpdateChannelMessage -> ResponseHeaders
toHeaders UpdateChannelMessage' {Maybe Text
Maybe (Sensitive Text)
Text
chimeBearer :: Text
messageId :: Text
channelArn :: Text
subChannelId :: Maybe Text
metadata :: Maybe (Sensitive Text)
content :: Maybe (Sensitive Text)
$sel:chimeBearer:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:messageId:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:channelArn:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:subChannelId:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe Text
$sel:metadata:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
$sel:content:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [HeaderName
"x-amz-chime-bearer" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Text
chimeBearer]

instance Data.ToJSON UpdateChannelMessage where
  toJSON :: UpdateChannelMessage -> Value
toJSON UpdateChannelMessage' {Maybe Text
Maybe (Sensitive Text)
Text
chimeBearer :: Text
messageId :: Text
channelArn :: Text
subChannelId :: Maybe Text
metadata :: Maybe (Sensitive Text)
content :: Maybe (Sensitive Text)
$sel:chimeBearer:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:messageId:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:channelArn:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:subChannelId:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe Text
$sel:metadata:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
$sel:content:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Content" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive Text)
content,
            (Key
"Metadata" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive Text)
metadata,
            (Key
"SubChannelId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
subChannelId
          ]
      )

instance Data.ToPath UpdateChannelMessage where
  toPath :: UpdateChannelMessage -> ByteString
toPath UpdateChannelMessage' {Maybe Text
Maybe (Sensitive Text)
Text
chimeBearer :: Text
messageId :: Text
channelArn :: Text
subChannelId :: Maybe Text
metadata :: Maybe (Sensitive Text)
content :: Maybe (Sensitive Text)
$sel:chimeBearer:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:messageId:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:channelArn:UpdateChannelMessage' :: UpdateChannelMessage -> Text
$sel:subChannelId:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe Text
$sel:metadata:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
$sel:content:UpdateChannelMessage' :: UpdateChannelMessage -> Maybe (Sensitive Text)
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/channels/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
channelArn,
        ByteString
"/messages/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
messageId
      ]

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

-- | /See:/ 'newUpdateChannelMessageResponse' smart constructor.
data UpdateChannelMessageResponse = UpdateChannelMessageResponse'
  { -- | The ARN of the channel.
    UpdateChannelMessageResponse -> Maybe Text
channelArn :: Prelude.Maybe Prelude.Text,
    -- | The ID string of the message being updated.
    UpdateChannelMessageResponse -> Maybe Text
messageId :: Prelude.Maybe Prelude.Text,
    -- | The status of the message update.
    UpdateChannelMessageResponse -> Maybe ChannelMessageStatusStructure
status :: Prelude.Maybe ChannelMessageStatusStructure,
    -- | The ID of the SubChannel in the response.
    UpdateChannelMessageResponse -> Maybe Text
subChannelId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    UpdateChannelMessageResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateChannelMessageResponse
-> UpdateChannelMessageResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateChannelMessageResponse
-> UpdateChannelMessageResponse -> Bool
$c/= :: UpdateChannelMessageResponse
-> UpdateChannelMessageResponse -> Bool
== :: UpdateChannelMessageResponse
-> UpdateChannelMessageResponse -> Bool
$c== :: UpdateChannelMessageResponse
-> UpdateChannelMessageResponse -> Bool
Prelude.Eq, ReadPrec [UpdateChannelMessageResponse]
ReadPrec UpdateChannelMessageResponse
Int -> ReadS UpdateChannelMessageResponse
ReadS [UpdateChannelMessageResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateChannelMessageResponse]
$creadListPrec :: ReadPrec [UpdateChannelMessageResponse]
readPrec :: ReadPrec UpdateChannelMessageResponse
$creadPrec :: ReadPrec UpdateChannelMessageResponse
readList :: ReadS [UpdateChannelMessageResponse]
$creadList :: ReadS [UpdateChannelMessageResponse]
readsPrec :: Int -> ReadS UpdateChannelMessageResponse
$creadsPrec :: Int -> ReadS UpdateChannelMessageResponse
Prelude.Read, Int -> UpdateChannelMessageResponse -> ShowS
[UpdateChannelMessageResponse] -> ShowS
UpdateChannelMessageResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateChannelMessageResponse] -> ShowS
$cshowList :: [UpdateChannelMessageResponse] -> ShowS
show :: UpdateChannelMessageResponse -> String
$cshow :: UpdateChannelMessageResponse -> String
showsPrec :: Int -> UpdateChannelMessageResponse -> ShowS
$cshowsPrec :: Int -> UpdateChannelMessageResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateChannelMessageResponse x -> UpdateChannelMessageResponse
forall x.
UpdateChannelMessageResponse -> Rep UpdateChannelMessageResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateChannelMessageResponse x -> UpdateChannelMessageResponse
$cfrom :: forall x.
UpdateChannelMessageResponse -> Rep UpdateChannelMessageResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateChannelMessageResponse' 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:
--
-- 'channelArn', 'updateChannelMessageResponse_channelArn' - The ARN of the channel.
--
-- 'messageId', 'updateChannelMessageResponse_messageId' - The ID string of the message being updated.
--
-- 'status', 'updateChannelMessageResponse_status' - The status of the message update.
--
-- 'subChannelId', 'updateChannelMessageResponse_subChannelId' - The ID of the SubChannel in the response.
--
-- 'httpStatus', 'updateChannelMessageResponse_httpStatus' - The response's http status code.
newUpdateChannelMessageResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateChannelMessageResponse
newUpdateChannelMessageResponse :: Int -> UpdateChannelMessageResponse
newUpdateChannelMessageResponse Int
pHttpStatus_ =
  UpdateChannelMessageResponse'
    { $sel:channelArn:UpdateChannelMessageResponse' :: Maybe Text
channelArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:messageId:UpdateChannelMessageResponse' :: Maybe Text
messageId = forall a. Maybe a
Prelude.Nothing,
      $sel:status:UpdateChannelMessageResponse' :: Maybe ChannelMessageStatusStructure
status = forall a. Maybe a
Prelude.Nothing,
      $sel:subChannelId:UpdateChannelMessageResponse' :: Maybe Text
subChannelId = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateChannelMessageResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the channel.
updateChannelMessageResponse_channelArn :: Lens.Lens' UpdateChannelMessageResponse (Prelude.Maybe Prelude.Text)
updateChannelMessageResponse_channelArn :: Lens' UpdateChannelMessageResponse (Maybe Text)
updateChannelMessageResponse_channelArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateChannelMessageResponse' {Maybe Text
channelArn :: Maybe Text
$sel:channelArn:UpdateChannelMessageResponse' :: UpdateChannelMessageResponse -> Maybe Text
channelArn} -> Maybe Text
channelArn) (\s :: UpdateChannelMessageResponse
s@UpdateChannelMessageResponse' {} Maybe Text
a -> UpdateChannelMessageResponse
s {$sel:channelArn:UpdateChannelMessageResponse' :: Maybe Text
channelArn = Maybe Text
a} :: UpdateChannelMessageResponse)

-- | The ID string of the message being updated.
updateChannelMessageResponse_messageId :: Lens.Lens' UpdateChannelMessageResponse (Prelude.Maybe Prelude.Text)
updateChannelMessageResponse_messageId :: Lens' UpdateChannelMessageResponse (Maybe Text)
updateChannelMessageResponse_messageId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateChannelMessageResponse' {Maybe Text
messageId :: Maybe Text
$sel:messageId:UpdateChannelMessageResponse' :: UpdateChannelMessageResponse -> Maybe Text
messageId} -> Maybe Text
messageId) (\s :: UpdateChannelMessageResponse
s@UpdateChannelMessageResponse' {} Maybe Text
a -> UpdateChannelMessageResponse
s {$sel:messageId:UpdateChannelMessageResponse' :: Maybe Text
messageId = Maybe Text
a} :: UpdateChannelMessageResponse)

-- | The status of the message update.
updateChannelMessageResponse_status :: Lens.Lens' UpdateChannelMessageResponse (Prelude.Maybe ChannelMessageStatusStructure)
updateChannelMessageResponse_status :: Lens'
  UpdateChannelMessageResponse (Maybe ChannelMessageStatusStructure)
updateChannelMessageResponse_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateChannelMessageResponse' {Maybe ChannelMessageStatusStructure
status :: Maybe ChannelMessageStatusStructure
$sel:status:UpdateChannelMessageResponse' :: UpdateChannelMessageResponse -> Maybe ChannelMessageStatusStructure
status} -> Maybe ChannelMessageStatusStructure
status) (\s :: UpdateChannelMessageResponse
s@UpdateChannelMessageResponse' {} Maybe ChannelMessageStatusStructure
a -> UpdateChannelMessageResponse
s {$sel:status:UpdateChannelMessageResponse' :: Maybe ChannelMessageStatusStructure
status = Maybe ChannelMessageStatusStructure
a} :: UpdateChannelMessageResponse)

-- | The ID of the SubChannel in the response.
updateChannelMessageResponse_subChannelId :: Lens.Lens' UpdateChannelMessageResponse (Prelude.Maybe Prelude.Text)
updateChannelMessageResponse_subChannelId :: Lens' UpdateChannelMessageResponse (Maybe Text)
updateChannelMessageResponse_subChannelId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateChannelMessageResponse' {Maybe Text
subChannelId :: Maybe Text
$sel:subChannelId:UpdateChannelMessageResponse' :: UpdateChannelMessageResponse -> Maybe Text
subChannelId} -> Maybe Text
subChannelId) (\s :: UpdateChannelMessageResponse
s@UpdateChannelMessageResponse' {} Maybe Text
a -> UpdateChannelMessageResponse
s {$sel:subChannelId:UpdateChannelMessageResponse' :: Maybe Text
subChannelId = Maybe Text
a} :: UpdateChannelMessageResponse)

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

instance Prelude.NFData UpdateChannelMessageResponse where
  rnf :: UpdateChannelMessageResponse -> ()
rnf UpdateChannelMessageResponse' {Int
Maybe Text
Maybe ChannelMessageStatusStructure
httpStatus :: Int
subChannelId :: Maybe Text
status :: Maybe ChannelMessageStatusStructure
messageId :: Maybe Text
channelArn :: Maybe Text
$sel:httpStatus:UpdateChannelMessageResponse' :: UpdateChannelMessageResponse -> Int
$sel:subChannelId:UpdateChannelMessageResponse' :: UpdateChannelMessageResponse -> Maybe Text
$sel:status:UpdateChannelMessageResponse' :: UpdateChannelMessageResponse -> Maybe ChannelMessageStatusStructure
$sel:messageId:UpdateChannelMessageResponse' :: UpdateChannelMessageResponse -> Maybe Text
$sel:channelArn:UpdateChannelMessageResponse' :: UpdateChannelMessageResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
channelArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
messageId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ChannelMessageStatusStructure
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subChannelId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus