{-# 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.MessageConfiguration
-- 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.MessageConfiguration 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.CampaignCustomMessage
import Amazonka.Pinpoint.Types.CampaignEmailMessage
import Amazonka.Pinpoint.Types.CampaignInAppMessage
import Amazonka.Pinpoint.Types.CampaignSmsMessage
import Amazonka.Pinpoint.Types.Message
import qualified Amazonka.Prelude as Prelude

-- | Specifies the message configuration settings for a campaign.
--
-- /See:/ 'newMessageConfiguration' smart constructor.
data MessageConfiguration = MessageConfiguration'
  { -- | The message that the campaign sends through the ADM (Amazon Device
    -- Messaging) channel. If specified, this message overrides the default
    -- message.
    MessageConfiguration -> Maybe Message
aDMMessage :: Prelude.Maybe Message,
    -- | The message that the campaign sends through the APNs (Apple Push
    -- Notification service) channel. If specified, this message overrides the
    -- default message.
    MessageConfiguration -> Maybe Message
aPNSMessage :: Prelude.Maybe Message,
    -- | The message that the campaign sends through the Baidu (Baidu Cloud Push)
    -- channel. If specified, this message overrides the default message.
    MessageConfiguration -> Maybe Message
baiduMessage :: Prelude.Maybe Message,
    -- | The message that the campaign sends through a custom channel, as
    -- specified by the delivery configuration (CustomDeliveryConfiguration)
    -- settings for the campaign. If specified, this message overrides the
    -- default message.
    MessageConfiguration -> Maybe CampaignCustomMessage
customMessage :: Prelude.Maybe CampaignCustomMessage,
    -- | The default message that the campaign sends through all the channels
    -- that are configured for the campaign.
    MessageConfiguration -> Maybe Message
defaultMessage :: Prelude.Maybe Message,
    -- | The message that the campaign sends through the email channel. If
    -- specified, this message overrides the default message.
    MessageConfiguration -> Maybe CampaignEmailMessage
emailMessage :: Prelude.Maybe CampaignEmailMessage,
    -- | The message that the campaign sends through the GCM channel, which
    -- enables Amazon Pinpoint to send push notifications through the Firebase
    -- Cloud Messaging (FCM), formerly Google Cloud Messaging (GCM), service.
    -- If specified, this message overrides the default message.
    MessageConfiguration -> Maybe Message
gCMMessage :: Prelude.Maybe Message,
    -- | The in-app message configuration.
    MessageConfiguration -> Maybe CampaignInAppMessage
inAppMessage :: Prelude.Maybe CampaignInAppMessage,
    -- | The message that the campaign sends through the SMS channel. If
    -- specified, this message overrides the default message.
    MessageConfiguration -> Maybe CampaignSmsMessage
sMSMessage :: Prelude.Maybe CampaignSmsMessage
  }
  deriving (MessageConfiguration -> MessageConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageConfiguration -> MessageConfiguration -> Bool
$c/= :: MessageConfiguration -> MessageConfiguration -> Bool
== :: MessageConfiguration -> MessageConfiguration -> Bool
$c== :: MessageConfiguration -> MessageConfiguration -> Bool
Prelude.Eq, ReadPrec [MessageConfiguration]
ReadPrec MessageConfiguration
Int -> ReadS MessageConfiguration
ReadS [MessageConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageConfiguration]
$creadListPrec :: ReadPrec [MessageConfiguration]
readPrec :: ReadPrec MessageConfiguration
$creadPrec :: ReadPrec MessageConfiguration
readList :: ReadS [MessageConfiguration]
$creadList :: ReadS [MessageConfiguration]
readsPrec :: Int -> ReadS MessageConfiguration
$creadsPrec :: Int -> ReadS MessageConfiguration
Prelude.Read, Int -> MessageConfiguration -> ShowS
[MessageConfiguration] -> ShowS
MessageConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageConfiguration] -> ShowS
$cshowList :: [MessageConfiguration] -> ShowS
show :: MessageConfiguration -> String
$cshow :: MessageConfiguration -> String
showsPrec :: Int -> MessageConfiguration -> ShowS
$cshowsPrec :: Int -> MessageConfiguration -> ShowS
Prelude.Show, forall x. Rep MessageConfiguration x -> MessageConfiguration
forall x. MessageConfiguration -> Rep MessageConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MessageConfiguration x -> MessageConfiguration
$cfrom :: forall x. MessageConfiguration -> Rep MessageConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'MessageConfiguration' 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', 'messageConfiguration_aDMMessage' - The message that the campaign sends through the ADM (Amazon Device
-- Messaging) channel. If specified, this message overrides the default
-- message.
--
-- 'aPNSMessage', 'messageConfiguration_aPNSMessage' - The message that the campaign sends through the APNs (Apple Push
-- Notification service) channel. If specified, this message overrides the
-- default message.
--
-- 'baiduMessage', 'messageConfiguration_baiduMessage' - The message that the campaign sends through the Baidu (Baidu Cloud Push)
-- channel. If specified, this message overrides the default message.
--
-- 'customMessage', 'messageConfiguration_customMessage' - The message that the campaign sends through a custom channel, as
-- specified by the delivery configuration (CustomDeliveryConfiguration)
-- settings for the campaign. If specified, this message overrides the
-- default message.
--
-- 'defaultMessage', 'messageConfiguration_defaultMessage' - The default message that the campaign sends through all the channels
-- that are configured for the campaign.
--
-- 'emailMessage', 'messageConfiguration_emailMessage' - The message that the campaign sends through the email channel. If
-- specified, this message overrides the default message.
--
-- 'gCMMessage', 'messageConfiguration_gCMMessage' - The message that the campaign sends through the GCM channel, which
-- enables Amazon Pinpoint to send push notifications through the Firebase
-- Cloud Messaging (FCM), formerly Google Cloud Messaging (GCM), service.
-- If specified, this message overrides the default message.
--
-- 'inAppMessage', 'messageConfiguration_inAppMessage' - The in-app message configuration.
--
-- 'sMSMessage', 'messageConfiguration_sMSMessage' - The message that the campaign sends through the SMS channel. If
-- specified, this message overrides the default message.
newMessageConfiguration ::
  MessageConfiguration
