module Web.DDP.Deadpan.Callbacks where
import Web.DDP.Deadpan.DSL
import Control.Monad.State
import Control.Monad.IfElse (awhen)
import Control.Lens
pingCallback :: Callback
pingCallback ejv = do
let mpid = ejv ^? _EJObject "id"
case mpid of Just pid -> sendMessage "pong" $ ejobject [("id", pid)]
Nothing -> sendMessage "pong" $ ejobject []
clientDataSub :: Text -> Text -> Maybe [ EJsonValue ] -> DeadpanApp ()
clientDataSub subid name Nothing
= sendMessage "sub" $ ejobject [("name", ejstring name)
,("id", ejstring subid)]
clientDataSub subid name (Just params)
= sendMessage "sub" $ ejobject [("name", ejstring name)
,("params", ejarray params)
,("id", ejstring subid)]
subscribe :: Text -> Text -> Maybe [ EJsonValue ] -> DeadpanApp ()
subscribe = clientDataSub
clientDataUnsub :: Text -> DeadpanApp ()
clientDataUnsub subid = sendMessage "unsub" $ ejobject [("id", ejstring subid)]
unsubscribe :: Text -> DeadpanApp ()
unsubscribe = clientDataUnsub
clientRPCMethod :: Text -> Maybe [EJsonValue] -> Text -> Maybe Text -> DeadpanApp ()
clientRPCMethod method params rpcid seed = do
let msg = [("method", ejstring method), ("id", ejstring rpcid)]
&~ do awhen params $ \v -> modify (("params", ejarray v) :)
awhen seed $ \v -> modify (("seed", ejstring v) :)
sendMessage "method" (ejobject msg)
serverDataNosub :: Callback
serverDataNosub = undefined
serverDataAdded :: Callback
serverDataAdded = undefined
serverDataChanged :: Callback
serverDataChanged = undefined
serverDataRemoved :: Callback
serverDataRemoved = undefined
serverDataReady :: Callback
serverDataReady = undefined
serverDataAddedBefore :: Callback
serverDataAddedBefore = undefined
serverDataMovedBefore :: Callback
serverDataMovedBefore = undefined
serverRPCResult :: Callback
serverRPCResult = undefined
serverRPCUpdated :: Callback
serverRPCUpdated = undefined
serverError :: Callback
serverError = undefined