dbus-th-0.1.2.0: Test.hs
{-# LANGUAGE TemplateHaskell, TypeOperators, OverloadedStrings #-}
import Control.Monad
import qualified Data.Map as M
import DBus.TH
import System.Environment
type Ints = [Int32]
type Buddies = M.Map String Int32
interface' "im.pidgin.purple.PurpleService" Nothing "im.pidgin.purple.PurpleInterface" (Just "Purple")
[ "Strreplace" =:: ''String :-> ''String :-> ''String :-> Return ''String `as` "replace"
, "AccountsFind" =:: ''String :-> ''String :-> Return ''Int32
, "AccountsGetAllActive" =:: Return ''Ints
, "FindBuddy" =:: ''Int32 :-> ''String :-> Return ''Int32
, "BuddyGetGroup" =:: ''Int32 :-> Return ''Int32
, "GroupGetName" =:: ''Int32 :-> Return ''String
, "BlistGetBuddies" =:: Return ''Ints
, "BuddyGetAlias" =:: ''Int32 :-> Return ''String ]
main = do
[account, buddy] <- getArgs
let obj = "/im/pidgin/purple/PurpleObject"
dbus <- connectSession
Just res <- replace dbus obj "ab12cc 12 ee" "12" "ZZ"
putStrLn res
Just acc <- accountsFind dbus obj account "prpl-jabber"
print acc
Just buddiesL <- blistGetBuddies dbus obj
buddies <- forM buddiesL $ \buddy -> do
Just name <- buddyGetAlias dbus obj buddy
return (name, buddy)
let buddiesMap = M.fromList buddies
let Just juick = M.lookup buddy buddiesMap
Just grp <- buddyGetGroup dbus obj juick
Just grpName <- groupGetName dbus obj grp
putStrLn $ buddy ++ "'s group: " ++ grpName