Deadpan-DDP 0.9.0.0 → 0.9.1.0
raw patch · 2 files changed
+14/−9 lines, 2 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Web.DDP.Deadpan.Callbacks: subscribeWaitId :: Text -> [EJsonValue] -> DeadpanApp (Either EJsonValue (GUID, EJsonValue))
- Web.DDP.Deadpan.Callbacks: clientDataSub :: GUID -> Text -> [EJsonValue] -> DeadpanApp ()
+ Web.DDP.Deadpan.Callbacks: clientDataSub :: GUID -> Text -> [EJsonValue] -> DeadpanApp GUID
- Web.DDP.Deadpan.Callbacks: subscribe :: Text -> [EJsonValue] -> DeadpanApp ()
+ Web.DDP.Deadpan.Callbacks: subscribe :: Text -> [EJsonValue] -> DeadpanApp GUID
Files
- Deadpan-DDP.cabal +1/−1
- src/Web/DDP/Deadpan/Callbacks.hs +13/−8
Deadpan-DDP.cabal view
@@ -1,5 +1,5 @@ name: Deadpan-DDP-version: 0.9.0.0+version: 0.9.1.0 synopsis: Write clients for Meteor's DDP Protocol description: The Deadpan-DDP project includes a debugging-tool, as well as a general purpose library. .
src/Web/DDP/Deadpan/Callbacks.hs view
@@ -48,23 +48,24 @@ @ -}-clientDataSub :: GUID -> Text -> [ EJsonValue ] -> DeadpanApp ()-clientDataSub subid name params- = sendMessage "sub" $ makeEJsonId subid+clientDataSub :: GUID -> Text -> [ EJsonValue ] -> DeadpanApp GUID+clientDataSub subid name params = do+ sendMessage "sub" $ makeEJsonId subid <> ejobject [ ("name", ejstring name) , ("params", ejarray params) ]+ return subid -- | Activates a subscription with an auto-generated ID, returning the ID. ---subscribe :: Text -> [ EJsonValue ] -> DeadpanApp ()+subscribe :: Text -> [ EJsonValue ] -> DeadpanApp GUID subscribe name params = newID >>= \guid -> clientDataSub guid name params -subscribeWait :: Text -> [EJsonValue] -> DeadpanApp (Either EJsonValue EJsonValue)-subscribeWait name params = do+subscribeWaitId :: Text -> [EJsonValue] -> DeadpanApp (Either EJsonValue (GUID, EJsonValue))+subscribeWaitId name params = do mv <- liftIO newEmptyMVar subId <- newID handlerIdL <- setMatchHandler (guid2NoSub subId) (handlerL mv)- handlerIdR <- setMatchHandler (guid2SubReady subId) (handlerR mv)+ handlerIdR <- setMatchHandler (guid2SubReady subId) (handlerR subId mv) _ <- clientDataSub subId name params res <- liftIO $ readMVar mv @@ -75,9 +76,13 @@ where -- {"msg":"ready","subs":["849d1899-f3af-44b9-919c-7a1ca72c8857"]}- handlerR mv itm = liftIO $ putMVar mv $ Right itm+ handlerR subId mv itm = liftIO $ putMVar mv $ Right (subId, itm) -- {"error":{...},"msg":"nosub","id":"af0a7ce1-3c37-40d7-8875-b8e3dd737765"} handlerL mv itm = forOf_ (_EJObjectKey "error" . _Just) itm $ liftIO . putMVar mv . Left++subscribeWait :: Text -> [EJsonValue] -> DeadpanApp (Either EJsonValue EJsonValue)+subscribeWait name params = fmap (right' snd)+ (subscribeWaitId name params) {- |