newMessageConfiguration :: MessageConfiguration
newMessageConfiguration =
  MessageConfiguration'
    { $sel:aDMMessage:MessageConfiguration' :: Maybe Message
aDMMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:aPNSMessage:MessageConfiguration' :: Maybe Message
aPNSMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:baiduMessage:MessageConfiguration' :: Maybe Message
baiduMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:customMessage:MessageConfiguration' :: Maybe CampaignCustomMessage
customMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:defaultMessage:MessageConfiguration' :: Maybe Message
defaultMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:emailMessage:MessageConfiguration' :: Maybe CampaignEmailMessage
emailMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:gCMMessage:MessageConfiguration' :: Maybe Message
gCMMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:inAppMessage:MessageConfiguration' :: Maybe CampaignInAppMessage
inAppMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:sMSMessage:MessageConfiguration' :: Maybe CampaignSmsMessage
sMSMessage = forall a. Maybe a
Prelude.Nothing
    }

-- | The message that the campaign sends through the ADM (Amazon Device
-- Messaging) channel. If specified, this message overrides the default
-- message.
messageConfiguration_aDMMessage :: Lens.Lens' MessageConfiguration (Prelude.Maybe Message)
messageConfiguration_aDMMessage :: Lens' MessageConfiguration (Maybe Message)
messageConfiguration_aDMMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MessageConfiguration' {Maybe Message
aDMMessage :: Maybe Message
$sel:aDMMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
aDMMessage} -> Maybe Message
aDMMessage) (\s :: MessageConfiguration
s@MessageConfiguration' {} Maybe Message
a -> MessageConfiguration
s {$sel:aDMMessage:MessageConfiguration' :: Maybe Message
aDMMessage = Maybe Message
a} :: MessageConfiguration)

