sparrow 0.0.1.2 → 0.0.1.3
raw patch · 2 files changed
+46/−2 lines, 2 files
Files
- sparrow.cabal +2/−2
- src/Web/Dependencies/Sparrow/Types.hs +44/−0
sparrow.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: ebd4e11dfaadfc68bb56b0cd34cc4bf376b7430cd16a28ef8c69413463be699b+-- hash: d249c65e47a387870dde17936cb70776bf5b3daf937fdbaa535c9b1867e3cda2 name: sparrow-version: 0.0.1.2+version: 0.0.1.3 synopsis: Unified streaming dependency management for web apps description: Please see the README on Github at <https://git.localcooking.com/tooling/sparrow#readme> category: Web
src/Web/Dependencies/Sparrow/Types.hs view
@@ -3,6 +3,7 @@ , GeneralizedNewtypeDeriving , OverloadedStrings , RecordWildCards+ , NamedFieldPuns #-} module Web.Dependencies.Sparrow.Types where@@ -51,7 +52,26 @@ initIn -> m (Maybe (ServerContinue m initOut deltaIn deltaOut)) +staticServer :: Monad m+ => (initIn -> m (Maybe initOut)) -- ^ Produce an initOut+ -> Server m initIn initOut JSONVoid JSONVoid+staticServer f initIn = do+ mInitOut <- f initIn+ case mInitOut of+ Nothing -> pure Nothing+ Just initOut -> pure $ Just ServerContinue+ { serverOnUnsubscribe = pure ()+ , serverContinue = \_ -> pure ServerReturn+ { serverInitOut = initOut+ , serverOnOpen = \ServerArgs{serverDeltaReject} -> do+ serverDeltaReject+ pure Nothing+ , serverOnReceive = \_ _ -> pure ()+ }+ } ++ -- ** Client data ClientReturn m initOut deltaIn = ClientReturn@@ -72,6 +92,23 @@ ) -> m () +staticClient :: Monad m+ => ((initIn -> m (Maybe initOut)) -> m ()) -- ^ Obtain an initOut+ -> Client m initIn initOut JSONVoid JSONVoid+staticClient f invoke = f $ \initIn -> do+ mReturn <- invoke ClientArgs+ { clientInitIn = initIn+ , clientReceive = \_ _ -> pure ()+ , clientOnReject = pure ()+ }+ case mReturn of+ Nothing -> pure Nothing+ Just ClientReturn{clientInitOut,clientUnsubscribe} -> do+ clientUnsubscribe+ pure (Just clientInitOut)+++ -- ** Topic newtype Topic = Topic {getTopic :: [Text]}@@ -97,6 +134,13 @@ -- * JSON Encodings +data JSONVoid++instance ToJSON JSONVoid where+ toJSON _ = String ""++instance FromJSON JSONVoid where+ parseJSON = typeMismatch "JSONVoid" data WithSessionID a = WithSessionID