Commit graph

49 commits

Author SHA1 Message Date
Oleg Grenrus
4fab471c29 Refactor servant-client(-core)
- Rename GenResponse to ResponseF (analogous to RequestF)
- add NFData Headers
- Make Request and Response bodies be SourceIO,
  i.e. move conversions into specific implementations
2019-02-06 12:15:20 +02:00
Oleg Grenrus
9cc73f29ff Differentiate different exception types 2019-02-05 12:58:35 +02:00
Clement Delafargue
82a2c1f463 keep structured exceptions in ConnectionError
fixes #807
Previously, there were two levels of `SomeException` (see #714). A
test makes sure there is only one level of wrapping.
2019-02-05 12:46:06 +02:00
Oleg Grenrus
fdd1c7392b
Merge pull request #1114 from phadej/bgamari-request-in-failureresponse
Bgamari request in failureresponse
2019-02-05 12:25:50 +02:00
Oleg Grenrus
3a9a1ca55b Parametrise over body contents only 2019-02-05 11:51:42 +02:00
Ben Gamari
9a655fd68e client: Preserve failing request in FailureResponse
This was previously implemented in #470 but later unintentionally
reverted in #803. This isn't verbatim the design implemented earlier; we
now capture the full RequestF save the request body.

Fixes #978.
2019-02-03 12:09:18 -05:00
Ben Gamari
aa704596be 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.
2019-02-03 12:06:30 -05:00
Oleg Grenrus
e9466b7752 Implement HasClient (StreamBody ... :> api) 2019-02-02 15:50:23 +02:00
Oleg Grenrus
3b8db040f3 http-api-data-0.4 2018-11-13 17:21:29 +02:00
Oleg Grenrus
3001ed7990 Add mods to StreamBody 2018-11-09 21:49:53 +02:00
Oleg Grenrus
0dd8ee7585 Add runClientM for streaming-client 2018-11-09 20:22:47 +02:00
Oleg Grenrus
8feda81fcd Separate Servant.Client.Streaming
- as a bonus only `servant-client` depends on `kan-extensions`
2018-11-08 17:58:21 +02:00
Oleg Grenrus
45c1cbdfd5 Refactor Stream stuff
- Introduce SourceT, which is simple variant of "correct `ListT`".
  There are another variants possible (like in `streaming`),
  but I'm not sure there's much real difference.

- Introduce `Codensity`. There's a flag if people don't want to depend
  on `kan-extensions`.

- `StreamGenerator` and `ResultStream` are both `SourceT`.
  `Stream` combinator in `servant-client` uses `Codensity` for CPS.

- Add servant-machines, servant-conduit, servant-pipes
- Add streaming cookbook: just code, no explanations.
- Add a script to run streaming 'benchmarks'
2018-11-05 15:48:47 +02:00
Oleg Grenrus
a956abddeb Add aeson and Lift BaseUrl instances 2018-09-18 13:47:23 +03:00
Oleg Grenrus
cfade67c2f Cleanup pre-GHC-8.0 stuff 2018-07-11 01:39:38 +03:00
Oleg Grenrus
88f8d3b0d1 Merge servant-generic 2018-07-05 23:21:25 +03:00
Oleg Grenrus
319dcc2fe1 stylish-haskell servant-client-core 2018-06-30 22:17:08 +03:00
Oleg Grenrus
dcc67f3089 Add FromResultStream/ToStreamGenerator [a] instances.
- Add Streaming endpoint to the comprehensive API.
- Rename BuildFromStream to FromResultStram
   - I'm tempted to rename everything in the Servant.API.Stream
     (add some prefixes, `header` is too good name to steal)

The TODO in `servant-docs` is left intentionally.
2018-06-24 21:52:09 +03:00
Jan van Brügge
dbbe9b7321 Allow to specify the status of streaming endpoints 2018-05-28 12:00:29 +02:00
Oleg Grenrus
dd7ec1dfd7 Allow base-compat-0.10.0 2018-04-11 11:26:14 +03:00
Alp Mestanogullari
200311ee26 add hoistClient to HasClient class 2018-04-04 01:48:48 +02:00
Julian K. Arni
26c6c0ec38 Expose more constructors for RequestBody.
Mimicking http-client's RequestBody.
2018-03-19 16:26:57 +01:00
Oleg Grenrus
454f53315f Remove catchServantError 2018-03-11 16:50:14 +02:00
Oleg Grenrus
80188e024e Add Servant.Client.Free 2018-03-11 14:13:25 +02:00
Oleg Grenrus
3e1748c965 Add description modifier helpers and parametrise Capture 2018-02-15 12:28:42 +02:00
Oleg Grenrus
f4fc2b321f Refactor servant-client-core Response+StreamingResponse 2018-01-31 09:26:28 +02:00
Oleg Grenrus
bc3f61d615 Add Servant.API.Modifiers to servant
Changes Header, ReqBody and QueryParam to take a modifier list.

Resolves https://github.com/haskell-servant/servant/issues/856

ResponseHeader story turns to be somewhat ugly, but it can be made
elegant when https://github.com/haskell-servant/servant/issues/841 is
implemnted, then we can omit HList aka Header Heterogenous List
implementation.

- servant-server changes:

  Writing server side intepretations is quite simple using
  `unfoldRequestArgument`, which makes Header and QueryParam look quite
  the same.

  `ReqBody` cannot be easily made optional with current design (what that
  would mean: No Content-Type Header?), so that dimensions isn't used
  there.

- Add HasLink for all the rest ComprehensiveAPI combinators
- Add 'tricky' Header', QueryParam' endpoints to ComprehensiveAPI
- servant-docs: Quick'n'dirty implementation. Don't use modifiers information (yet).
2018-01-25 09:10:11 +02:00
Gershom
db13077ccb wall clean and compat 2017-11-06 11:55:27 -05:00
Gershom
90292e1f62 move statuscheck earlier on streaming response to give good error 2017-11-06 11:37:00 -05:00
Gershom
38e87397e7 add tests, fix to make tests work 2017-11-04 00:10:29 -04:00
Gershom
0c77a2b4b0 make client endpoint give polymorphic result 2017-10-24 17:26:18 -07:00
Gershom
e75a3cc37b streaming client actually streams 2017-10-24 17:12:21 -07:00
Gershom
9a2ac6f4dd HasClient instance for Stream 2017-10-20 15:09:11 -04:00
Julian K. Arni
1a67d93c60 Use own throw/catch 2017-09-15 14:57:03 -04:00
Julian K. Arni
49d5067e22 Review fixes 2017-09-15 09:15:46 -04:00
Julian K. Arni
4e9c342c4e Review fixes 2017-09-14 13:21:53 -04:00
Julian K. Arni
30528a8198 Parametrize Request 2017-09-14 13:17:19 -04:00
Julian K. Arni
65c2cbb6a9 Fix 7.8.4 IsList Sequence issue
And other minor 7.8.4 issues.
2017-09-14 11:23:42 -04:00
Julian K. Arni
39ad465695 Ghc 8.2 fixes 2017-09-14 09:54:46 -04:00
Julian K. Arni
e8b9814168 Documentation and Reexport module 2017-09-14 09:54:13 -04:00
Julian K. Arni
6be78e0b38 Documentation 2017-09-14 09:54:13 -04:00
Julian K. Arni
ffbfa42a14 Tests now pass 2017-09-14 09:54:13 -04:00
Julian K. Arni
5bd9d253ce Almost compiling test 2017-09-14 09:54:13 -04:00
Julian K. Arni
75ea91c34d Fix some tests 2017-09-14 09:54:13 -04:00
Julian K. Arni
f44ab3d083 Cleanup 2017-09-14 09:54:13 -04:00
Julian K. Arni
05db359296 Compiling HttpClient 2017-09-14 09:54:13 -04:00
Julian K. Arni
01f344dfbb Compiling servant-client-core 2017-09-14 09:54:13 -04:00
Julian K. Arni
35599d8b38 More reorganization 2017-09-14 09:54:13 -04:00
Julian K. Arni
95fac329a6 Rewrite servant-client.
This commit begins the reorganization of the servant-client project
    so as to allow multiple backends, and also begins some much-needed
    refactoring of the servant-client code.
2017-09-14 09:54:13 -04:00