skype4hs-0.0.0.0: src/Network/Skype/Command/ChatMember.hs
module Network.Skype.Command.ChatMember where
import Control.Monad.Trans
import Control.Monad.Trans.Control
import Data.Monoid ((<>))
import Network.Skype.Command.Utils
import Network.Skype.Core
import Network.Skype.Protocol
import qualified Data.ByteString.Char8 as BC
getAllMembers :: (MonadBaseControl IO m, MonadIO m, MonadSkype m)
=> ChatID
-> SkypeT m [ChatMemberID]
getAllMembers chatID = executeCommandWithID command $ \response ->
case response of
Chat _ (ChatMemberObjects chatMemberIDs) -> return $ Just chatMemberIDs
_ -> return Nothing
where
command = "GET CHAT " <> chatID <> " MEMBEROBJECTS"
getUserID :: (MonadBaseControl IO m, MonadIO m, MonadSkype m)
=> ChatMemberID
-> SkypeT m UserID
getUserID chatMemberID = executeCommandWithID command $ \response ->
case response of
ChatMember _ (ChatMemberIdentity userID) -> return $ Just userID
_ -> return Nothing
where
command = "GET CHATMEMBER " <> (BC.pack $ show chatMemberID) <> " IDENTITY"
getChatID :: (MonadBaseControl IO m, MonadIO m, MonadSkype m)
=> ChatMemberID
-> SkypeT m ChatID
getChatID chatMemberID = executeCommandWithID command $ \response ->
case response of
ChatMember _ (ChatMemberChatName chatID) -> return $ Just chatID
_ -> return Nothing
where
command = "GET CHATMEMBER " <> (BC.pack $ show chatMemberID) <> " CHATNAME"
getRole :: (MonadBaseControl IO m, MonadIO m, MonadSkype m)
=> ChatMemberID
-> SkypeT m ChatRole
getRole chatMemberID = executeCommandWithID command $ \response ->
case response of
ChatMember _ (ChatMemberRole role) -> return $ Just role
_ -> return Nothing
where
command = "GET CHATMEMBER " <> (BC.pack $ show chatMemberID) <> " ROLE"
isActive :: (MonadBaseControl IO m, MonadIO m, MonadSkype m)
=> ChatMemberID
-> SkypeT m Bool
isActive chatMemberID = executeCommandWithID command $ \response ->
case response of
ChatMember _ (ChatMemberIsActive active) -> return $ Just active
_ -> return Nothing
where
command = "GET CHATMEMBER " <> (BC.pack $ show chatMemberID) <> " IS_ACTIVE"