Commit Graph

116 Commits

Author SHA1 Message Date
andremarianiello 751350ba9e
WithResource combinator for Servant-managed resources (#1630) 2022-12-29 19:00:47 +01:00
Nicolas BACQUEY 9d66e16706 Add spec for serverLayout 2022-03-23 14:30:45 +01:00
Nicolas BACQUEY 77b92d0d7d Display capture hints in router layout
This commit introduces a `CaptureHint` type, which is passed as an extra
argument to the `CaptureRouter` and `CaptureAllRouter` constructors for
the `Router'` type.
`CaptureHint` values are then used in `routerLayout`, to display the
name and "type" of captured values (single or list), instead of just
"<capture>" previously.

N.B.:
Because the `choice` smart constructor for routers can aggregate
`Capture` combinators with different capture hints, the `Capture*Router`
constructors actually take a *list* of `CaptureHint`, instead of a
single one.
2022-03-23 14:30:45 +01:00
akhesaCaro 6e5dffbb91 unsupporting GHC < 8.6.5, removing unecessary imports 2021-10-02 13:13:24 +02:00
Paolo Capriotti 19ec395e66
Avoid using SOP constructors directly (#1434)
This is a followup to #1420. It uses `respond` and `matchUnion`, with
the help of some type annotations, instead of the NS constructors from
SOP.
2021-07-13 10:10:30 -05:00
Paolo Capriotti 0f9cc7eeec
Add response header support to UVerb (#1420)
* Use type wrapped in Headers h to generate response

This avoids having to define MimeRender instances for Headers.
2021-06-10 17:10:50 +02:00
Matthias Fischmann 2f20c32704
Don't warn about necessary, expected type errors. 2020-12-06 16:03:19 +01:00
Andrey Prokopenko da0c83d318
Add URI fragment as a separate combinator (#1324) 2020-11-18 21:57:20 +03:00
fisx c1105899f4
union verbs (#1314) 2020-10-31 20:45:46 +01:00
Maxim Koltsov cb80fa6263
Add tests for custom error formatters 2020-07-17 17:10:31 +03:00
Maxim Koltsov 57f0b0b390
Make error messages from combinators configurable
Currently there is no way for Servant users to customize formatting of
error messages that arise when combinators can't parse URL or request
body, apart from reimplementing those combinators for themselves or
using middlewares.

This commit adds a possibility to specify custom error formatters
through Context.

Fixes #685
2020-07-17 17:10:31 +03:00
Oleg Grenrus 524b07224f Change build-type: Simple; run doctests on CI via haskell-ci
Don't use hspec-discover in tutorial,
so doctests work on CI
2020-01-10 01:07:31 +02:00
Ilia Rodionov 40582c40e4 add query rewriting tests and changelog item
add prs: #1249

add ps1249 changelog item
2020-01-09 15:08:24 +02:00
Catherine Galkina b440af900b Implemented NoContentVerb and server instances for it 2019-09-29 14:18:13 +03:00
jschaul a4e5707955
add test 2019-03-18 17:18:24 +01:00
Oleg Grenrus 48c5cc96a2 Split RouteApplication mega-module 2019-02-27 15:06:56 +02:00
Travis Staton 9d8a8118b8 Set http failure code priority explicitly 2019-01-06 11:02:38 -05:00
Oleg Grenrus 3001ed7990 Add mods to StreamBody 2018-11-09 21:49:53 +02:00
Oleg Grenrus 7634e08352 Make ComprehensiveAPI part of public API
We cannot simply tweak it, it will break tests of other packages.
Including packages not in this repository.
2018-11-06 13:35:47 +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 cfade67c2f Cleanup pre-GHC-8.0 stuff 2018-07-11 01:39:38 +03:00
Oleg Grenrus 374a7b88fb Deprecate S.Utils.StaticFiles in favor of S.Server.StaticFiles 2018-07-05 23:20:59 +03:00
Oleg Grenrus f9bcc15d0b Apply stylish-haskell on all modules 2018-06-29 23:36:39 +03:00
Jonathan Lange 972ed49dd4 Run `captureAllSpec`
This was missed due to an oversight.
2018-06-10 17:38:22 +01:00
Oleg Grenrus 1614ca59bf Add test for Stream status setting 2018-06-09 09:37:05 +03:00
Giovanni Cappellotto 92f8d2314e Update request content-type handling
In case that a sub-server doesn't support the content-type specified
in the request invoke `delayedFail` instead of `delayedFailFatal` in
order to give the chance to other sub-servers to handle the request.
2018-04-04 18:53:40 -04:00
Oleg Grenrus c55b778d8e Bump lower bound of http-types >= 0.12
- WIP: pending http-api-data release
- TODO: remove MIN_VERSION_http_types
- There have been 3 major releases of http-types:
  - 0.10 change name of variable
  - 0.11 lowercase escaped URIs
  - 0.12 uppercase escaped URIs
- It's easier for us to support only latest, migration from 0.9/0.10 to 0.12
  is trivial for the downstream. 0.11 may cause semantic (non-type-error) breakage somewhere.

Also allow lens-4.16, remove MIN_VERSION_http_types conditionals, and
update `stack.yaml`
2018-01-30 11:29:25 +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
Oleg Grenrus 09485871f5 Adopt http-types-0.10 2017-10-23 08:59:36 +03:00
Oleg Grenrus 15cc4f55dd Update docs related to hoistServer 2017-10-01 20:24:22 +03:00
Oleg Grenrus 24af338dea Add hoistServer to HasServer 2017-09-14 12:04:34 +03:00
Catherine Galkina be0878cdd8 Fix tests for different GHC versions 2017-06-19 18:58:25 +03:00
Catherine Galkina 272e47c3d3 Increase stack size for GHC-7.8.4 tests 2017-06-19 14:59:26 +03:00
Oleg Grenrus 705285209a Remove parentheses in ContextSpec 2017-06-03 21:44:40 +03:00
Catherine Galkina 1c6927d3f5 Fix tests for servant-server 2017-06-02 18:47:28 +03:00
Oleg Grenrus b6cfd64b5a GHC-8.2 readyness 2017-05-24 08:02:57 +03:00
David Turner f5d9983381 Rename emptyAPIServer to emptyServer 2017-05-16 15:59:41 +00:00
David Turner 937a5c98fd Add test for emptyAPIServer 2017-05-16 10:18:57 +00:00
Alexander Vieth 6389134423 Change to ServerT Raw m = Tagged m Application
For uniformity of Enter.

Previously, `ServerT Raw m ~ Application`. Seems reasonable, but has the
unfortunate consequence of making `Enter` useless for `Raw` routes.
With this change `Tagged m Application` is retagged by `Enter`.
2017-05-15 19:54:43 +03:00
Oleg Grenrus d0048057cd Merge pull request #736 from phadej/entered
Redo Enter
2017-05-05 10:17:34 +03:00
Oleg Grenrus e2665391f9 Redo Enter 2017-04-28 14:31:57 +03:00
Philipp Balzarek 08786aadbe Check for parse errors in HasServer Header instance 2017-04-06 14:52:55 +02:00
Oleg Grenrus 7ac095f19a Add test illustating that query params don't affect router grouping 2017-01-19 23:07:11 +02:00
Oleg Grenrus 58e931f48a Resolve todos 2017-01-19 11:26:50 +02:00
Philipp Balzarek 3a0cbdd0f6 throw 400 on query parameter parse failure 2017-01-19 11:09:30 +02:00
Oleg Grenrus 6527937e27 More robust testing, via resource state machine 2017-01-19 00:57:31 +02:00
Oleg Grenrus 091f6f4412 Add failing test 2017-01-19 00:57:31 +02:00
Oleg Grenrus bc6ff20f4d Use resourcet for resource managment 2017-01-19 00:57:31 +02:00
Oleg Grenrus 7793b52d23 Change JSON content type to add the charset 2017-01-18 13:40:18 +02:00
Oleg Grenrus 60ee1ab570 Rewrite delayed cleanup tests using IORefs 2017-01-18 10:26:23 +02:00