diff --git a/src/Network/XMPP/Message.hs b/src/Network/XMPP/Message.hs index fd13506..61741fc 100644 --- a/src/Network/XMPP/Message.hs +++ b/src/Network/XMPP/Message.hs @@ -1,20 +1,19 @@ {-# LANGUAGE RecordWildCards #-} --- | Message handling + module Network.XMPP.Message - ( Message(..) - , MessageType(..) - , MessageError(..) - , message - , answerMessage - ) - where + ( Message(..) + , MessageError(..) + , MessageType(..) + , answerMessage + , message + ) where -import Data.Text(Text) +import Data.Text (Text) import Data.XML.Types import Network.XMPP.Types --- The empty message +-- | An empty message. message :: Message message = Message { messageID = Nothing , messageFrom = Nothing @@ -24,22 +23,14 @@ message = Message { messageID = Nothing , messagePayload = [] } - ----- | Create simple message, containing nothing but a body text ---simpleMessage :: JID -- ^ Recipient --- -> Text -- ^ Myssage body --- -> Message ---simpleMessage to txt = message { messageTo = Just to --- , messageBody = Just txt --- } - -answerMessage :: Message -> Text -> [Element] -> Maybe Message -answerMessage Message{messageFrom = Just frm, ..} txt payload = - Just $ Message{ messageFrom = messageTo - , messageID = Nothing - , messageTo = Just frm - , messagePayload = payload - , .. - } -answerMessage _ _ _ = Nothing - +-- Produce an answer message with the given payload, switching the "from" and +-- "to" attributes in the original message. +answerMessage :: Message -> [Element] -> Maybe Message +answerMessage Message{messageFrom = Just frm, ..} payload = + Just Message{ messageFrom = messageTo + , messageID = Nothing + , messageTo = Just frm + , messagePayload = payload + , .. + } +answerMessage _ _ = Nothing \ No newline at end of file diff --git a/src/Network/XMPP/Presence.hs b/src/Network/XMPP/Presence.hs index f2a447f..e0295d3 100644 --- a/src/Network/XMPP/Presence.hs +++ b/src/Network/XMPP/Presence.hs @@ -1,10 +1,11 @@ {-# OPTIONS_HADDOCK hide #-} + module Network.XMPP.Presence where import Data.Text(Text) import Network.XMPP.Types --- | The empty presence. +-- | An empty presence. presence :: Presence presence = Presence { presenceID = Nothing , presenceFrom = Nothing @@ -14,41 +15,42 @@ presence = Presence { presenceID = Nothing , presencePayload = [] } --- | Request subscription with an entity +-- | Request subscription with an entity. presenceSubscribe :: JID -> Presence presenceSubscribe to = presence { presenceTo = Just to , presenceType = Just Subscribe } --- | Is presence a subscription request +-- | Is presence a subscription request? isPresenceSubscribe :: Presence -> Bool isPresenceSubscribe pres = presenceType pres == (Just Subscribe) --- | Approve a subscripton of an entity +-- | Approve a subscripton of an entity. presenceSubscribed :: JID -> Presence presenceSubscribed to = presence { presenceTo = Just to , presenceType = Just Subscribed } --- | Is presence a subscription approval +-- | Is presence a subscription approval? isPresenceSubscribed :: Presence -> Bool isPresenceSubscribed pres = presenceType pres == (Just Subscribed) --- | End a subscription with an entity +-- | End a subscription with an entity. presenceUnsubscribe :: JID -> Presence presenceUnsubscribe to = presence { presenceTo = Just to , presenceType = Just Unsubscribed } --- | Is presence an unsubscription request +-- | Is presence an unsubscription request? isPresenceUnsubscribe :: Presence -> Bool isPresenceUnsubscribe pres = presenceType pres == (Just Unsubscribe) --- | Signal to the server that the client is available for communication +-- | Signal to the server that the client is available for communication. presenceOnline :: Presence presenceOnline = presence --- | Signal to the server that the client is no longer available for communication. +-- | Signal to the server that the client is no longer available for +-- communication. presenceOffline :: Presence presenceOffline = presence {presenceType = Just Unavailable} @@ -63,16 +65,16 @@ presenceOffline = presence {presenceType = Just Unavailable} -- , presenceStatus = txt -- } --- | Set the current availability status. This implicitly sets the clients --- status online +-- | Set the current availability status. This implicitly sets the client's +-- status online. --presenceAvail :: ShowType -> Presence --presenceAvail showType = status Nothing (Just showType) Nothing --- | Set the current status message. This implicitly sets the clients --- status online +-- | Set the current status message. This implicitly sets the client's status +-- online. --presenceMessage :: Text -> Presence --presenceMessage txt = status (Just txt) Nothing Nothing --- | Add a recipient to a presence notification +-- | Add a recipient to a presence notification. presTo :: Presence -> JID -> Presence presTo pres to = pres{presenceTo = Just to} \ No newline at end of file