{-# 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.Chime.CreateChannelMembership
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Adds a user to a channel. The @InvitedBy@ response field is derived from
-- the request header. A channel member can:
--
-- -   List messages
--
-- -   Send messages
--
-- -   Receive messages
--
-- -   Edit their own messages
--
-- -   Leave the channel
--
-- Privacy settings impact this action as follows:
--
-- -   Public Channels: You do not need to be a member to list messages,
--     but you must be a member to send messages.
--
-- -   Private Channels: You must be a member to list or send messages.
--
-- 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.Chime.CreateChannelMembership
  ( -- * Creating a Request
    CreateChannelMembership (..),
    newCreateChannelMembership,

    -- * Request Lenses
    createChannelMembership_chimeBearer,
    createChannelMembership_channelArn,
    createChannelMembership_memberArn,
    createChannelMembership_type,

    -- * Destructuring the Response
    CreateChannelMembershipResponse (..),
    newCreateChannelMembershipResponse,

    -- * Response Lenses
    createChannelMembershipResponse_channelArn,
    createChannelMembershipResponse_member,
    createChannelMembershipResponse_httpStatus,
  )
where

import Amazonka.Chime.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:/ 'newCreateChannelMembership' smart constructor.
data CreateChannelMembership = CreateChannelMembership'
  { -- | The @AppInstanceUserArn@ of the user that makes the API call.
    CreateChannelMembership -> Maybe Text
chimeBearer :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the channel to which you\'re adding users.
    CreateChannelMembership -> Text
channelArn :: Prelude.Text,
    -- | The ARN of the member you want to add to the channel.
    CreateChannelMembership -> Text
memberArn :: Prelude.Text,
    -- | The membership type of a user, @DEFAULT@ or @HIDDEN@. Default members
    -- are always returned as part of @ListChannelMemberships@. Hidden members
    -- are only returned if the type filter in @ListChannelMemberships@ equals
    -- @HIDDEN@. Otherwise hidden members are not returned. This is only
    -- supported by moderators.
    CreateChannelMembership -> ChannelMembershipType
type' :: ChannelMembershipType
  }
  deriving (CreateChannelMembership -> CreateChannelMembership -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateChannelMembership -> CreateChannelMembership -> Bool
$c/= :: CreateChannelMembership -> CreateChannelMembership -> Bool
== :: CreateChannelMembership -> CreateChannelMembership -> Bool
$c== :: CreateChannelMembership -> CreateChannelMembership -> Bool
Prelude.Eq, ReadPrec [CreateChannelMembership]
ReadPrec CreateChannelMembership
Int -> ReadS CreateChannelMembership
ReadS [CreateChannelMembership]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateChannelMembership]
$creadListPrec :: ReadPrec [CreateChannelMembership]
readPrec :: ReadPrec CreateChannelMembership
$creadPrec :: ReadPrec CreateChannelMembership
readList :: ReadS [CreateChannelMembership]
$creadList :: ReadS [CreateChannelMembership]
readsPrec :: Int -> ReadS CreateChannelMembership
$creadsPrec :: Int -> ReadS CreateChannelMembership
Prelude.Read, Int -> CreateChannelMembership -> ShowS
[CreateChannelMembership] -> ShowS
CreateChannelMembership -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateChannelMembership] -> ShowS
$cshowList :: [CreateChannelMembership] -> ShowS
show :: CreateChannelMembership -> String
$cshow :: CreateChannelMembership -> String
showsPrec :: Int -> CreateChannelMembership -> ShowS
$cshowsPrec :: Int -> CreateChannelMembership -> ShowS
Prelude.Show, forall x. Rep CreateChannelMembership x -> CreateChannelMembership
forall x. CreateChannelMembership -> Rep CreateChannelMembership x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateChannelMembership x -> CreateChannelMembership
$cfrom :: forall x. CreateChannelMembership -> Rep CreateChannelMembership x
Prelude.Generic)

-- |
-- Create a value of 'CreateChannelMembership' 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:
--
-- 'chimeBearer', 'createChannelMembership_chimeBearer' - The @AppInstanceUserArn@ of the user that makes the API call.
--
-- 'channelArn', 'createChannelMembership_channelArn' - The ARN of the channel to which you\'re adding users.
--
-- 'memberArn', 'createChannelMembership_memberArn' - The ARN of the member you want to add to the channel.
--
-- 'type'', 'createChannelMembership_type' - The membership type of a user, @DEFAULT@ or @HIDDEN@. Default members
-- are always returned as part of @ListChannelMemberships@. Hidden members
-- are only returned if the type filter in @ListChannelMemberships@ equals
-- @HIDDEN@. Otherwise hidden members are not returned. This is only
-- supported by moderators.
newCreateChannelMembership ::
  -- | 'channelArn'
  Prelude.Text ->
  -- | 'memberArn'
  Prelude.Text ->
  -- | 'type''
  ChannelMembershipType ->
  CreateChannelMembership
