on master help sign in
Expose more constructors for RequestBody.

Mimicking http-client's RequestBody.

commit26c6c0ec3895468fb3c48c2f61b7003baf53b805 authorJulian K. Arni <jkarni@gmail.com> dateTue 27 Feb 2018, 15:36 (9 years ago) parent37482d6
1 file changed+23−16
servant-client-core/src/Servant/Client/Core/Internal/Request.hs+23−16
servant-client-core/src/Servant/Client/Core/Internal/Request.hs+23−16
@@ -1,14 +1,14 @@
1−{-# LANGUAGE CPP #-}
2−{-# LANGUAGE DeriveDataTypeable #-}
3−{-# LANGUAGE DeriveFunctor #-}
4−{-# LANGUAGE DeriveFoldable #-}
5−{-# LANGUAGE DeriveTraversable #-}
6−{-# LANGUAGE DeriveGeneric #-}
7−{-# LANGUAGE MultiParamTypeClasses #-}
8−{-# LANGUAGE RankNTypes #-}
9−{-# LANGUAGE OverloadedStrings #-}
10−{-# LANGUAGE ScopedTypeVariables #-}
11−{-# LANGUAGE TypeFamilies #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE DeriveDataTypeable #-}
3+{-# LANGUAGE DeriveFoldable #-}
4+{-# LANGUAGE DeriveFunctor #-}
5+{-# LANGUAGE DeriveGeneric #-}
6+{-# LANGUAGE DeriveTraversable #-}
7+{-# LANGUAGE MultiParamTypeClasses #-}
8+{-# LANGUAGE OverloadedStrings #-}
9+{-# LANGUAGE RankNTypes #-}
10+{-# LANGUAGE ScopedTypeVariables #-}
11+{-# LANGUAGE TypeFamilies #-}
1212
1313module Servant.Client.Core.Internal.Request where
1414
@@ -16,9 +16,10 @@ import Prelude ()
1616import Prelude.Compat
1717
1818import Control.Monad.Catch (Exception)
19−import qualified Data.ByteString.Builder as Builder
2019import qualified Data.ByteString as BS
20+import qualified Data.ByteString.Builder as Builder
2121import qualified Data.ByteString.Lazy as LBS
22+import Data.Int (Int64)
2223import Data.Semigroup ((<>))
2324import qualified Data.Sequence as Seq
2425import Data.Text (Text)
@@ -58,13 +59,19 @@ data RequestF a = Request
5859 , requestHeaders :: Seq.Seq Header
5960 , requestHttpVersion :: HttpVersion
6061 , requestMethod :: Method
61− } deriving (Eq, Show, Functor, Generic, Typeable)
62+ } deriving (Generic, Typeable)
6263
6364type Request = RequestF Builder.Builder
6465
65−-- | The request body. Currently only lazy ByteStrings are supported.
66−newtype RequestBody = RequestBodyLBS LBS.ByteString
67− deriving (Eq, Ord, Read, Show, Typeable)
66+-- | The request body. A replica of the @http-client@ @RequestBody@.
67+data RequestBody
68+ = RequestBodyLBS LBS.ByteString
69+ | RequestBodyBS BS.ByteString
70+ | RequestBodyBuilder Int64 Builder.Builder
71+ | RequestBodyStream Int64 ((IO BS.ByteString -> IO ()) -> IO ())
72+ | RequestBodyStreamChunked ((IO BS.ByteString -> IO ()) -> IO ())
73+ | RequestBodyIO (IO RequestBody)
74+ deriving (Generic, Typeable)
6875
6976data GenResponse a = Response
7077 { responseStatusCode :: Status