
Hello All, I seem to have something which compiles and compiling is half the battle. Perhaps there is a better, nicer way to do it; or maybe the code below has some mines hidden in it. Would be great to get some insight in these matters. Now it's time for me to go shopping. -- Jason Dusek pgp // solidsnack // C1EBC57DC55144F35460C8DF1FD4C6C1FED18A2B import Data.ByteString (ByteString) import qualified Blaze.ByteString.Builder as Blaze import Control.Monad.Trans import Control.Monad.Trans.Resource import Data.Conduit (($=)) import qualified Data.Conduit as Conduit import qualified Data.Conduit.List as Conduit import Data.Default import qualified Network.Wai as Wai import qualified Network.HTTP.Conduit as Conduit wai :: String -> Wai.Application wai s _ = do (_, mangari) <- allocate (Conduit.newManager def) Conduit.closeManager go mangari where go :: Conduit.Manager -> Conduit.ResourceT IO Wai.Response go manager = do request <- liftIO $ Conduit.parseUrl s Conduit.Response s _ h src <- Conduit.http request manager src <- reSource src return $ Wai.ResponseSource s h (src $= b2b) reSource :: MonadIO m => Conduit.ResumableSource m o -> m (Conduit.Source m o) reSource resumable = do (src, finalizer) <- Conduit.unwrapResumable resumable return $ Conduit.addCleanup (const finalizer) src b2b :: (Monad m) => Conduit.Conduit ByteString m (Conduit.Flush Blaze.Builder) b2b = Conduit.map (Conduit.Chunk . Blaze.fromByteString)