pontarius-xmpp-0.0.5.0: Network/XMPP/Extensions/XEP0030.hs
{-# LANGUAGE MultiParamTypeClasses #-}
module Network.XMPP.Extensions.XEP0030 (
Feature (..),
Identity (..),
ServiceDiscoveryEntity (..),
serviceDiscoveryHandler,
serviceDiscoveryQuery
) where
import Network.XMPP.Session
import Network.XMPP.Types
import Control.Monad.State (StateT)
import Control.Monad.IO.Class (liftIO, MonadIO)
data Feature = Feature { featureVar :: XMLString }
data Identity = Identity { identityCategory :: XMLString
, identityName :: Maybe XMLString
, identityType :: XMLString }
class (ClientState s m, MonadIO m) => ServiceDiscoveryEntity s m where
getFeatures :: JID -> StateT s m [Feature]
getIdentities :: JID -> StateT s m [Identity]
serviceDiscoveryHandler :: (ClientState s m, MonadIO m,
ServiceDiscoveryEntity s m) => ClientHandler s m
serviceDiscoveryHandler = serviceDiscoveryHandler
serviceDiscoveryQuery :: (ClientState s m, MonadIO m) => Session s m -> JID ->
StateT s m ([Feature], [Identity]) -> Maybe (Timeout, StateT s m ()) ->
Maybe (Either StreamError IQ) -> StateT s m ()
serviceDiscoveryQuery = serviceDiscoveryQuery