antiope-sns-5.0.0: src/Antiope/SNS.hs
module Antiope.SNS
( publishMessage
, subscribeTopic
, module Antiope.SNS.Types
, module Network.AWS.SNS
) where
import Antiope.SNS.Types
import Control.Lens
import Data.Text (Text)
import Network.AWS (MonadAWS)
import Network.AWS.SNS
import qualified Network.AWS as AWS
publishMessage :: MonadAWS m
=> Topic
-> Text
-> m (Maybe MessageId)
publishMessage topicArn message = do
resp <- AWS.send $ publish message & pTopicARN <>~ (topicArn ^. tTopicARN)
return $ MessageId <$> resp ^. prsMessageId
subscribeTopic :: MonadAWS m
=> Topic
-> Protocol
-> Endpoint
-> m (Maybe SubscriptionArn)
subscribeTopic topicArn (Protocol p) ep = case topicArn ^. tTopicARN of
Just t -> do
resp <- AWS.send $ subscribe t p & subEndpoint <>~ (ep ^. eEndpointARN)
return $ SubscriptionArn <$> resp ^. srsSubscriptionARN
Nothing -> return Nothing