{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Pinpoint.Types.DirectMessageConfiguration
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Pinpoint.Types.DirectMessageConfiguration where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import Amazonka.Pinpoint.Types.ADMMessage
import Amazonka.Pinpoint.Types.APNSMessage
import Amazonka.Pinpoint.Types.BaiduMessage
import Amazonka.Pinpoint.Types.DefaultMessage
import Amazonka.Pinpoint.Types.DefaultPushNotificationMessage
import Amazonka.Pinpoint.Types.EmailMessage
import Amazonka.Pinpoint.Types.GCMMessage
import Amazonka.Pinpoint.Types.SMSMessage
import Amazonka.Pinpoint.Types.VoiceMessage
import qualified Amazonka.Prelude as Prelude

-- | Specifies the settings and content for the default message and any
-- default messages that you tailored for specific channels.
--
-- /See:/ 'newDirectMessageConfiguration' smart constructor.
data DirectMessageConfiguration = DirectMessageConfiguration'
  { -- | The default push notification message for the APNs (Apple Push
    -- Notification service) channel. This message overrides the default push
    -- notification message (DefaultPushNotificationMessage).
    DirectMessageConfiguration -> Maybe APNSMessage
aPNSMessage :: Prelude.Maybe APNSMessage,
    -- | The default push notification message for the GCM channel, which is used
    -- to send notifications through the Firebase Cloud Messaging (FCM),
    -- formerly Google Cloud Messaging (GCM), service. This message overrides
    -- the default push notification message (DefaultPushNotificationMessage).
    DirectMessageConfiguration -> Maybe GCMMessage
gCMMessage :: Prelude.Maybe GCMMessage,
    -- | The default message for all channels.
    DirectMessageConfiguration -> Maybe DefaultMessage
defaultMessage :: Prelude.Maybe DefaultMessage,
    -- | The default push notification message for the ADM (Amazon Device
    -- Messaging) channel. This message overrides the default push notification
    -- message (DefaultPushNotificationMessage).
    DirectMessageConfiguration -> Maybe ADMMessage
aDMMessage :: Prelude.Maybe ADMMessage,
    -- | The default message for the SMS channel. This message overrides the
    -- default message (DefaultMessage).
    DirectMessageConfiguration -> Maybe SMSMessage
sMSMessage :: Prelude.Maybe SMSMessage,
    -- | The default message for the email channel. This message overrides the
    -- default message (DefaultMessage).
    DirectMessageConfiguration -> Maybe EmailMessage
emailMessage :: Prelude.Maybe EmailMessage,
    -- | The default message for the voice channel. This message overrides the
    -- default message (DefaultMessage).
    DirectMessageConfiguration -> Maybe VoiceMessage
voiceMessage :: Prelude.Maybe VoiceMessage,
    -- | The default push notification message for the Baidu (Baidu Cloud Push)
    -- channel. This message overrides the default push notification message
    -- (DefaultPushNotificationMessage).
    DirectMessageConfiguration -> Maybe BaiduMessage
baiduMessage :: Prelude.Maybe BaiduMessage,
    -- | The default push notification message for all push notification
    -- channels.
    DirectMessageConfiguration -> Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage :: Prelude.Maybe DefaultPushNotificationMessage
  }
  deriving (DirectMessageConfiguration -> DirectMessageConfiguration -> Bool
(DirectMessageConfiguration -> DirectMessageConfiguration -> Bool)
-> (DirectMessageConfiguration
    -> DirectMessageConfiguration -> Bool)
-> Eq DirectMessageConfiguration
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DirectMessageConfiguration -> DirectMessageConfiguration -> Bool
$c/= :: DirectMessageConfiguration -> DirectMessageConfiguration -> Bool
== :: DirectMessageConfiguration -> DirectMessageConfiguration -> Bool
$c== :: DirectMessageConfiguration -> DirectMessageConfiguration -> Bool
Prelude.Eq, ReadPrec [DirectMessageConfiguration]
ReadPrec DirectMessageConfiguration
Int -> ReadS DirectMessageConfiguration
ReadS [DirectMessageConfiguration]
(Int -> ReadS DirectMessageConfiguration)
-> ReadS [DirectMessageConfiguration]
-> ReadPrec DirectMessageConfiguration
-> ReadPrec [DirectMessageConfiguration]
-> Read DirectMessageConfiguration
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DirectMessageConfiguration]
$creadListPrec :: ReadPrec [DirectMessageConfiguration]
readPrec :: ReadPrec DirectMessageConfiguration
$creadPrec :: ReadPrec DirectMessageConfiguration
readList :: ReadS [DirectMessageConfiguration]
$creadList :: ReadS [DirectMessageConfiguration]
readsPrec :: Int -> ReadS DirectMessageConfiguration
$creadsPrec :: Int -> ReadS DirectMessageConfiguration
Prelude.Read, Int -> DirectMessageConfiguration -> ShowS
[DirectMessageConfiguration] -> ShowS
DirectMessageConfiguration -> String
(Int -> DirectMessageConfiguration -> ShowS)
-> (DirectMessageConfiguration -> String)
-> ([DirectMessageConfiguration] -> ShowS)
-> Show DirectMessageConfiguration
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DirectMessageConfiguration] -> ShowS
$cshowList :: [DirectMessageConfiguration] -> ShowS
show :: DirectMessageConfiguration -> String
$cshow :: DirectMessageConfiguration -> String
showsPrec :: Int -> DirectMessageConfiguration -> ShowS
$cshowsPrec :: Int -> DirectMessageConfiguration -> ShowS
Prelude.Show, (forall x.
 DirectMessageConfiguration -> Rep DirectMessageConfiguration x)
-> (forall x.
    Rep DirectMessageConfiguration x -> DirectMessageConfiguration)
-> Generic DirectMessageConfiguration
forall x.
Rep DirectMessageConfiguration x -> DirectMessageConfiguration
forall x.
DirectMessageConfiguration -> Rep DirectMessageConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DirectMessageConfiguration x -> DirectMessageConfiguration
$cfrom :: forall x.
DirectMessageConfiguration -> Rep DirectMessageConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'DirectMessageConfiguration' 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:
--
-- 'aPNSMessage', 'directMessageConfiguration_aPNSMessage' - The default push notification message for the APNs (Apple Push
-- Notification service) channel. This message overrides the default push
-- notification message (DefaultPushNotificationMessage).
--
-- 'gCMMessage', 'directMessageConfiguration_gCMMessage' - The default push notification message for the GCM channel, which is used
-- to send notifications through the Firebase Cloud Messaging (FCM),
-- formerly Google Cloud Messaging (GCM), service. This message overrides
-- the default push notification message (DefaultPushNotificationMessage).
--
-- 'defaultMessage', 'directMessageConfiguration_defaultMessage' - The default message for all channels.
--
-- 'aDMMessage', 'directMessageConfiguration_aDMMessage' - The default push notification message for the ADM (Amazon Device
-- Messaging) channel. This message overrides the default push notification
-- message (DefaultPushNotificationMessage).
--
-- 'sMSMessage', 'directMessageConfiguration_sMSMessage' - The default message for the SMS channel. This message overrides the
-- default message (DefaultMessage).
--
-- 'emailMessage', 'directMessageConfiguration_emailMessage' - The default message for the email channel. This message overrides the
-- default message (DefaultMessage).
--
-- 'voiceMessage', 'directMessageConfiguration_voiceMessage' - The default message for the voice channel. This message overrides the
-- default message (DefaultMessage).
--
-- 'baiduMessage', 'directMessageConfiguration_baiduMessage' - The default push notification message for the Baidu (Baidu Cloud Push)
-- channel. This message overrides the default push notification message
-- (DefaultPushNotificationMessage).
--
-- 'defaultPushNotificationMessage', 'directMessageConfiguration_defaultPushNotificationMessage' - The default push notification message for all push notification
-- channels.
newDirectMessageConfiguration ::
  DirectMessageConfiguration
newDirectMessageConfiguration :: DirectMessageConfiguration
newDirectMessageConfiguration =
  DirectMessageConfiguration' :: Maybe APNSMessage
-> Maybe GCMMessage
-> Maybe DefaultMessage
-> Maybe ADMMessage
-> Maybe SMSMessage
-> Maybe EmailMessage
-> Maybe VoiceMessage
-> Maybe BaiduMessage
-> Maybe DefaultPushNotificationMessage
-> DirectMessageConfiguration
DirectMessageConfiguration'
    { $sel:aPNSMessage:DirectMessageConfiguration' :: Maybe APNSMessage
aPNSMessage =
        Maybe APNSMessage
forall a. Maybe a
Prelude.Nothing,
      $sel:gCMMessage:DirectMessageConfiguration' :: Maybe GCMMessage
gCMMessage = Maybe GCMMessage
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultMessage:DirectMessageConfiguration' :: Maybe DefaultMessage
defaultMessage = Maybe DefaultMessage
forall a. Maybe a
Prelude.Nothing,
      $sel:aDMMessage:DirectMessageConfiguration' :: Maybe ADMMessage
aDMMessage = Maybe ADMMessage
forall a. Maybe a
Prelude.Nothing,
      $sel:sMSMessage:DirectMessageConfiguration' :: Maybe SMSMessage
sMSMessage = Maybe SMSMessage
forall a. Maybe a
Prelude.Nothing,
      $sel:emailMessage:DirectMessageConfiguration' :: Maybe EmailMessage
emailMessage = Maybe EmailMessage
forall a. Maybe a
Prelude.Nothing,
      $sel:voiceMessage:DirectMessageConfiguration' :: Maybe VoiceMessage
voiceMessage = Maybe VoiceMessage
forall a. Maybe a
Prelude.Nothing,
      $sel:baiduMessage:DirectMessageConfiguration' :: Maybe BaiduMessage
baiduMessage = Maybe BaiduMessage
forall a. Maybe a
Prelude.Nothing,
      $sel:defaultPushNotificationMessage:DirectMessageConfiguration' :: Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage =
        Maybe DefaultPushNotificationMessage
forall a. Maybe a
Prelude.Nothing
    }

-- | The default push notification message for the APNs (Apple Push
-- Notification service) channel. This message overrides the default push
-- notification message (DefaultPushNotificationMessage).
directMessageConfiguration_aPNSMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe APNSMessage)
directMessageConfiguration_aPNSMessage :: (Maybe APNSMessage -> f (Maybe APNSMessage))
-> DirectMessageConfiguration -> f DirectMessageConfiguration
directMessageConfiguration_aPNSMessage = (DirectMessageConfiguration -> Maybe APNSMessage)
-> (DirectMessageConfiguration
    -> Maybe APNSMessage -> DirectMessageConfiguration)
-> Lens
     DirectMessageConfiguration
     DirectMessageConfiguration
     (Maybe APNSMessage)
     (Maybe APNSMessage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectMessageConfiguration' {Maybe APNSMessage
aPNSMessage :: Maybe APNSMessage
$sel:aPNSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe APNSMessage
aPNSMessage} -> Maybe APNSMessage
aPNSMessage) (\s :: DirectMessageConfiguration
s@DirectMessageConfiguration' {} Maybe APNSMessage
a -> DirectMessageConfiguration
s {$sel:aPNSMessage:DirectMessageConfiguration' :: Maybe APNSMessage
aPNSMessage = Maybe APNSMessage
a} :: DirectMessageConfiguration)

-- | The default push notification message for the GCM channel, which is used
-- to send notifications through the Firebase Cloud Messaging (FCM),
-- formerly Google Cloud Messaging (GCM), service. This message overrides
-- the default push notification message (DefaultPushNotificationMessage).
directMessageConfiguration_gCMMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe GCMMessage)
directMessageConfiguration_gCMMessage :: (Maybe GCMMessage -> f (Maybe GCMMessage))
-> DirectMessageConfiguration -> f DirectMessageConfiguration
directMessageConfiguration_gCMMessage = (DirectMessageConfiguration -> Maybe GCMMessage)
-> (DirectMessageConfiguration
    -> Maybe GCMMessage -> DirectMessageConfiguration)
-> Lens
     DirectMessageConfiguration
     DirectMessageConfiguration
     (Maybe GCMMessage)
     (Maybe GCMMessage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectMessageConfiguration' {Maybe GCMMessage
gCMMessage :: Maybe GCMMessage
$sel:gCMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe GCMMessage
gCMMessage} -> Maybe GCMMessage
gCMMessage) (\s :: DirectMessageConfiguration
s@DirectMessageConfiguration' {} Maybe GCMMessage
a -> DirectMessageConfiguration
s {$sel:gCMMessage:DirectMessageConfiguration' :: Maybe GCMMessage
gCMMessage = Maybe GCMMessage
a} :: DirectMessageConfiguration)

-- | The default message for all channels.
directMessageConfiguration_defaultMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe DefaultMessage)
directMessageConfiguration_defaultMessage :: (Maybe DefaultMessage -> f (Maybe DefaultMessage))
-> DirectMessageConfiguration -> f DirectMessageConfiguration
directMessageConfiguration_defaultMessage = (DirectMessageConfiguration -> Maybe DefaultMessage)
-> (DirectMessageConfiguration
    -> Maybe DefaultMessage -> DirectMessageConfiguration)
-> Lens
     DirectMessageConfiguration
     DirectMessageConfiguration
     (Maybe DefaultMessage)
     (Maybe DefaultMessage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectMessageConfiguration' {Maybe DefaultMessage
defaultMessage :: Maybe DefaultMessage
$sel:defaultMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultMessage
defaultMessage} -> Maybe DefaultMessage
defaultMessage) (\s :: DirectMessageConfiguration
s@DirectMessageConfiguration' {} Maybe DefaultMessage
a -> DirectMessageConfiguration
s {$sel:defaultMessage:DirectMessageConfiguration' :: Maybe DefaultMessage
defaultMessage = Maybe DefaultMessage
a} :: DirectMessageConfiguration)

-- | The default push notification message for the ADM (Amazon Device
-- Messaging) channel. This message overrides the default push notification
-- message (DefaultPushNotificationMessage).
directMessageConfiguration_aDMMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe ADMMessage)
directMessageConfiguration_aDMMessage :: (Maybe ADMMessage -> f (Maybe ADMMessage))
-> DirectMessageConfiguration -> f DirectMessageConfiguration
directMessageConfiguration_aDMMessage = (DirectMessageConfiguration -> Maybe ADMMessage)
-> (DirectMessageConfiguration
    -> Maybe ADMMessage -> DirectMessageConfiguration)
-> Lens
     DirectMessageConfiguration
     DirectMessageConfiguration
     (Maybe ADMMessage)
     (Maybe ADMMessage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectMessageConfiguration' {Maybe ADMMessage
aDMMessage :: Maybe ADMMessage
$sel:aDMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe ADMMessage
aDMMessage} -> Maybe ADMMessage
aDMMessage) (\s :: DirectMessageConfiguration
s@DirectMessageConfiguration' {} Maybe ADMMessage
a -> DirectMessageConfiguration
s {$sel:aDMMessage:DirectMessageConfiguration' :: Maybe ADMMessage
aDMMessage = Maybe ADMMessage
a} :: DirectMessageConfiguration)

-- | The default message for the SMS channel. This message overrides the
-- default message (DefaultMessage).
directMessageConfiguration_sMSMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe SMSMessage)
directMessageConfiguration_sMSMessage :: (Maybe SMSMessage -> f (Maybe SMSMessage))
-> DirectMessageConfiguration -> f DirectMessageConfiguration
directMessageConfiguration_sMSMessage = (DirectMessageConfiguration -> Maybe SMSMessage)
-> (DirectMessageConfiguration
    -> Maybe SMSMessage -> DirectMessageConfiguration)
-> Lens
     DirectMessageConfiguration
     DirectMessageConfiguration
     (Maybe SMSMessage)
     (Maybe SMSMessage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectMessageConfiguration' {Maybe SMSMessage
sMSMessage :: Maybe SMSMessage
$sel:sMSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe SMSMessage
sMSMessage} -> Maybe SMSMessage
sMSMessage) (\s :: DirectMessageConfiguration
s@DirectMessageConfiguration' {} Maybe SMSMessage
a -> DirectMessageConfiguration
s {$sel:sMSMessage:DirectMessageConfiguration' :: Maybe SMSMessage
sMSMessage = Maybe SMSMessage
a} :: DirectMessageConfiguration)

