git.iko.soy/typeable/servant
on master help sign in
client: Parameterize RequestF on request body type
aa70459Ben Gamari
servant-client-core/CHANGELOG.md+7
@@ -1,6 +1,13 @@
1[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-client-core/CHANGELOG.md)
1[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-client-core/CHANGELOG.md)
2[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
2[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
3
3
4+0.15.1
5+------
6+
7+- `RequestF` is now parametrized on the request body type as well as the path
8+ type.
9+
10+
40.15
110.15
5----
12----
6
13
servant-client-core/src/Servant/Client/Core/Internal/Request.hs+14−4
@@ -75,17 +75,27 @@ instance NFData ServantError where
75 rnf (InvalidContentTypeHeader res) = rnf res
75 rnf (InvalidContentTypeHeader res) = rnf res
76 rnf (ConnectionError err) = rnf err
76 rnf (ConnectionError err) = rnf err
77
77
78−data RequestF a = Request
78+data RequestF body path = Request
79− { requestPath :: a
79+ { requestPath :: path
80 , requestQueryString :: Seq.Seq QueryItem
80 , requestQueryString :: Seq.Seq QueryItem
81− , requestBody :: Maybe (RequestBody, MediaType)
81+ , requestBody :: Maybe (body, MediaType)
82 , requestAccept :: Seq.Seq MediaType
82 , requestAccept :: Seq.Seq MediaType
83 , requestHeaders :: Seq.Seq Header
83 , requestHeaders :: Seq.Seq Header
84 , requestHttpVersion :: HttpVersion
84 , requestHttpVersion :: HttpVersion
85 , requestMethod :: Method
85 , requestMethod :: Method
86 } deriving (Generic, Typeable)
86 } deriving (Generic, Typeable)
87
87
88+instance (NFData path, NFData body) => NFData (Request body path) where
89+ rnf r =
90+ rnf (requestPath r)
91+ `seq` rnf (requestQueryString r)
92+ `seq` rnf (requestBody r)
93+ `seq` rnf (requestAccept r)
94+ `seq` rnf (requestHeaders r)
95+ `seq` rnf (requestHttpVersion r)
96+ `seq` rnf (requestMethod r)
97+
88−type Request = RequestF Builder.Builder
98+type Request = RequestF RequestBody Builder.Builder
89
99
90-- | The request body. A replica of the @http-client@ @RequestBody@.
100-- | The request body. A replica of the @http-client@ @RequestBody@.
91data RequestBody
101data RequestBody