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) ()