aws-0.8.0: Aws/Ses/Commands/SetIdentityNotificationTopic.hs
module Aws.Ses.Commands.SetIdentityNotificationTopic
( SetIdentityNotificationTopic(..)
, SetIdentityNotificationTopicResponse(..)
, NotificationType(..)
) where
import Data.Text (Text)
import Control.Applicative ((<$>))
import Data.Maybe (maybeToList)
import Data.Text.Encoding as T (encodeUtf8)
import Data.Typeable
import Aws.Core
import Aws.Ses.Core
data NotificationType = Bounce | Complaint
deriving (Eq, Ord, Show, Typeable)
-- | Change or remove the Amazon SNS notification topic to which notification
-- of the given type are published.
data SetIdentityNotificationTopic =
SetIdentityNotificationTopic
{ sntIdentity :: Text
-- ^ The identity for which the SNS topic will be changed.
, sntNotificationType :: NotificationType
-- ^ The type of notifications that will be published to the topic.
, sntSnsTopic :: Maybe Text
-- ^ @Just@ the ARN of the SNS topic or @Nothing@ to unset the topic.
}
deriving (Eq, Ord, Show, Typeable)
-- | ServiceConfiguration: 'SesConfiguration'
instance SignQuery SetIdentityNotificationTopic where
type ServiceConfiguration SetIdentityNotificationTopic = SesConfiguration
signQuery SetIdentityNotificationTopic{..} =
let notificationType = case sntNotificationType of
Bounce -> "Bounce"
Complaint -> "Complaint"
snsTopic = ("SnsTopic",) . T.encodeUtf8 <$> sntSnsTopic
in sesSignQuery $ [ ("Action", "SetIdentityNotificationTopic")
, ("Identity", T.encodeUtf8 sntIdentity)
, ("NotificationType", notificationType)
] ++ maybeToList snsTopic
-- | The response sent back by SES after the 'SetIdentityNotificationTopic'
-- command.
data SetIdentityNotificationTopicResponse = SetIdentityNotificationTopicResponse
deriving (Eq, Ord, Show, Typeable)
instance ResponseConsumer SetIdentityNotificationTopic SetIdentityNotificationTopicResponse where
type ResponseMetadata SetIdentityNotificationTopicResponse = SesMetadata
responseConsumer _ = sesResponseConsumer $ \_ -> return SetIdentityNotificationTopicResponse
instance Transaction SetIdentityNotificationTopic SetIdentityNotificationTopicResponse
instance AsMemoryResponse SetIdentityNotificationTopicResponse where
type MemoryResponse SetIdentityNotificationTopicResponse = SetIdentityNotificationTopicResponse
loadToMemory = return