Andres Loeh
404bfdd89c
Add test cases for the priority of error codes.
...
Due to the delayed treatment of checks during the server interpretation,
we now have the ability to produce "better" error codes for certain
APIs. This change introduces test cases for some of these situations and
their new, desired results. These tests would mostly fail with the old
approach to routing.
2015-06-04 13:10:21 +02:00
Andres Loeh
f9b1e7fc50
Switch server interpretation to a datatype for efficiency.
...
Instead of directly interpreting a server as a `RoutingApplication`,
this change introduces the concept of a `Router`, which is a datatype
with several constructors.
In particular, the type of the `route` function changes from
route :: Proxy layout -> Server layout -> RoutingApplication
to
route :: Proxy layout -> IO (RouteResult (Server layout)) -> Router
Most important in practice is the case of the `StaticRouter` constructor
in `Router`. For choices between statically known paths, we can now use
a lookup table to dispatch requests rather than trying each request
individually.
This brings down routing complexity of a common case from
O(n) to O(log n).
Another important change is that the handler that is passed down by
`route` is no longer of type `Server layout`, but of type
`IO (RouteResult (Server layout))`. This means that API constructs
can "delay" checks and failure. For example, `ReqBody` does not have
to fetch the request body and feed it to the handler immediately; it
can instead record these actions in the handler that is passed down.
The code will only be executed at a leaf / endpoint of the API.
This is desired behaviour: We prefer to save work by doing all matching
on static path components first. Furthermore, we get better error codes
by doing so.
2015-06-04 13:07:53 +02:00
Julian Arni
2725e20a1a
Merge pull request #110 from bgamari/master
...
Bump aeson bound
2015-06-03 15:32:18 +02:00
Ben Gamari
74a52df1a1
API.Capture: Fix haddocks
2015-06-03 07:13:49 -04:00
Ben Gamari
939a008b67
Bump aeson bound
2015-06-03 06:53:34 -04:00
Julian K. Arni
0b3291970f
Bump to 0.4.1
2015-05-29 16:24:08 +02:00
Alp Mestanogullari
9f1cb63206
fix HTML content types in haddocks
2015-05-29 16:08:14 +02:00
Alp Mestanogullari
db8cf8bd8d
Merge pull request #106 from haskell-servant/jkarni/bump-either
...
Bump 'either' upper-bound
2015-05-29 14:56:45 +01:00
Julian K. Arni
ce012da4ee
Bump 'either' upper-bound
2015-05-29 14:37:10 +02:00
Alp Mestanogullari
d785b7ff0f
Merge pull request #105 from haskell-servant/jkarni/fix-docs
...
Fix outdated docs
2015-05-29 10:56:06 +01:00
Pierre Radermecker
3bcbe80c37
Fix for GHC-7.8.x
2015-05-29 11:13:10 +02:00
Julian K. Arni
5de9daf528
Fix outdated docs
2015-05-29 10:59:24 +02:00
Julian Arni
69936280b0
Merge pull request #102 from haskell-servant/jkarni/bound-for-servant-examples
...
Add servant bounds for servant-examples.
2015-05-28 12:31:26 +02:00
Julian K. Arni
7976468a32
Add servant bounds for servant-examples.
2015-05-28 11:22:43 +02:00
Alp Mestanogullari
c6467e2e70
Merge pull request #100 from haskell-servant/jkarni/servant-changelog
...
Update servant changelog
2015-05-27 15:32:59 +01:00
Alp Mestanogullari
0c5ae32518
Merge pull request #99 from haskell-servant/jkarni/bump-attoparsec
...
Bump attoparsec
2015-05-27 15:32:39 +01:00
Pierre Radermecker
520519bca9
Remove deps on HttpException from http-client
2015-05-27 15:36:28 +02:00
Pierre Radermecker
15b54cf1d0
Add AutoDeriveTypeable for ghc < 7.10
2015-05-27 15:36:28 +02:00
Pierre Radermecker
076286c37b
Add a Exception instance for ServantError
2015-05-27 15:36:28 +02:00
Pierre Radermecker
717b18df4e
Use MonadThrow instead of Either in the signature of parseBaseUrl
2015-05-27 15:36:28 +02:00
Julian K. Arni
35e7e386a5
Update servant changelog
2015-05-27 15:33:25 +02:00
Julian K. Arni
28387b7804
Update changelog
2015-05-27 15:29:34 +02:00
Julian K. Arni
2bff26feca
Bump attoparsec
2015-05-27 15:19:30 +02:00
Julian Arni
de813c3269
Merge pull request #95 from haskell-servant/tvh/safeLink-92
...
More strict matching for Capture (safeLink)
2015-05-27 13:27:06 +02:00
Timo von Holtz
0f4c73bffe
Make safeLink safer ( #92 )
2015-05-27 11:29:08 +10:00
Julian Arni
0a6e2aaf61
Merge pull request #96 from haskell-servant/jkarni/missing-test-modules
...
Add missing servant-client test modules
2015-05-26 12:34:55 +02:00
Julian Arni
cfd0b0d827
Merge pull request #97 from haskell-servant/jkarni/bump-version-script
...
Add bump-versions script
2015-05-26 12:22:30 +02:00
Julian Arni
3e10ee8a69
Merge pull request #72 from codedmart/deleteFix
...
Allow zero content types on delete. fixes #69
2015-05-26 12:19:23 +02:00
Julian K. Arni
49289ecbb4
Add bump-versions script
2015-05-26 12:18:26 +02:00
Julian K. Arni
f7b2232818
Add missing servant-client test modules
2015-05-26 12:07:44 +02:00
Timo von Holtz
ed7d235b26
Don't export HttpException
2015-05-25 17:51:35 +10:00
Alp Mestanogullari
5c25c56d50
Merge pull request #84 from haskell-servant/wip-json-decode-eof
...
fix a bug in our `eitherDecodeLenient` function
2015-05-23 12:56:31 +01:00
Julian Arni
763928cd66
Merge pull request #82 from triplepointfive/drop-system-filepath
...
Add support for wai-app-static-3.1.0
2015-05-18 12:55:40 +02:00
Brandon Martin
b45ac07ece
HasClient instance for Delete cts' () now does not care at all about content types provided
2015-05-17 07:51:49 -06:00
Alp Mestanogullari
09e525fc76
Merge pull request #85 from haskell-servant/wip-better-error-doctest-failure
...
servant, servant-server: handle corner case in doctests, add an helpful error message
2015-05-16 09:49:05 +01:00
Alp Mestanogullari
e59c03faa2
Merge pull request #74 from haskell-servant/wip-whitespace-comment
...
servant: clean up some white spaces, add link explaining why Or works.
2015-05-16 08:28:28 +01:00
Christian Marie
54131821a5
servant: allow whitespace before JSON
2015-05-16 12:58:53 +10:00
Christian Marie
ec55177796
servant, servant-server: handle corner case in doctests
...
They seem to encounter multiple sandboxes sometimes, we now provide a more
helpful error if that happens. Didn't look into why this happens.
2015-05-16 12:45:08 +10:00
Christian Marie
43d0620403
servant: allow whitespace after parsing JSON
...
This includes some de-duplication in the test suite.
2015-05-16 11:13:41 +10:00
Ilya Smelkov
7e14eeafe9
Use filepath to add trailing path separator
2015-05-16 01:03:48 +03:00
Julian K. Arni
c41267811e
CPP for support for all 3.X versions of wai-app-static
2015-05-16 01:01:55 +03:00
Christian Marie
955261ddd3
Merge pull request #77 from haskell-servant/update-examples
...
Update examples for servant-docs and servant-client
2015-05-15 20:36:25 +10:00
Christian Marie
13a8813422
Merge pull request #78 from haskell-servant/wip-fix-test-all-script
...
scripts: install all of the servant ecosystem at once, for consistent dependencies
2015-05-15 15:49:03 +10:00
Christian Marie
28647c0ac1
Merge branch 'wip-fix-test-all-script' into update-examples
2015-05-15 11:04:56 +10:00
Christian Marie
d1b904372d
Move comment out of haddocks.
2015-05-15 10:37:18 +10:00
Christian Marie
1e9a5eedb9
Merge branch 'wip-fix-test-all-script' into wip-whitespace-comment
2015-05-15 10:36:16 +10:00
Christian Marie
b5e558f783
Merge pull request #79 from haskell-servant/shahn/wip-fix-test-all-script
...
fix doctests for cabal-install-1.18
2015-05-14 23:16:10 +10:00
Sönke Hahn
0d47f4527b
fix doctests for cabal-install-1.18
2015-05-14 19:47:39 +08:00
Christian Marie
07f8b6a28a
scripts: install all of the servant ecosystem at once, for consistent dependencies
2015-05-14 12:35:35 +10:00
Alp Mestanogullari
46d48946b0
update examples for servant-docs. fixes #76
2015-05-14 01:01:41 +02:00