newCreateChannelMembership :: Text -> Text -> ChannelMembershipType -> CreateChannelMembership
newCreateChannelMembership
  Text
pChannelArn_
  Text
pMemberArn_
  ChannelMembershipType
pType_ =
    CreateChannelMembership'
      { $sel:chimeBearer:CreateChannelMembership' :: Maybe Text
chimeBearer =
          forall a. Maybe a
Prelude.Nothing,
        $sel:channelArn:CreateChannelMembership' :: Text
channelArn = Text
pChannelArn_,
        $sel:memberArn:CreateChannelMembership' :: Text
memberArn = Text
pMemberArn_,
        $sel:type':CreateChannelMembership' :: ChannelMembershipType
type' = ChannelMembershipType
pType_
      }

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

-- | The ARN of the channel to which you\'re adding users.
createChannelMembership_channelArn :: Lens.Lens' CreateChannelMembership Prelude.Text
createChannelMembership_channelArn :: Lens' CreateChannelMembership Text
createChannelMembership_channelArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembership' {Text
channelArn :: Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
channelArn} -> Text
channelArn) (\s :: CreateChannelMembership
s@CreateChannelMembership' {} Text
a -> CreateChannelMembership
s {$sel:channelArn:CreateChannelMembership' :: Text
channelArn = Text
a} :: CreateChannelMembership)

-- | The ARN of the member you want to add to the channel.
createChannelMembership_memberArn :: Lens.Lens' CreateChannelMembership Prelude.Text
createChannelMembership_memberArn :: Lens' CreateChannelMembership Text
createChannelMembership_memberArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembership' {Text
memberArn :: Text
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
memberArn} -> Text
memberArn) (\s :: CreateChannelMembership
s@CreateChannelMembership' {} Text
a -> CreateChannelMembership
s {$sel:memberArn:CreateChannelMembership' :: Text
memberArn = Text
a} :: CreateChannelMembership)

-- | The membership type of a user, @DEFAULT@ or @HIDDEN@. Default members
-- are always returned as part of @ListChannelMemberships@. Hidden members
-- are only returned if the type filter in @ListChannelMemberships@ equals
-- @HIDDEN@. Otherwise hidden members are not returned. This is only
-- supported by moderators.
createChannelMembership_type :: Lens.Lens' CreateChannelMembership ChannelMembershipType
createChannelMembership_type :: Lens' CreateChannelMembership ChannelMembershipType
createChannelMembership_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembership' {ChannelMembershipType
type' :: ChannelMembershipType
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
type'} -> ChannelMembershipType
type') (\s :: CreateChannelMembership
s@CreateChannelMembership' {} ChannelMembershipType
a -> CreateChannelMembership
s {$sel:type':CreateChannelMembership' :: ChannelMembershipType
type' = ChannelMembershipType
a} :: CreateChannelMembership)

instance Core.AWSRequest CreateChannelMembership where
  type
    AWSResponse CreateChannelMembership =
      CreateChannelMembershipResponse
  request :: (Service -> Service)
-> CreateChannelMembership -> Request CreateChannelMembership
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 CreateChannelMembership
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateChannelMembership)))
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 Identity -> Int -> CreateChannelMembershipResponse
CreateChannelMembershipResponse'
            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
"Member")
            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 CreateChannelMembership where
  hashWithSalt :: Int -> CreateChannelMembership -> Int
hashWithSalt Int
_salt CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
chimeBearer :: Maybe Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
chimeBearer
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
channelArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
memberArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ChannelMembershipType
type'

instance Prelude.NFData CreateChannelMembership where
  rnf :: CreateChannelMembership -> ()
rnf CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
chimeBearer :: Maybe Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
chimeBearer
      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
memberArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ChannelMembershipType
type'

instance Data.ToHeaders CreateChannelMembership where
  toHeaders :: CreateChannelMembership -> ResponseHeaders
toHeaders CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
chimeBearer :: Maybe Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [HeaderName
"x-amz-chime-bearer" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Maybe Text
chimeBearer]

instance Data.ToJSON CreateChannelMembership where
  toJSON :: CreateChannelMembership -> Value
toJSON CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
chimeBearer :: Maybe Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ forall a. a -> Maybe a
Prelude.Just (Key
"MemberArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
memberArn),
            forall a. a -> Maybe a
