{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.SQS.SendMessage
(
sendMessage
, SendMessage
, smMessageAttributes
, smDelaySeconds
, smQueueURL
, smMessageBody
, sendMessageResponse
, SendMessageResponse
, smrsMessageId
, smrsMD5OfMessageBody
, smrsMD5OfMessageAttributes
, smrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.SQS.Types
import Network.AWS.SQS.Types.Product
data SendMessage = SendMessage'
{ _smMessageAttributes :: !(Maybe (Map Text MessageAttributeValue))
, _smDelaySeconds :: !(Maybe Int)
, _smQueueURL :: !Text
, _smMessageBody :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
sendMessage
:: Text
-> Text
-> SendMessage
sendMessage pQueueURL_ pMessageBody_ =
SendMessage'
{ _smMessageAttributes = Nothing
, _smDelaySeconds = Nothing
, _smQueueURL = pQueueURL_
, _smMessageBody = pMessageBody_
}
smMessageAttributes :: Lens' SendMessage (HashMap Text MessageAttributeValue)
smMessageAttributes = lens _smMessageAttributes (\ s a -> s{_smMessageAttributes = a}) . _Default . _Map;
smDelaySeconds :: Lens' SendMessage (Maybe Int)
smDelaySeconds = lens _smDelaySeconds (\ s a -> s{_smDelaySeconds = a});
smQueueURL :: Lens' SendMessage Text
smQueueURL = lens _smQueueURL (\ s a -> s{_smQueueURL = a});
smMessageBody :: Lens' SendMessage Text
smMessageBody = lens _smMessageBody (\ s a -> s{_smMessageBody = a});
instance AWSRequest SendMessage where
type Rs SendMessage = SendMessageResponse
request = postQuery sqs
response
= receiveXMLWrapper "SendMessageResult"
(\ s h x ->
SendMessageResponse' <$>
(x .@? "MessageId") <*> (x .@? "MD5OfMessageBody")
<*> (x .@? "MD5OfMessageAttributes")
<*> (pure (fromEnum s)))
instance Hashable SendMessage
instance NFData SendMessage
instance ToHeaders SendMessage where
toHeaders = const mempty
instance ToPath SendMessage where
toPath = const "/"
instance ToQuery SendMessage where
toQuery SendMessage'{..}
= mconcat
["Action" =: ("SendMessage" :: ByteString),
"Version" =: ("2012-11-05" :: ByteString),
toQuery
(toQueryMap "MessageAttribute" "Name" "Value" <$>
_smMessageAttributes),
"DelaySeconds" =: _smDelaySeconds,
"QueueUrl" =: _smQueueURL,
"MessageBody" =: _smMessageBody]
data SendMessageResponse = SendMessageResponse'
{ _smrsMessageId :: !(Maybe Text)
, _smrsMD5OfMessageBody :: !(Maybe Text)
, _smrsMD5OfMessageAttributes :: !(Maybe Text)
, _smrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
sendMessageResponse
:: Int
-> SendMessageResponse
sendMessageResponse pResponseStatus_ =
SendMessageResponse'
{ _smrsMessageId = Nothing
, _smrsMD5OfMessageBody = Nothing
, _smrsMD5OfMessageAttributes = Nothing
, _smrsResponseStatus = pResponseStatus_
}
smrsMessageId :: Lens' SendMessageResponse (Maybe Text)
smrsMessageId = lens _smrsMessageId (\ s a -> s{_smrsMessageId = a});
smrsMD5OfMessageBody :: Lens' SendMessageResponse (Maybe Text)
smrsMD5OfMessageBody = lens _smrsMD5OfMessageBody (\ s a -> s{_smrsMD5OfMessageBody = a});
smrsMD5OfMessageAttributes :: Lens' SendMessageResponse (Maybe Text)
smrsMD5OfMessageAttributes = lens _smrsMD5OfMessageAttributes (\ s a -> s{_smrsMD5OfMessageAttributes = a});
smrsResponseStatus :: Lens' SendMessageResponse Int
smrsResponseStatus = lens _smrsResponseStatus (\ s a -> s{_smrsResponseStatus = a});
instance NFData SendMessageResponse