packages feed

antiope-sqs 7.1.1 → 7.1.2

raw patch · 2 files changed

+37/−7 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Antiope.SQS: defaultReceiveMessage :: QueueUrl -> ReceiveMessage
+ Antiope.SQS: drainQueue' :: MonadAWS m => ReceiveMessage -> m [Message]
+ Antiope.SQS: forAllMessages' :: (MonadUnliftIO m, HasEnv env) => env -> ReceiveMessage -> ConsumerMode -> (Message -> m ConsumerResult) -> m ()
+ Antiope.SQS: readQueue' :: MonadAWS m => ReceiveMessage -> m [Message]

Files

antiope-sqs.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2  name:               antiope-sqs-version:            7.1.1+version:            7.1.2 synopsis:           Please see the README on Github at <https://github.com/arbor/antiope#readme> description:        Please see the README on Github at <https://github.com/arbor/antiope#readme>. category:           Services
src/Antiope/SQS.hs view
@@ -5,11 +5,15 @@   , ConsumerMode(..)   , ConsumerResult(..)   , readQueue+  , readQueue'   , drainQueue+  , drainQueue'   , ackMessage   , ackMessages   , queueSource   , forAllMessages+  , forAllMessages'+  , defaultReceiveMessage    -- * Re-exports   , Message@@ -34,21 +38,39 @@  import qualified Network.AWS as AWS +defaultReceiveMessage :: QueueUrl -> ReceiveMessage+defaultReceiveMessage (QueueUrl url)+  = receiveMessage url+  & rmWaitTimeSeconds ?~ 10+  & rmMaxNumberOfMessages ?~ 10+ -- | Reads the specified SQS queue once returning a bath of messages readQueue :: MonadAWS m   => QueueUrl   -> m [Message]-readQueue (QueueUrl queueUrl) = do+readQueue = readQueue' . defaultReceiveMessage++-- | Reads the specified SQS queue once returning a bath of messages+readQueue' :: MonadAWS m+  => ReceiveMessage+  -> m [Message]+readQueue' recMsg = do   -- max wait time allowed by aws is 20sec, max number messages to recieve is 10-  resp <- AWS.send $ receiveMessage queueUrl & rmWaitTimeSeconds ?~ 10 & rmMaxNumberOfMessages ?~ 10+  resp <- AWS.send recMsg   return $ resp ^. rmrsMessages  -- | Reads the specified SQS queue until it is empty and returns a list of messages drainQueue :: MonadAWS m   => QueueUrl   -> m [Message]-drainQueue queueUrl = join <$> unfoldWhileM (not . null) (readQueue queueUrl)+drainQueue = drainQueue' . defaultReceiveMessage +-- | Reads the specified SQS queue until it is empty and returns a list of messages+drainQueue' :: MonadAWS m+  => ReceiveMessage+  -> m [Message]+drainQueue' recMsg = join <$> unfoldWhileM (not . null) (readQueue' recMsg)+ -- | Acknowledges a single SQS message ackMessage :: (MonadAWS m, HasReceiptHandle msg)   => QueueUrl@@ -90,10 +112,18 @@   -> ConsumerMode   -> (Message -> m ConsumerResult)   -> m ()-forAllMessages env queue mode process = go+forAllMessages env queue = forAllMessages' env (defaultReceiveMessage queue)++forAllMessages' :: (MonadUnliftIO m, HasEnv env)+  => env+  -> ReceiveMessage+  -> ConsumerMode+  -> (Message -> m ConsumerResult)+  -> m ()+forAllMessages' env recMsg mode process = go   where     go = do-      msgs <- runResourceT $ runAWS env (readQueue queue)+      msgs <- runResourceT $ runAWS env (readQueue' recMsg)       case (mode, msgs) of         (Drain, []) -> pure ()         _           -> processBatch msgs >> go@@ -101,5 +131,5 @@       forM_ msgs $ \msg -> do         res <- process msg         case res of-          Ack  -> void . runResourceT . runAWS env $ (ackMessage queue msg)+          Ack  -> void . runResourceT . runAWS env $ ackMessage (QueueUrl $ recMsg ^. rmQueueURL) msg           Nack -> pure ()