packages feed

wolf 0.2.1 → 0.2.2

raw patch · 2 files changed

+38/−22 lines, 2 filesdep +http-types

Dependencies added: http-types

Files

src/Network/AWS/Flow.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE LambdaCase #-}+ module Network.AWS.Flow   ( register   , execute@@ -28,12 +30,13 @@ import           Network.AWS.Flow.SWF import           Network.AWS.Flow.Types import           Network.AWS.Flow.Uid-import           Network.AWS.Flow.Prelude hiding ( ByteString, Metadata )+import           Network.AWS.Flow.Prelude hiding ( ByteString, Metadata, handle )  import           Control.Monad.Catch import qualified Data.HashMap.Strict as Map import           Formatting import           Network.AWS.SWF+import           Network.HTTP.Types import           Safe  -- Interface@@ -61,29 +64,41 @@   logInfo' $ sformat ("event=execute uid=" % stext) uid   startWorkflowExecutionAction uid tskName tskVersion tskQueue input +serializeError :: MonadFlow m => Error -> m ()+serializeError = \case+  e@(SerializeError s) ->+    unless check $ throwM e where+      check =+        s ^. serializeStatus  == ok200 &&+        s ^. serializeAbbrev  == "SWF" &&+        s ^. serializeMessage == "key \"taskToken\" not present"+  e -> throwM e+ act :: MonadFlow m => Queue -> (Uid -> Metadata -> [Blob] -> m (Metadata, [Artifact])) -> m ()-act queue action = do-  logInfo' "event=act"-  (token, uid, input) <- pollForActivityTaskAction queue-  logInfo' $ sformat ("event=act-begin uid=" % stext) uid-  keys <- listObjectsAction uid-  unless (null keys) $ logInfo' $ sformat ("event=list-blobs uid=" % stext) uid-  blobs <- forM keys $ getObjectAction uid-  unless (null blobs) $ logInfo' $ sformat ("event=blobs uid=" % stext) uid-  (output, artifacts) <- action uid input blobs-  logInfo' $ sformat ("event=act-finish uid=" % stext) uid-  forM_ artifacts $ putObjectAction uid-  unless (null artifacts) $ logInfo' $ sformat ("event=artifacts uid=" % stext) uid-  respondActivityTaskCompletedAction token output+act queue action =+  handle serializeError $ do+    logInfo' "event=act"+    (token, uid, input) <- pollForActivityTaskAction queue+    logInfo' $ sformat ("event=act-begin uid=" % stext) uid+    keys <- listObjectsAction uid+    unless (null keys) $ logInfo' $ sformat ("event=list-blobs uid=" % stext) uid+    blobs <- forM keys $ getObjectAction uid+    unless (null blobs) $ logInfo' $ sformat ("event=blobs uid=" % stext) uid+    (output, artifacts) <- action uid input blobs+    logInfo' $ sformat ("event=act-finish uid=" % stext) uid+    forM_ artifacts $ putObjectAction uid+    unless (null artifacts) $ logInfo' $ sformat ("event=artifacts uid=" % stext) uid+    respondActivityTaskCompletedAction token output  decide :: MonadFlow m => Plan -> m ()-decide plan@Plan{..} = do-  logInfo' "event=decide"-  (token', events) <- pollForDecisionTaskAction (tskQueue $ strtTask plnStart)-  token <- maybeThrow (userError "No Token") token'-  logger <- asks feLogger-  decisions <- runDecide logger plan events select-  respondDecisionTaskCompletedAction token decisions+decide plan@Plan{..} =+  handle serializeError $ do+    logInfo' "event=decide"+    (token', events) <- pollForDecisionTaskAction (tskQueue $ strtTask plnStart)+    token <- maybeThrow (userError "No Token") token'+    logger <- asks feLogger+    decisions <- runDecide logger plan events select+    respondDecisionTaskCompletedAction token decisions  -- Decisions 
wolf.cabal view
@@ -1,5 +1,5 @@ name:                wolf-version:             0.2.1+version:             0.2.2 synopsis:            Amazon Simple Workflow Service Wrapper. homepage:            https://github.com/swift-nav/wolf license:             MIT@@ -46,6 +46,7 @@                      , fast-logger                      , formatting                      , http-conduit+                     , http-types                      , lens                      , monad-control                      , monad-logger