haskell-xmpp-1.0: src/Network/XMPP/IM/Presence.hs
-----------------------------------------------------------------------------
-- |
-- Module : Network.XMPP.IM.Presence
-- Copyright : (c) pierre, 2007
-- License : BSD-style (see the file libraries/base/LICENSE)
--
-- Maintainer : k.pierre.k@gmail.com
-- Stability : experimental
-- Portability : portable
--
-- XMPP presence utilities
--
-----------------------------------------------------------------------------
module Network.XMPP.IM.Presence
(
presAvailable
, presUnavailable
, presAway
, presXa
, presChat
, presDND
) where
import Network.XMPP.Types
-- | Default presence, should be sent at first
presAvailable :: String -- ^ Status message
-> Stanza
presAvailable status = Presence Nothing Nothing "" Default Available status (Just 0) []
-- | Should be sent at last
presUnavailable :: String -> Stanza
presUnavailable status = mkPresenceU Available status
presAway :: String -> Stanza
presAway status = mkPresenceD Away status
presXa :: String -> Stanza
presXa status = mkPresenceD XAway status
presChat :: String -> Stanza
presChat status = mkPresenceD FreeChat status
presDND :: String -> Stanza
presDND status = mkPresenceD DND status
-- | Helper to contruct presence Stanza with required attrs
mkPresence :: PresenceType -> ShowType -> String -> Stanza
mkPresence typ showType status =
Presence Nothing -- pFrom
Nothing -- PTo
"" -- pId
typ
showType
status
(Just 0) -- pPriority :: Maybe Integer
[] -- pExt :: [Content Posn]
mkPresenceD = mkPresence Default
mkPresenceU = mkPresence Unavailable