-- | The raw HTTP transformer module Network.HTTP.Pony.Transformer.HTTP where import Data.ByteString.Char8 (ByteString) import Pipes (Producer, Consumer, runEffect, (>->)) import qualified Network.HTTP.Pony.Transformer.HTTP.Builder as Builder import qualified Network.HTTP.Pony.Transformer.HTTP.Parser as Parser import Network.HTTP.Pony.Transformer.HTTP.Type (Middleware, Request', Response') http :: (Monad m) => Middleware m (Producer ByteString m a) (Producer ByteString m ()) (Request' ByteString m a) (Response' ByteString m b) http app pull = do maybeRequest <- Parser.parseMessage pull (pure ()) case maybeRequest of Just (Right request) -> do response <- app request pure (Builder.message response >> pure ()) _ -> (pure . pure) () -- Just (Left err) -> pure - pure - err -- _ -> pure Nothing