-- | The message that the campaign sends through the APNs (Apple Push
-- Notification service) channel. If specified, this message overrides the
-- default message.
messageConfiguration_aPNSMessage :: Lens.Lens' MessageConfiguration (Prelude.Maybe Message)
messageConfiguration_aPNSMessage :: Lens' MessageConfiguration (Maybe Message)
messageConfiguration_aPNSMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MessageConfiguration' {Maybe Message
aPNSMessage :: Maybe Message
$sel:aPNSMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
aPNSMessage} -> Maybe Message
aPNSMessage) (\s :: MessageConfiguration
s@MessageConfiguration' {} Maybe Message
a -> MessageConfiguration
s {$sel:aPNSMessage:MessageConfiguration' :: Maybe Message
aPNSMessage = Maybe Message
a} :: MessageConfiguration)

-- | The message that the campaign sends through the Baidu (Baidu Cloud Push)
-- channel. If specified, this message overrides the default message.
messageConfiguration_baiduMessage :: Lens.Lens' MessageConfiguration (Prelude.Maybe Message)
messageConfiguration_baiduMessage :: Lens' MessageConfiguration (Maybe Message)
messageConfiguration_baiduMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MessageConfiguration' {Maybe Message
baiduMessage :: Maybe Message
$sel:baiduMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
baiduMessage} -> Maybe Message
baiduMessage) (\s :: MessageConfiguration
s@MessageConfiguration' {} Maybe Message
a -> MessageConfiguration
s {$sel:baiduMessage:MessageConfiguration' :: Maybe Message
baiduMessage = Maybe Message
a} :: MessageConfiguration)

-- | The message that the campaign sends through a custom channel, as
-- specified by the delivery configuration (CustomDeliveryConfiguration)
-- settings for the campaign. If specified, this message overrides the
-- default message.
messageConfiguration_customMessage :: Lens.Lens' MessageConfiguration (Prelude.Maybe CampaignCustomMessage)
messageConfiguration_customMessage :: Lens' MessageConfiguration (Maybe CampaignCustomMessage)
messageConfiguration_customMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MessageConfiguration' {Maybe CampaignCustomMessage
customMessage :: Maybe CampaignCustomMessage
$sel:customMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignCustomMessage
customMessage} -> Maybe CampaignCustomMessage
customMessage) (\s :: MessageConfiguration
s@MessageConfiguration' {} Maybe CampaignCustomMessage
a -> MessageConfiguration
s {$sel:customMessage:MessageConfiguration' :: Maybe CampaignCustomMessage
customMessage = Maybe CampaignCustomMessage
a} :: MessageConfiguration)

-- | The default message that the campaign sends through all the channels
-- that are configured for the campaign.
messageConfiguration_defaultMessage :: Lens.Lens' MessageConfiguration (Prelude.Maybe Message)
messageConfiguration_defaultMessage :: Lens' MessageConfiguration (Maybe Message)
messageConfiguration_defaultMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MessageConfiguration' {Maybe Message
defaultMessage :: Maybe Message
$sel:defaultMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
defaultMessage} -> Maybe Message
defaultMessage) (\s :: MessageConfiguration
s@MessageConfiguration' {} Maybe Message
a -> MessageConfiguration
s {$sel:defaultMessage:MessageConfiguration' :: Maybe Message
defaultMessage = Maybe Message
a} :: MessageConfiguration)

-- | The message that the campaign sends through the email channel. If
-- specified, this message overrides the default message.
messageConfiguration_emailMessage :: Lens.Lens' MessageConfiguration (Prelude.Maybe CampaignEmailMessage)
messageConfiguration_emailMessage :: Lens' MessageConfiguration (Maybe CampaignEmailMessage)
messageConfiguration_emailMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MessageConfiguration' {Maybe CampaignEmailMessage
emailMessage :: Maybe CampaignEmailMessage
$sel:emailMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignEmailMessage
emailMessage} -> Maybe CampaignEmailMessage
emailMessage) (\s :: MessageConfiguration
s@MessageConfiguration' {} Maybe CampaignEmailMessage
a -> MessageConfiguration
s {$sel:emailMessage:MessageConfiguration' :: Maybe CampaignEmailMessage
emailMessage = Maybe CampaignEmailMessage
a} :: MessageConfiguration)

