@@ -1,8 +1,9 @@
11{-# LANGUAGE CPP #-}
22{-# LANGUAGE DeriveDataTypeable #-}
33{-# LANGUAGE DeriveFunctor #-}
4+{-# LANGUAGE DeriveFoldable #-}
5+{-# LANGUAGE DeriveTraversable #-}
46{-# LANGUAGE DeriveGeneric #-}
5−{-# LANGUAGE GeneralizedNewtypeDeriving #-}
67{-# LANGUAGE MultiParamTypeClasses #-}
78{-# LANGUAGE RankNTypes #-}
89{-# LANGUAGE OverloadedStrings #-}
@@ -65,14 +66,15 @@ type Request = RequestF Builder.Builder
6566newtype RequestBody = RequestBodyLBS LBS.ByteString
6667 deriving (Eq, Ord, Read, Show, Typeable)
6768
68−data Response = Response
69+data GenResponse a = Response
6970 { responseStatusCode :: Status
70− , responseBody :: LBS.ByteString
7171 , responseHeaders :: Seq.Seq Header
7272 , responseHttpVersion :: HttpVersion
73− } deriving (Eq, Show, Generic, Typeable)
73+ , responseBody :: a
74+ } deriving (Eq, Show, Generic, Typeable, Functor, Foldable, Traversable)
7475
75−data StreamingResponse = StreamingResponse { runStreamingResponse :: forall a. ((Status, Seq.Seq Header, HttpVersion, IO BS.ByteString) -> IO a) -> IO a }
76+type Response = GenResponse LBS.ByteString
77+newtype StreamingResponse = StreamingResponse { runStreamingResponse :: forall a. (GenResponse (IO BS.ByteString) -> IO a) -> IO a }
7678
7779-- A GET request to the top-level path
7880defaultRequest :: Request