Prelude.Just (Key
"Type" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ChannelMembershipType
type')
          ]
      )

instance Data.ToPath CreateChannelMembership where
  toPath :: CreateChannelMembership -> ByteString
toPath CreateChannelMembership' {Maybe Text
Text
ChannelMembershipType
type' :: ChannelMembershipType
memberArn :: Text
channelArn :: Text
chimeBearer :: Maybe Text
$sel:type':CreateChannelMembership' :: CreateChannelMembership -> ChannelMembershipType
$sel:memberArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:channelArn:CreateChannelMembership' :: CreateChannelMembership -> Text
$sel:chimeBearer:CreateChannelMembership' :: CreateChannelMembership -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/channels/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
channelArn, ByteString
"/memberships"]

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

-- | /See:/ 'newCreateChannelMembershipResponse' smart constructor.
data CreateChannelMembershipResponse = CreateChannelMembershipResponse'
  { -- | The ARN of the channel.
    CreateChannelMembershipResponse -> Maybe Text
channelArn :: Prelude.Maybe Prelude.Text,
    -- | The ARN and metadata of the member being added.
    CreateChannelMembershipResponse -> Maybe Identity
member :: Prelude.Maybe Identity,
    -- | The response's http status code.
    CreateChannelMembershipResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
$c/= :: CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
== :: CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
$c== :: CreateChannelMembershipResponse
-> CreateChannelMembershipResponse -> Bool
Prelude.Eq, Int -> CreateChannelMembershipResponse -> ShowS
[CreateChannelMembershipResponse] -> ShowS
CreateChannelMembershipResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateChannelMembershipResponse] -> ShowS
$cshowList :: [CreateChannelMembershipResponse] -> ShowS
show :: CreateChannelMembershipResponse -> String
$cshow :: CreateChannelMembershipResponse -> String
showsPrec :: Int -> CreateChannelMembershipResponse -> ShowS
$cshowsPrec :: Int -> CreateChannelMembershipResponse -> ShowS
Prelude.Show, forall x.
Rep CreateChannelMembershipResponse x
-> CreateChannelMembershipResponse
forall x.
CreateChannelMembershipResponse
-> Rep CreateChannelMembershipResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateChannelMembershipResponse x
-> CreateChannelMembershipResponse
$cfrom :: forall x.
CreateChannelMembershipResponse
-> Rep CreateChannelMembershipResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateChannelMembershipResponse' 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', 'createChannelMembershipResponse_channelArn' - The ARN of the channel.
--
-- 'member', 'createChannelMembershipResponse_member' - The ARN and metadata of the member being added.
--
-- 'httpStatus', 'createChannelMembershipResponse_httpStatus' - The response's http status code.
newCreateChannelMembershipResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateChannelMembershipResponse
newCreateChannelMembershipResponse :: Int -> CreateChannelMembershipResponse
newCreateChannelMembershipResponse Int
pHttpStatus_ =
  CreateChannelMembershipResponse'
    { $sel:channelArn:CreateChannelMembershipResponse' :: Maybe Text
channelArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:member:CreateChannelMembershipResponse' :: Maybe Identity
member = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateChannelMembershipResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

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

-- | The ARN and metadata of the member being added.
createChannelMembershipResponse_member :: Lens.Lens' CreateChannelMembershipResponse (Prelude.Maybe Identity)
createChannelMembershipResponse_member :: Lens' CreateChannelMembershipResponse (Maybe Identity)
createChannelMembershipResponse_member = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateChannelMembershipResponse' {Maybe Identity
member :: Maybe Identity
$sel:member:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Maybe Identity
member} -> Maybe Identity
member) (\s :: CreateChannelMembershipResponse
s@CreateChannelMembershipResponse' {} Maybe Identity
a -> CreateChannelMembershipResponse
s {$sel:member:CreateChannelMembershipResponse' :: Maybe Identity
member = Maybe Identity
a} :: CreateChannelMembershipResponse)

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

instance
  Prelude.NFData
    CreateChannelMembershipResponse
  where
  rnf :: CreateChannelMembershipResponse -> ()
rnf CreateChannelMembershipResponse' {Int
Maybe Text
Maybe Identity
httpStatus :: Int
member :: Maybe Identity
channelArn :: Maybe Text
$sel:httpStatus:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Int
$sel:member:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> Maybe Identity
$sel:channelArn:CreateChannelMembershipResponse' :: CreateChannelMembershipResponse -> 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 Identity
member
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus