{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Pinpoint.Types.DirectMessageConfiguration where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
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 ADM (Amazon Device
    -- Messaging) channel. This message overrides the default push notification
    -- message (DefaultPushNotificationMessage).
    DirectMessageConfiguration -> Maybe ADMMessage
aDMMessage :: Prelude.Maybe ADMMessage,
    -- | 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 Baidu (Baidu Cloud Push)
    -- channel. This message overrides the default push notification message
    -- (DefaultPushNotificationMessage).
    DirectMessageConfiguration -> Maybe BaiduMessage
baiduMessage :: Prelude.Maybe BaiduMessage,
    -- | The default message for all channels.
    DirectMessageConfiguration -> Maybe DefaultMessage
defaultMessage :: Prelude.Maybe DefaultMessage,
    -- | The default push notification message for all push notification
    -- channels.
    DirectMessageConfiguration -> Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage :: Prelude.Maybe DefaultPushNotificationMessage,
    -- | The default message for the email channel. This message overrides the
    -- default message (DefaultMessage).
    DirectMessageConfiguration -> Maybe EmailMessage
emailMessage :: Prelude.Maybe EmailMessage,
    -- | 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 the SMS channel. This message overrides the
    -- default message (DefaultMessage).
    DirectMessageConfiguration -> Maybe SMSMessage
sMSMessage :: Prelude.Maybe SMSMessage,
    -- | The default message for the voice channel. This message overrides the
    -- default message (DefaultMessage).
    DirectMessageConfiguration -> Maybe VoiceMessage
voiceMessage :: Prelude.Maybe VoiceMessage
  }
  deriving (DirectMessageConfiguration -> DirectMessageConfiguration -> Bool
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]
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
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.
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:
--
-- 'aDMMessage', 'directMessageConfiguration_aDMMessage' - The default push notification message for the ADM (Amazon Device
-- Messaging) channel. This message overrides the default push notification
-- message (DefaultPushNotificationMessage).
--
-- '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).
--
-- 'baiduMessage', 'directMessageConfiguration_baiduMessage' - The default push notification message for the Baidu (Baidu Cloud Push)
-- channel. This message overrides the default push notification message
-- (DefaultPushNotificationMessage).
--
-- 'defaultMessage', 'directMessageConfiguration_defaultMessage' - The default message for all channels.
--
-- 'defaultPushNotificationMessage', 'directMessageConfiguration_defaultPushNotificationMessage' - The default push notification message for all push notification
-- channels.
--
-- 'emailMessage', 'directMessageConfiguration_emailMessage' - The default message for the email channel. This message overrides the
-- default message (DefaultMessage).
--
-- '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).
--
-- 'sMSMessage', 'directMessageConfiguration_sMSMessage' - The default message for the SMS 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).
newDirectMessageConfiguration ::
  DirectMessageConfiguration
newDirectMessageConfiguration :: DirectMessageConfiguration
newDirectMessageConfiguration =
  DirectMessageConfiguration'
    { $sel:aDMMessage:DirectMessageConfiguration' :: Maybe ADMMessage
aDMMessage =
        forall a. Maybe a
Prelude.Nothing,
      $sel:aPNSMessage:DirectMessageConfiguration' :: Maybe APNSMessage
aPNSMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:baiduMessage:DirectMessageConfiguration' :: Maybe BaiduMessage
baiduMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultMessage:DirectMessageConfiguration' :: Maybe DefaultMessage
defaultMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultPushNotificationMessage:DirectMessageConfiguration' :: Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage =
        forall a. Maybe a
Prelude.Nothing,
      $sel:emailMessage:DirectMessageConfiguration' :: Maybe EmailMessage
emailMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:gCMMessage:DirectMessageConfiguration' :: Maybe GCMMessage
gCMMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:sMSMessage:DirectMessageConfiguration' :: Maybe SMSMessage
sMSMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:voiceMessage:DirectMessageConfiguration' :: Maybe VoiceMessage
voiceMessage = forall a. Maybe a
Prelude.Nothing
    }

-- | 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 :: Lens' DirectMessageConfiguration (Maybe ADMMessage)
directMessageConfiguration_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 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 :: Lens' DirectMessageConfiguration (Maybe APNSMessage)
directMessageConfiguration_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 Baidu (Baidu Cloud Push)
-- channel. This message overrides the default push notification message
-- (DefaultPushNotificationMessage).
directMessageConfiguration_baiduMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe BaiduMessage)
directMessageConfiguration_baiduMessage :: Lens' DirectMessageConfiguration (Maybe BaiduMessage)
directMessageConfiguration_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 message for all channels.
directMessageConfiguration_defaultMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe DefaultMessage)
directMessageConfiguration_defaultMessage :: Lens' DirectMessageConfiguration (Maybe DefaultMessage)
directMessageConfiguration_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 all push notification
-- channels.
directMessageConfiguration_defaultPushNotificationMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe DefaultPushNotificationMessage)
directMessageConfiguration_defaultPushNotificationMessage :: Lens'
  DirectMessageConfiguration (Maybe DefaultPushNotificationMessage)
directMessageConfiguration_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)

-- | The default message for the email channel. This message overrides the
-- default message (DefaultMessage).
directMessageConfiguration_emailMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe EmailMessage)
directMessageConfiguration_emailMessage :: Lens' DirectMessageConfiguration (Maybe EmailMessage)
directMessageConfiguration_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 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 :: Lens' DirectMessageConfiguration (Maybe GCMMessage)
directMessageConfiguration_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 the SMS channel. This message overrides the
-- default message (DefaultMessage).
directMessageConfiguration_sMSMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe SMSMessage)
directMessageConfiguration_sMSMessage :: Lens' DirectMessageConfiguration (Maybe SMSMessage)
directMessageConfiguration_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 voice channel. This message overrides the
-- default message (DefaultMessage).
directMessageConfiguration_voiceMessage :: Lens.Lens' DirectMessageConfiguration (Prelude.Maybe VoiceMessage)
directMessageConfiguration_voiceMessage :: Lens' DirectMessageConfiguration (Maybe VoiceMessage)
directMessageConfiguration_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)

instance Prelude.Hashable DirectMessageConfiguration where
  hashWithSalt :: Int -> DirectMessageConfiguration -> Int
hashWithSalt Int
_salt DirectMessageConfiguration' {Maybe APNSMessage
Maybe ADMMessage
Maybe BaiduMessage
Maybe DefaultMessage
Maybe DefaultPushNotificationMessage
Maybe GCMMessage
Maybe SMSMessage
Maybe EmailMessage
Maybe VoiceMessage
voiceMessage :: Maybe VoiceMessage
sMSMessage :: Maybe SMSMessage
gCMMessage :: Maybe GCMMessage
emailMessage :: Maybe EmailMessage
defaultPushNotificationMessage :: Maybe DefaultPushNotificationMessage
defaultMessage :: Maybe DefaultMessage
baiduMessage :: Maybe BaiduMessage
aPNSMessage :: Maybe APNSMessage
aDMMessage :: Maybe ADMMessage
$sel:voiceMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe VoiceMessage
$sel:sMSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe SMSMessage
$sel:gCMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe GCMMessage
$sel:emailMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe EmailMessage
$sel:defaultPushNotificationMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultPushNotificationMessage
$sel:defaultMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultMessage
$sel:baiduMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe BaiduMessage
$sel:aPNSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe APNSMessage
$sel:aDMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe ADMMessage
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ADMMessage
aDMMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe APNSMessage
aPNSMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BaiduMessage
baiduMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DefaultMessage
defaultMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EmailMessage
emailMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe GCMMessage
gCMMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SMSMessage
sMSMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VoiceMessage
voiceMessage

instance Prelude.NFData DirectMessageConfiguration where
  rnf :: DirectMessageConfiguration -> ()
rnf DirectMessageConfiguration' {Maybe APNSMessage
Maybe ADMMessage
Maybe BaiduMessage
Maybe DefaultMessage
Maybe DefaultPushNotificationMessage
Maybe GCMMessage
Maybe SMSMessage
Maybe EmailMessage
Maybe VoiceMessage
voiceMessage :: Maybe VoiceMessage
sMSMessage :: Maybe SMSMessage
gCMMessage :: Maybe GCMMessage
emailMessage :: Maybe EmailMessage
defaultPushNotificationMessage :: Maybe DefaultPushNotificationMessage
defaultMessage :: Maybe DefaultMessage
baiduMessage :: Maybe BaiduMessage
aPNSMessage :: Maybe APNSMessage
aDMMessage :: Maybe ADMMessage
$sel:voiceMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe VoiceMessage
$sel:sMSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe SMSMessage
$sel:gCMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe GCMMessage
$sel:emailMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe EmailMessage
$sel:defaultPushNotificationMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultPushNotificationMessage
$sel:defaultMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultMessage
$sel:baiduMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe BaiduMessage
$sel:aPNSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe APNSMessage
$sel:aDMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe ADMMessage
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ADMMessage
aDMMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe APNSMessage
aPNSMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BaiduMessage
baiduMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DefaultMessage
defaultMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DefaultPushNotificationMessage
defaultPushNotificationMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EmailMessage
emailMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe GCMMessage
gCMMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SMSMessage
sMSMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VoiceMessage
voiceMessage

instance Data.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
voiceMessage :: Maybe VoiceMessage
sMSMessage :: Maybe SMSMessage
gCMMessage :: Maybe GCMMessage
emailMessage :: Maybe EmailMessage
defaultPushNotificationMessage :: Maybe DefaultPushNotificationMessage
defaultMessage :: Maybe DefaultMessage
baiduMessage :: Maybe BaiduMessage
aPNSMessage :: Maybe APNSMessage
aDMMessage :: Maybe ADMMessage
$sel:voiceMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe VoiceMessage
$sel:sMSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe SMSMessage
$sel:gCMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe GCMMessage
$sel:emailMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe EmailMessage
$sel:defaultPushNotificationMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultPushNotificationMessage
$sel:defaultMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe DefaultMessage
$sel:baiduMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe BaiduMessage
$sel:aPNSMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe APNSMessage
$sel:aDMMessage:DirectMessageConfiguration' :: DirectMessageConfiguration -> Maybe ADMMessage
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ADMMessage" 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 ADMMessage
aDMMessage,
            (Key
"APNSMessage" 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 APNSMessage
aPNSMessage,
            (Key
"BaiduMessage" 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 BaiduMessage
baiduMessage,
            (Key
"DefaultMessage" 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 DefaultMessage
defaultMessage,
            (Key
"DefaultPushNotificationMessage" 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 DefaultPushNotificationMessage
defaultPushNotificationMessage,
            (Key
"EmailMessage" 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 EmailMessage
emailMessage,
            (Key
"GCMMessage" 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 GCMMessage
gCMMessage,
            (Key
"SMSMessage" 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 SMSMessage
sMSMessage,
            (Key
"VoiceMessage" 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 VoiceMessage
voiceMessage
          ]
      )