-- | The message that the campaign sends through the GCM channel, which
-- enables Amazon Pinpoint to send push notifications through the Firebase
-- Cloud Messaging (FCM), formerly Google Cloud Messaging (GCM), service.
-- If specified, this message overrides the default message.
messageConfiguration_gCMMessage :: Lens.Lens' MessageConfiguration (Prelude.Maybe Message)
messageConfiguration_gCMMessage :: Lens' MessageConfiguration (Maybe Message)
messageConfiguration_gCMMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MessageConfiguration' {Maybe Message
gCMMessage :: Maybe Message
$sel:gCMMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
gCMMessage} -> Maybe Message
gCMMessage) (\s :: MessageConfiguration
s@MessageConfiguration' {} Maybe Message
a -> MessageConfiguration
s {$sel:gCMMessage:MessageConfiguration' :: Maybe Message
gCMMessage = Maybe Message
a} :: MessageConfiguration)

-- | The in-app message configuration.
messageConfiguration_inAppMessage :: Lens.Lens' MessageConfiguration (Prelude.Maybe CampaignInAppMessage)
messageConfiguration_inAppMessage :: Lens' MessageConfiguration (Maybe CampaignInAppMessage)
messageConfiguration_inAppMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MessageConfiguration' {Maybe CampaignInAppMessage
inAppMessage :: Maybe CampaignInAppMessage
$sel:inAppMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignInAppMessage
inAppMessage} -> Maybe CampaignInAppMessage
inAppMessage) (\s :: MessageConfiguration
s@MessageConfiguration' {} Maybe CampaignInAppMessage
a -> MessageConfiguration
s {$sel:inAppMessage:MessageConfiguration' :: Maybe CampaignInAppMessage
inAppMessage = Maybe CampaignInAppMessage
a} :: MessageConfiguration)

-- | The message that the campaign sends through the SMS channel. If
-- specified, this message overrides the default message.
messageConfiguration_sMSMessage :: Lens.Lens' MessageConfiguration (Prelude.Maybe CampaignSmsMessage)
messageConfiguration_sMSMessage :: Lens' MessageConfiguration (Maybe CampaignSmsMessage)
messageConfiguration_sMSMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MessageConfiguration' {Maybe CampaignSmsMessage
sMSMessage :: Maybe CampaignSmsMessage
$sel:sMSMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignSmsMessage
sMSMessage} -> Maybe CampaignSmsMessage
sMSMessage) (\s :: MessageConfiguration
s@MessageConfiguration' {} Maybe CampaignSmsMessage
a -> MessageConfiguration
s {$sel:sMSMessage:MessageConfiguration' :: Maybe CampaignSmsMessage
sMSMessage = Maybe CampaignSmsMessage
a} :: MessageConfiguration)

instance Data.FromJSON MessageConfiguration where
  parseJSON :: Value -> Parser MessageConfiguration
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"MessageConfiguration"
      ( \Object
x ->
          Maybe Message
-> Maybe Message
-> Maybe Message
-> Maybe CampaignCustomMessage
-> Maybe Message
-> Maybe CampaignEmailMessage
-> Maybe Message
-> Maybe CampaignInAppMessage
-> Maybe CampaignSmsMessage
-> MessageConfiguration
MessageConfiguration'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ADMMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"APNSMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"BaiduMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CustomMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DefaultMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EmailMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"GCMMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"InAppMessage")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SMSMessage")
      )

instance Prelude.Hashable MessageConfiguration where
  hashWithSalt :: Int -> MessageConfiguration -> Int
