1[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-client/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)
7- Rename `ServantError` to `ClientError`, `ServantErr` to `ServerError`
8 [#1131](https://github.com/haskell-servant/servant/pull/1131)
10- *servant-client-core* Rearrange modules. No more `Internal` modules, whole
12 [#1130](https://github.com/haskell-servant/servant/pull/1130)
14- *servant-client-core* `RequestBody` is now
17 = RequestBodyLBS LBS.ByteString
18 | RequestBodyBS BS.ByteString
19 | RequestBodySource (SourceIO LBS.ByteString)
22 i.e. no more replicates `http-client`s API.
23 [#1117](https://github.com/haskell-servant/servant/pull/1117)
25- *servant-client-core* Keep structured exceptions in `ConnectionError`
26 constructor of `ClientError`
27 [#1115](https://github.com/haskell-servant/servant/pull/1115)
30 -| ConnectionError Text
31 +| ConnectionError SomeException
34- *servant-client-core* Preserve failing request in `FailureResponse`
35 constructor of `ClientError`
36 [#1114](https://github.com/haskell-servant/servant/pull/1114)
39 -FailureResponse Response
40 +-- | The server returned an error response including the
41 +-- failing request. 'requestPath' includes the 'BaseUrl' and the
42 +-- path of the request.
43 +FailureResponse (RequestF () (BaseUrl, BS.ByteString)) Response
46- *servant-client* Fix (implement) `StreamBody` instance
47 [#1110](https://github.com/haskell-servant/servant/pull/1110)
49- *servant-client* Update CookieJar with intermediate request/responses (redirects)
50 [#1104](https://github.com/haskell-servant/servant/pull/1104)
55- Streaming refactoring.
56 [#991](https://github.com/haskell-servant/servant/pull/991)
57 [#1076](https://github.com/haskell-servant/servant/pull/1076)
58 [#1077](https://github.com/haskell-servant/servant/pull/1077)
60 The streaming functionality (`Servant.API.Stream`) is refactored to use
61 `servant`'s own `SourceIO` type (see `Servant.Types.SourceT` documentation),
62 which replaces both `StreamGenerator` and `ResultStream` types.
64 New conversion type-classes are `ToSourceIO` and `FromSourceIO`
65 (replacing `ToStreamGenerator` and `BuildFromStream`).
66 There are instances for *conduit*, *pipes* and *machines* in new packages:
67 [servant-conduit](https://hackage.haskell.org/package/servant-conduit)
68 [servant-pipes](https://hackage.haskell.org/package/servant-pipes) and
69 [servant-machines](https://hackage.haskell.org/package/servant-machines)
72 Writing new framing strategies is simpler. Check existing strategies for examples.
74 This change shouldn't affect you, if you don't use streaming endpoints.
76- *servant-client* Separate streaming client.
77 [#1066](https://github.com/haskell-servant/servant/pull/1066)
79 We now have two `http-client` based clients,
80 in `Servant.Client` and `Servant.Client.Streaming`.
82 Their API is the same, except for
83 - `Servant.Client` **cannot** request `Stream` endpoints.
84 - `Servant.Client` is *run* by direct
85 `runClientM :: ClientM a -> ClientEnv -> IO (Either ServantError a)`
86 - `Servant.Client.Streaming` **can** request `Stream` endpoints.
87 - `Servant.Client.Streaming` is *used* by CPSised
88 `withClientM :: ClientM a -> ClientEnv -> (Either ServantError a -> IO b) -> IO b`
90 To access `Stream` endpoints use `Servant.Client.Streaming` with
91 `withClientM`; otherwise you can continue using `Servant.Client` with `runClientM`.
92 You can use both too, `ClientEnv` and `BaseUrl` types are same for both.
94 **Note:** `Servant.Client.Streaming` doesn't *stream* non-`Stream` endpoints.
95 Requesting ordinary `Verb` endpoints (e.g. `Get`) will block until
96 the whole response is received.
98 There is `Servant.Client.Streaming.runClientM` function, but it has
99 restricted type. `NFData a` constraint prevents using it with
100 `SourceT`, `Conduit` etc. response types.
103 runClientM :: NFData a => ClientM a -> ClientEnv -> IO (Either ServantError a)
106 This change shouldn't affect you, if you don't use streaming endpoints.
108- Drop support for GHC older than 8.0
109 [#1008](https://github.com/haskell-servant/servant/pull/1008)
110 [#1009](https://github.com/haskell-servant/servant/pull/1009)
112- *servant-client-core* Add `NFData (GenResponse a)` and `NFData ServantError` instances.
113 [#1076](https://github.com/haskell-servant/servant/pull/1076)
115 *servant-client-core* Add `aeson` and `Lift BaseUrl` instances
116 [#1037](https://github.com/haskell-servant/servant/pull/1037)
121- `Stream` takes a status code argument
124 -Stream method framing ctype a
125 +Stream method status framing ctype a
128 ([#966](https://github.com/haskell-servant/servant/pull/966)
129 [#972](https://github.com/haskell-servant/servant/pull/972))
131- `ToStreamGenerator` definition changed, so it's possible to write an instance
135 -class ToStreamGenerator f a where
136 - toStreamGenerator :: f a -> StreamGenerator a
137 +class ToStreamGenerator a b | a -> b where
138 + toStreamGenerator :: a -> StreamGenerator b
141 ([#959](https://github.com/haskell-servant/servant/pull/959))
143- Added `NoFraming` streaming strategy
144 ([#959](https://github.com/haskell-servant/servant/pull/959))
146- *servant-client-core* Add `hoistClient` to `HasClient`.
147 Just like `hoistServer` allows us to change the monad in which request handlers
148 of a web application live in, we also have `hoistClient` for changing the monad
149 in which *client functions* live.
150 Read [tutorial section for more information](https://docs.servant.dev/en/release-0.14/tutorial/Client.html#changing-the-monad-the-client-functions-live-in).
151 ([#936](https://github.com/haskell-servant/servant/pull/936))
153- *servant-client* Add more constructors to `RequestBody`, including
155 *Note:* we are looking for http-library agnostic API,
156 so the might change again soon.
157 Tell us which constructors are useful for you!
158 ([#913](https://github.com/haskell-servant/servant/pull/913))
163- Support `base-compat-0.10`
168- Streaming endpoint support.
169 ([#836](https://github.com/haskell-servant/servant/pull/836))
170- *servant* Add `Servant.API.Modifiers`
171 ([#873](https://github.com/haskell-servant/servant/pull/873))
172- *servant-client* Support `http-client`’s `CookieJar`
173 ([#897](https://github.com/haskell-servant/servant/pull/897)
174 [#883](https://github.com/haskell-servant/servant/pull/883))
179- Send `Accept` header.
180 ([#858](https://github.com/haskell-servant/servant/issues/858))
185- Factored out into `servant-client-core` all the functionality that was
186 independent of the `http-client` backend.
193- Path components are escaped
194 ([#696](https://github.com/haskell-servant/servant/pull/696))
195- `Req` `reqPath` field changed from `String` to `BS.Builder`
196 ([#696](https://github.com/haskell-servant/servant/pull/696))
197- Include `Req` in failure errors
198 ([#740](https://github.com/haskell-servant/servant/pull/740))
205There shouldn't be breaking changes. Released as a part of `servant` suite.
209* Add MonadBase and MonadBaseControl instances for ClientM
210 ([#663](https://github.com/haskell-servant/servant/issues/663))
212* client asks for any content-type in Accept contentTypes non-empty list
213 ([#615](https://github.com/haskell-servant/servant/pull/615))
215* Add `ClientLike` class that matches client functions generated using `client`
216 with client data structure.
217 ([#640](https://github.com/haskell-servant/servant/pull/640))
219* Allow direct use of 'RequestBody'
220 ([#661](https://github.com/haskell-servant/servant/pull/661))
225* Add MonadThrow and MonadCatch instances for ClientM
230* BACKWARDS INCOMPATIBLE: `client` now returns a ClientM which is a Reader for
231 BasicEnv. BasicEnv comprises the HttpManager and BaseUrl that have had to be
232 passed to each method returned by `client`.
238* `ServantError` has an `Eq` instance now.
243* `client` no longer takes `BaseUrl` and `Manager` arguments. Instead, each function returned by `client` requires these two arguments.
248* Use the `text` package instead of `String`.
249* Support for the `HttpVersion`, `IsSecure`, `RemoteHost` and `Vault` combinators
250* Added support for `path` on `BaseUrl`.
251* `client` now takes an explicit `Manager` argument.
252* Use `http-api-data` instead of `Servant.Common.Text`
253* Client functions now consider any 2xx successful.
254* Remove matrix params.
255* Added support for Basic authentication
256* Add generalized authentication support via the `AuthClientData` type family and
257 `AuthenticateReq` data type
261* The `HasClient` instance for `Delete cts ()` now does not care at all about content types provided.
265* `Delete` now is like `Get`, `Post`, `Put`, and `Patch` and returns a response body
266* Support content-type aware combinators and `Accept`/`Content-type` headers
267* Added a lot of tests
268* Support multiple concurrent threads
269* Use `ServantError` to report Errors instead of `String`
270* Make the clients for `Raw` endpoints return the whole `Response` value (to be able to access response headers for example)
272* Make () instances expect No Content status code, and not try to decode body.
273* Add support for response headers
278* Add matrix parameter support
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list