module Main where import Control.Monad.Pusher (PusherT, runPusherT) import qualified Data.HashSet as HS import qualified Data.Pusher as P import qualified Data.Yaml as Y import qualified Network.Pusher as P import qualified Network.Pusher.Protocol as P main :: IO () main = do eitherCred <- Y.decodeFileEither "example/credentials.yaml" case eitherCred of Right cred -> do pusher <- P.getPusher cred result <- runPusherT pusherApp pusher case result of Right (channels, channel, users) -> do print $ "Channels info: " ++ show channels print $ "Channel info: " ++ show channel print $ "Userss info: " ++ show users Left e -> print e Left e -> print e pusherApp :: PusherT IO (P.ChannelsInfo, P.FullChannelInfo, P.Users) pusherApp = do let chan = P.Channel P.Presence "messages" P.trigger [chan] "some_event" "data" Nothing channels <- P.channels (Just P.Presence) "" (P.ChannelsInfoQuery (HS.singleton P.ChannelsUserCount)) channel <- P.channel chan (P.ChannelInfoQuery (HS.fromList [P.ChannelUserCount, P.ChannelSubscriptionCount])) users <- P.users chan return (channels, channel, users)