hashWithSalt Int
_salt MessageConfiguration' {Maybe CampaignCustomMessage
Maybe CampaignEmailMessage
Maybe Message
Maybe CampaignSmsMessage
Maybe CampaignInAppMessage
sMSMessage :: Maybe CampaignSmsMessage
inAppMessage :: Maybe CampaignInAppMessage
gCMMessage :: Maybe Message
emailMessage :: Maybe CampaignEmailMessage
defaultMessage :: Maybe Message
customMessage :: Maybe CampaignCustomMessage
baiduMessage :: Maybe Message
aPNSMessage :: Maybe Message
aDMMessage :: Maybe Message
$sel:sMSMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignSmsMessage
$sel:inAppMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignInAppMessage
$sel:gCMMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:emailMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignEmailMessage
$sel:defaultMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:customMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignCustomMessage
$sel:baiduMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:aPNSMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:aDMMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Message
aDMMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Message
aPNSMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Message
baiduMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CampaignCustomMessage
customMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Message
defaultMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CampaignEmailMessage
emailMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Message
gCMMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CampaignInAppMessage
inAppMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CampaignSmsMessage
sMSMessage

instance Prelude.NFData MessageConfiguration where
  rnf :: MessageConfiguration -> ()
rnf MessageConfiguration' {Maybe CampaignCustomMessage
Maybe CampaignEmailMessage
Maybe Message
Maybe CampaignSmsMessage
Maybe CampaignInAppMessage
sMSMessage :: Maybe CampaignSmsMessage
inAppMessage :: Maybe CampaignInAppMessage
gCMMessage :: Maybe Message
emailMessage :: Maybe CampaignEmailMessage
defaultMessage :: Maybe Message
customMessage :: Maybe CampaignCustomMessage
baiduMessage :: Maybe Message
aPNSMessage :: Maybe Message
aDMMessage :: Maybe Message
$sel:sMSMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignSmsMessage
$sel:inAppMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignInAppMessage
$sel:gCMMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:emailMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignEmailMessage
$sel:defaultMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:customMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignCustomMessage
$sel:baiduMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:aPNSMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:aDMMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Message
aDMMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Message
aPNSMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Message
baiduMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CampaignCustomMessage
customMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Message
defaultMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CampaignEmailMessage
emailMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Message
gCMMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CampaignInAppMessage
inAppMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe CampaignSmsMessage
sMSMessage

instance Data.ToJSON MessageConfiguration where
  toJSON :: MessageConfiguration -> Value
toJSON MessageConfiguration' {Maybe CampaignCustomMessage
Maybe CampaignEmailMessage
Maybe Message
Maybe CampaignSmsMessage
Maybe CampaignInAppMessage
sMSMessage :: Maybe CampaignSmsMessage
inAppMessage :: Maybe CampaignInAppMessage
gCMMessage :: Maybe Message
emailMessage :: Maybe CampaignEmailMessage
defaultMessage :: Maybe Message
customMessage :: Maybe CampaignCustomMessage
baiduMessage :: Maybe Message
aPNSMessage :: Maybe Message
aDMMessage :: Maybe Message
$sel:sMSMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignSmsMessage
$sel:inAppMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignInAppMessage
$sel:gCMMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:emailMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignEmailMessage
$sel:defaultMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:customMessage:MessageConfiguration' :: MessageConfiguration -> Maybe CampaignCustomMessage
$sel:baiduMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:aPNSMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
$sel:aDMMessage:MessageConfiguration' :: MessageConfiguration -> Maybe Message
..} =
    [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 Message
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 Message
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 Message
baiduMessage,
            (Key
"CustomMessage" 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 CampaignCustomMessage
customMessage,
            (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 Message
defaultMessage,
            (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 CampaignEmailMessage
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 Message
gCMMessage,
            (Key
"InAppMessage" 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 CampaignInAppMessage
inAppMessage,
            (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 CampaignSmsMessage
sMSMessage
          ]
      )