-- | The default message for the email channel. This message overrides the
-- default message (DefaultMessage).
directMessageConfiguration_emailMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe EmailMessage)
directMessageConfiguration_emailMessage :: (Maybe EmailMessage -> f (Maybe EmailMessage))
-> DirectMessageConfiguration -> f DirectMessageConfiguration
directMessageConfiguration_emailMessage = (DirectMessageConfiguration -> Maybe EmailMessage)
-> (DirectMessageConfiguration
    -> Maybe EmailMessage -> DirectMessageConfiguration)
-> Lens
     DirectMessageConfiguration
     DirectMessageConfiguration
     (Maybe EmailMessage)
     (Maybe EmailMessage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectMessageConfiguration' {Maybe EmailMessage
emailMessage :: Maybe EmailMessage
$sel:emailMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe EmailMessage
emailMessage} -> Maybe EmailMessage
emailMessage) (\s :: DirectMessageConfiguration
s@DirectMessageConfiguration' {} Maybe EmailMessage
a -> DirectMessageConfiguration
s {$sel:emailMessage:DirectMessageConfiguration' :: Maybe EmailMessage
emailMessage = Maybe EmailMessage
a} :: DirectMessageConfiguration)

-- | The default message for the voice channel. This message overrides the
-- default message (DefaultMessage).
directMessageConfiguration_voiceMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe VoiceMessage)
directMessageConfiguration_voiceMessage :: (Maybe VoiceMessage -> f (Maybe VoiceMessage))
-> DirectMessageConfiguration -> f DirectMessageConfiguration
directMessageConfiguration_voiceMessage = (DirectMessageConfiguration -> Maybe VoiceMessage)
-> (DirectMessageConfiguration
    -> Maybe VoiceMessage -> DirectMessageConfiguration)
-> Lens
     DirectMessageConfiguration
     DirectMessageConfiguration
     (Maybe VoiceMessage)
     (Maybe VoiceMessage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectMessageConfiguration' {Maybe VoiceMessage
voiceMessage :: Maybe VoiceMessage
$sel:voiceMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe VoiceMessage
voiceMessage} -> Maybe VoiceMessage
voiceMessage) (\s :: DirectMessageConfiguration
s@DirectMessageConfiguration' {} Maybe VoiceMessage
a -> DirectMessageConfiguration
s {$sel:voiceMessage:DirectMessageConfiguration' :: Maybe VoiceMessage
voiceMessage = Maybe VoiceMessage
a} :: DirectMessageConfiguration)

-- | The default push notification message for the Baidu (Baidu Cloud Push)
-- channel. This message overrides the default push notification message
-- (DefaultPushNotificationMessage).
directMessageConfiguration_baiduMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe BaiduMessage)
directMessageConfiguration_baiduMessage :: (Maybe BaiduMessage -> f (Maybe BaiduMessage))
-> DirectMessageConfiguration -> f DirectMessageConfiguration
directMessageConfiguration_baiduMessage = (DirectMessageConfiguration -> Maybe BaiduMessage)
-> (DirectMessageConfiguration
    -> Maybe BaiduMessage -> DirectMessageConfiguration)
-> Lens
     DirectMessageConfiguration
     DirectMessageConfiguration
     (Maybe BaiduMessage)
     (Maybe BaiduMessage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectMessageConfiguration' {Maybe BaiduMessage
baiduMessage :: Maybe BaiduMessage
$sel:baiduMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe BaiduMessage
baiduMessage} -> Maybe BaiduMessage
baiduMessage) (\s :: DirectMessageConfiguration
s@DirectMessageConfiguration' {} Maybe BaiduMessage
a -> DirectMessageConfiguration
s {$sel:baiduMessage:DirectMessageConfiguration' :: Maybe BaiduMessage
baiduMessage = Maybe BaiduMessage
a} :: DirectMessageConfiguration)

