module Web.Slack.Message (sendMessage, makePingPacket, ping) where
import Control.Applicative
import Control.Lens
import Control.Monad.State
import Data.Aeson (encode)
import qualified Data.Text as T
import qualified Network.WebSockets as WS
import Web.Slack.State
import Web.Slack.Types
import Data.Time.Clock.POSIX
import Prelude
sendMessage :: ChannelId -> T.Text -> Slack s ()
sendMessage cid message = do
conn <- use connection
uid <- counter
let payload = MessagePayload uid "message" cid message
slackLog payload
liftIO $ WS.sendTextData conn (encode payload)
makePingPacket :: Slack s (IO ())
makePingPacket = do
conn <- use connection
uid <- counter
now <- round <$> liftIO getPOSIXTime
let payload = PingPayload uid "ping" now
return (ping conn payload)
ping :: WS.Connection -> PingPayload -> IO ()
ping conn payload =
WS.sendTextData conn (encode payload)