Browse Source

Merge branch 'master' of github.com:pontarius/pontarius-xmpp

master
Jon Kristensen 13 years ago
parent
commit
b891ea321b
  1. 9
      source/Network/Xmpp/IM/Message.hs
  2. 13
      source/Network/Xmpp/IM/Presence.hs
  3. 12
      source/Network/Xmpp/Marshal.hs

9
source/Network/Xmpp/IM/Message.hs

@ -3,14 +3,14 @@ @@ -3,14 +3,14 @@
module Network.Xmpp.IM.Message where
import Data.Default
import Data.Function
import Data.List
import Data.Text (Text)
import Data.XML.Pickle
import Data.XML.Types
import Network.Xmpp.Marshal
import Network.Xmpp.Types
import Data.List
import Data.Function
data MessageBody = MessageBody { bodyLang :: Maybe LangTag
, bodyContent :: Text
@ -36,6 +36,9 @@ instantMessage = InstantMessage { imThread = Nothing @@ -36,6 +36,9 @@ instantMessage = InstantMessage { imThread = Nothing
, imBody = []
}
instance Default InstantMessage where
def = instantMessage
-- | Get the IM specific parts of a message. Returns 'Nothing' when the received
-- payload is not valid IM data.
getIM :: Message -> Maybe InstantMessage

13
source/Network/Xmpp/IM/Presence.hs

@ -4,10 +4,11 @@ @@ -4,10 +4,11 @@
module Network.Xmpp.IM.Presence where
import Data.Text (Text)
import Data.XML.Pickle
import Data.XML.Types
import Network.Xmpp.Types
import Data.Default
import Data.Text (Text)
import Data.XML.Pickle
import Data.XML.Types
import Network.Xmpp.Types
data ShowStatus = StatusAway
| StatusChat
@ -38,7 +39,11 @@ imPresence = IMP { showStatus = Nothing @@ -38,7 +39,11 @@ imPresence = IMP { showStatus = Nothing
, priority = Nothing
}
instance Default IMPresence where
def = imPresence
-- | Try to extract RFC6121 IM presence information from presence stanza
-- Returns Nothing when the data is malformed, (Just IMPresence) otherwise
getIMPresence :: Presence -> Maybe IMPresence
getIMPresence pres = case unpickle xpIMPresence (presencePayload pres) of
Left _ -> Nothing

12
source/Network/Xmpp/Marshal.hs

@ -23,10 +23,10 @@ xpStanza = ("xpStanza" , "") <?+> xpAlt stanzaSel @@ -23,10 +23,10 @@ xpStanza = ("xpStanza" , "") <?+> xpAlt stanzaSel
[ xpWrap IQRequestS (\(IQRequestS x) -> x) xpIQRequest
, xpWrap IQResultS (\(IQResultS x) -> x) xpIQResult
, xpWrap IQErrorS (\(IQErrorS x) -> x) xpIQError
, xpWrap MessageS (\(MessageS x) -> x) xpMessage
, xpWrap MessageErrorS (\(MessageErrorS x) -> x) xpMessageError
, xpWrap PresenceS (\(PresenceS x) -> x) xpPresence
, xpWrap MessageS (\(MessageS x) -> x) xpMessage
, xpWrap PresenceErrorS (\(PresenceErrorS x) -> x) xpPresenceError
, xpWrap PresenceS (\(PresenceS x) -> x) xpPresence
]
where
-- Selector for which pickler to execute above.
@ -34,10 +34,10 @@ xpStanza = ("xpStanza" , "") <?+> xpAlt stanzaSel @@ -34,10 +34,10 @@ xpStanza = ("xpStanza" , "") <?+> xpAlt stanzaSel
stanzaSel (IQRequestS _) = 0
stanzaSel (IQResultS _) = 1
stanzaSel (IQErrorS _) = 2
stanzaSel (MessageS _) = 3
stanzaSel (MessageErrorS _) = 4
stanzaSel (PresenceS _) = 5
stanzaSel (PresenceErrorS _) = 6
stanzaSel (MessageErrorS _) = 3
stanzaSel (MessageS _) = 4
stanzaSel (PresenceErrorS _) = 5
stanzaSel (PresenceS _) = 6
xpMessage :: PU [Node] (Message)
xpMessage = ("xpMessage" , "") <?+> xpWrap

Loading…
Cancel
Save