module AWS.EC2.Util
( asList
, head
, each
) where
import Data.Conduit
import qualified Data.Conduit.List as CL
import Control.Monad.Trans.Class (lift)
import Prelude hiding (head)
import AWS.EC2.Internal
asList
:: Monad m
=> EC2 m (Source m a)
-> EC2 m [a]
asList src = do
s <- src
lift $ s $$ CL.consume
head
:: Monad m
=> EC2 m (Source m a)
-> EC2 m (Maybe a)
head src = do
s <- src
lift $ s $$ CL.head
each
:: Monad m
=> EC2 m (Source m a)
-> (a -> m b)
-> EC2 m ()
each src f = do
s <- src
(rsrc, _) <- lift $ s $$+ CL.take 0
lift $ each' rsrc f
each'
:: Monad m
=> ResumableSource m a
-> (a -> m b)
-> m ()
each' rsrc f = do
(s', ma) <- rsrc $$++ CL.head
case ma of
Nothing -> return ()
Just a -> f a >> each' s' f