module Network.Slack
(
Slack(..),
runSlack,
module Network.Slack.User,
module Network.Slack.Channel,
module Network.Slack.Message
)
where
import Network.Slack.Types
import Network.Slack.User
import Network.Slack.Channel
import Network.Slack.Message
import Control.Monad.State (evalStateT, modify)
import Control.Monad.Trans.Either (runEitherT)
runSlack :: Token -> Slack a -> IO (Either SlackError a)
runSlack tok = flip evalStateT (slackAuth tok) . runEitherT . runSlackInternal . (slackInit >>)
slackAuth :: Token -> SlackState
slackAuth tok = SlackState tok []
slackInit :: Slack ()
slackInit = do
currentUsers <- request' "users.list" :: Slack [User]
let
updateUsers state = state {_users = currentUsers}
modify updateUsers