-- |This library aims to make writing XMPP clients (in particular -- bots) easy and fun. Here is a small example: -- -- > import Network -- > import Network.XMPP -- > -- > -- The bot's JID is "bot@example.com" -- > botUsername = "bot" -- > botServer = "example.com" -- > botPassword = "secret" -- > botResource = "bot" -- > -- > main :: IO () -- > main = withSocketsDo $ -- > do -- > -- Connect to server... -- > c <- openStream botServer -- > getStreamStart c -- > -- > runXMPP c $ do -- > -- ...authenticate... -- > startAuth botUsername botServer botPassword botResource -- > sendpresence -- > -- ...and do something. -- > run -- > -- > run :: XMPP () -- > run = do -- > -- Wait for an incoming message... -- > msg <- waitForStanza (isChat `conj` hasBody) -- > let sender = maybe "" id (getAttr "from" msg) -- > len = length $ maybe "" id (getMessageBody msg) -- > -- ...answer... -- > sendMessage sender ("Your message was "++(show len)++" characters long.") -- > -- ...and repeat. -- > run -- -- XMPP is a protocol for streaming XML also known as Jabber. It is -- described in RFCs 3920 and 3921, and in a series of XMPP Extension -- Protocols (XEPs). All of this can be found at -- . module Network.XMPP ( -- * The XMPP monad module Network.XMPP.XMPPMonad -- * XML functions , XMLElem(..) , xmlPath , xmlPath' , getAttr , getCdata , xmlToString -- * Stanza manipulation , module Network.XMPP.Stanzas -- * JID functions , module Network.XMPP.JID -- * Authentication , module Network.XMPP.Auth -- * TCP connections , module Network.XMPP.TCPConnection -- * Abstract connections , module Network.XMPP.XMPPConnection ) where import Network.XMPP.Auth import Network.XMPP.JID import Network.XMPP.Stanzas import Network.XMPP.TCPConnection import Network.XMPP.XMLParse import Network.XMPP.XMPPConnection hiding ( sendStanza ) import Network.XMPP.XMPPMonad