-- | The default push notification message for all push notification
-- channels.
directMessageConfiguration_defaultPushNotificationMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe DefaultPushNotificationMessage)
directMessageConfiguration_defaultPushNotificationMessage :: (Maybe DefaultPushNotificationMessage
 -> f (Maybe DefaultPushNotificationMessage))
-> DirectMessageConfiguration -> f DirectMessageConfiguration
directMessageConfiguration_defaultPushNotificationMessage = (DirectMessageConfiguration
 -> Maybe DefaultPushNotificationMessage)
-> (DirectMessageConfiguration
    -> Maybe DefaultPushNotificationMessage
    -> DirectMessageConfiguration)
-> Lens
     DirectMessageConfiguration
     DirectMessageConfiguration
     (Maybe DefaultPushNotificationMessage)
     (Maybe DefaultPushNotificationMessage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DirectMessageConfiguration' {Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage :: Maybe DefaultPushNotificationMessage
$sel:defaultPushNotificationMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage} -> Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage) (\s :: DirectMessageConfiguration
s@DirectMessageConfiguration' {} Maybe DefaultPushNotificationMessage
a -> DirectMessageConfiguration
s {$sel:defaultPushNotificationMessage:DirectMessageConfiguration' :: Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage = Maybe DefaultPushNotificationMessage
a} :: DirectMessageConfiguration)

instance Prelude.Hashable DirectMessageConfiguration

instance Prelude.NFData DirectMessageConfiguration

instance Core.ToJSON DirectMessageConfiguration where
  toJSON :: DirectMessageConfiguration -> Value
toJSON DirectMessageConfiguration' {Maybe APNSMessage
Maybe ADMMessage
Maybe BaiduMessage
Maybe DefaultMessage
Maybe DefaultPushNotificationMessage
Maybe GCMMessage
Maybe SMSMessage
Maybe EmailMessage
Maybe VoiceMessage
defaultPushNotificationMessage :: Maybe DefaultPushNotificationMessage
baiduMessage :: Maybe BaiduMessage
voiceMessage :: Maybe VoiceMessage
emailMessage :: Maybe EmailMessage
sMSMessage :: Maybe SMSMessage
aDMMessage :: Maybe ADMMessage
defaultMessage :: Maybe DefaultMessage
gCMMessage :: Maybe GCMMessage
aPNSMessage :: Maybe APNSMessage
$sel:defaultPushNotificationMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultPushNotificationMessage
$sel:baiduMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe BaiduMessage
$sel:voiceMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe VoiceMessage
$sel:emailMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe EmailMessage
$sel:sMSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe SMSMessage
$sel:aDMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe ADMMessage
$sel:defaultMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultMessage
$sel:gCMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe GCMMessage
$sel:aPNSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe APNSMessage
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"APNSMessage" Text -> APNSMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (APNSMessage -> Pair) -> Maybe APNSMessage -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe APNSMessage
aPNSMessage,
            (Text
"GCMMessage" Text -> GCMMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (GCMMessage -> Pair) -> Maybe GCMMessage -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe GCMMessage
gCMMessage,
            (Text
"DefaultMessage" Text -> DefaultMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DefaultMessage -> Pair) -> Maybe DefaultMessage -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DefaultMessage
defaultMessage,
            (Text
"ADMMessage" Text -> ADMMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (ADMMessage -> Pair) -> Maybe ADMMessage -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ADMMessage
aDMMessage,
            (Text
"SMSMessage" Text -> SMSMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (SMSMessage -> Pair) -> Maybe SMSMessage -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe SMSMessage
sMSMessage,
            (Text
"EmailMessage" Text -> EmailMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (EmailMessage -> Pair) -> Maybe EmailMessage -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EmailMessage
emailMessage,
            (Text
"VoiceMessage" Text -> VoiceMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (VoiceMessage -> Pair) -> Maybe VoiceMessage -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe VoiceMessage
voiceMessage,
            (Text
"BaiduMessage" Text -> BaiduMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (BaiduMessage -> Pair) -> Maybe BaiduMessage -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe BaiduMessage
baiduMessage,
            (Text
"DefaultPushNotificationMessage" Text -> DefaultPushNotificationMessage -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DefaultPushNotificationMessage -> Pair)
-> Maybe DefaultPushNotificationMessage -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage
          ]
      )