git.iko.soy/typeable/servant
on master help sign in
client: Parameterize RequestF on request body type

This allows us to provide an NFData instance for RequestF, which will later be useful when we capture the request in FailureResponse.

commitaa704596beea9ff60a8e2f28518aa1099ad73436 authorBen Gamari <ben@smart-cactus.org> dateSun 3 Feb 2019, 11:17 (8 years ago) parent109f7b2
2 files changed+21−4
servant-client-core/CHANGELOG.md+7 servant-client-core/src/Servant/Client/Core/Internal/Request.hs+14−4
servant-client-core/CHANGELOG.md+7
@@ -1,6 +1,13 @@
11[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-client-core/CHANGELOG.md)
22[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
33
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+
4110.15
512----
613
servant-client-core/src/Servant/Client/Core/Internal/Request.hs+14−4
@@ -75,17 +75,27 @@ instance NFData ServantError where
7575 rnf (InvalidContentTypeHeader res) = rnf res
7676 rnf (ConnectionError err) = rnf err
7777
78−data RequestF a = Request
79− { requestPath :: a
78+data RequestF body path = Request
79+ { requestPath :: path
8080 , requestQueryString :: Seq.Seq QueryItem
81− , requestBody :: Maybe (RequestBody, MediaType)
81+ , requestBody :: Maybe (body, MediaType)
8282 , requestAccept :: Seq.Seq MediaType
8383 , requestHeaders :: Seq.Seq Header
8484 , requestHttpVersion :: HttpVersion
8585 , requestMethod :: Method
8686 } deriving (Generic, Typeable)
8787
88−type Request = RequestF Builder.Builder
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+
98+type Request = RequestF RequestBody Builder.Builder
8999
90100-- | The request body. A replica of the @http-client@ @RequestBody@.
91101data RequestBody