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, HttpRequest, HttpResponse)
http :: (Monad m) => Middleware m
(Producer ByteString m a)
(Producer ByteString m ())
(HttpRequest ByteString m a)
(HttpResponse 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) ()