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 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
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
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
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
Alp Mestanogullari
ff6c04cf1a
update examples in servant-client. fixes #75
2015-05-14 00:52:37 +02:00
Christian Marie
13fcb4f3f1
servant: clean up some white spaces, add link explaining why Or works.
2015-05-14 00:07:57 +10:00
Alp Mestanogullari
c87b846815
Merge pull request #66 from haskell-servant/upper-bound
...
Upper bounds to base for servant-examples
2015-05-11 10:44:59 +01:00
Alp Mestanogullari
405d69d954
fix some links in the cabal descriptions
2015-05-11 10:43:52 +02:00
Alp Mestanogullari
3745446128
tweak README
2015-05-11 10:36:41 +02:00
Julian K. Arni
15a39b8a7b
Upper bounds to base for servant-examples
2015-05-10 14:38:23 +02:00
Julian K. Arni
690df4d9e0
Consistent version numbering
2015-05-10 14:10:21 +02:00
Alp Mestanogullari
e3f46ed5ce
Merge pull request #64 from haskell-servant/getting-started-examples
...
Tutorial examples
2015-05-10 13:07:31 +01:00
Alp Mestanogullari
39d114ab12
getting-started -> tutorial
2015-05-10 13:39:18 +02:00
Alp Mestanogullari
4653744706
examples: use 'random' instead of 'probable' for GS9
2015-05-10 12:20:02 +02:00