packages feed

loup-0.0.2: src/Network/AWS/Loup/Prelude.hs

{-# LANGUAGE ConstraintKinds   #-}
{-# LANGUAGE FlexibleContexts  #-}
{-# LANGUAGE NoImplicitPrelude #-}

-- | Local Prelude.
--
module Network.AWS.Loup.Prelude
  ( module Exports
  , encode'
  , pages
  , runConcurrent
  ) where

import Control.Concurrent.Async.Lifted
import Control.Monad.Trans.AWS
import Control.Monad.Trans.Control
import Data.Aeson
import Data.ByteString.Lazy            hiding (map)
import Data.Conduit
import Data.Conduit.List               hiding (map)
import Preamble                        as Exports

-- | Encode JSON to Text.
--
encode' :: ToJSON a => a -> Text
encode' = decodeUtf8 . toStrict . encode

-- | Paginate all.
--
pages :: (AWSConstraint c m, AWSPager a) => a -> m [Rs a]
pages a = paginate a $$ consume

-- | Run a list of actions concurrently.
--
runConcurrent :: MonadBaseControl IO m => [m a] -> m ()
runConcurrent = void . runConcurrently . sequenceA . map Concurrently