From fdac2544006a5c27a10f90041b4ba429ed0a51c1 Mon Sep 17 00:00:00 2001
From: Philipp Balzarek
Date: Wed, 9 May 2012 17:12:28 +0200
Subject: [PATCH] add simpleIM add answerIM
---
src/Network/XMPP/IM/Message.hs | 45 ++++++++++++++++++++++++++++------
1 file changed, 38 insertions(+), 7 deletions(-)
diff --git a/src/Network/XMPP/IM/Message.hs b/src/Network/XMPP/IM/Message.hs
index 08810d4..fbf3819 100644
--- a/src/Network/XMPP/IM/Message.hs
+++ b/src/Network/XMPP/IM/Message.hs
@@ -2,6 +2,9 @@
module Network.XMPP.IM.Message
where
+import Control.Applicative ((<$>))
+
+import Data.Maybe (maybeToList)
import Data.Text (Text)
import Data.XML.Pickle
import Data.XML.Types
@@ -64,18 +67,46 @@ newIM
-> Maybe StanzaId
-> Maybe LangTag
-> MessageType
- -> MessageSubject
- -> MessageThread
- -> MessageBody
+ -> Maybe MessageSubject
+ -> Maybe MessageThread
+ -> Maybe MessageBody
+ -> [Element]
-> Message
-newIM t i lang tp sbj thrd bdy = Message
+newIM t i lang tp sbj thrd bdy payload = Message
{ messageID = i
, messageFrom = Nothing
, messageTo = Just t
, messageLangTag = lang
, messageType = tp
- , messagePayload = pickle xpMessageSubject sbj
- ++ pickle xpMessageThread thrd
- ++ pickle xpMessageBody bdy
+ , messagePayload = concat $
+ maybeToList (pickle xpMessageSubject <$> sbj)
+ ++ maybeToList (pickle xpMessageThread <$> thrd)
+ ++ maybeToList (pickle xpMessageBody <$> bdy)
+ ++ [payload]
}
+
+simpleIM :: JID -> Text -> Message
+simpleIM t bd = newIM
+ t
+ Nothing
+ Nothing
+ Normal
+ Nothing
+ Nothing
+ (Just $ MessageBody Nothing bd)
+ []
+
+answerIM :: Maybe MessageBody -> [Element] -> Message -> Message
+answerIM bd payload msg = Message
+ { messageID = messageID msg
+ , messageFrom = Nothing
+ , messageTo = messageFrom msg
+ , messageLangTag = messageLangTag msg
+ , messageType = messageType msg
+ , messagePayload = concat $
+ (pickle xpMessageSubject <$> subject msg)
+ ++ maybeToList (pickle xpMessageThread <$> thread msg)
+ ++ maybeToList (pickle xpMessageBody <$> bd)
+ ++ [payload]
+ }