Skip to content

Commit 26c6c0e

Browse files
committed
Expose more constructors for RequestBody.
Mimicking http-client's RequestBody.
1 parent 37482d6 commit 26c6c0e

File tree

1 file changed

+23
-16
lines changed
  • servant-client-core/src/Servant/Client/Core/Internal

1 file changed

+23
-16
lines changed

servant-client-core/src/Servant/Client/Core/Internal/Request.hs

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
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

1313
module Servant.Client.Core.Internal.Request where
1414

1515
import Prelude ()
1616
import Prelude.Compat
1717

1818
import Control.Monad.Catch (Exception)
19-
import qualified Data.ByteString.Builder as Builder
2019
import qualified Data.ByteString as BS
20+
import qualified Data.ByteString.Builder as Builder
2121
import qualified Data.ByteString.Lazy as LBS
22+
import Data.Int (Int64)
2223
import Data.Semigroup ((<>))
2324
import qualified Data.Sequence as Seq
2425
import 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

6364
type 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

6976
data GenResponse a = Response
7077
{ responseStatusCode :: Status

0 commit comments

Comments
 (0)