Commit graph

81 commits

Author SHA1 Message Date
Julian K. Arni
cda8bcf17c Simplify verb combinators.
Create a single 'Verb' combinator with parameters for status code and
        method. Make existing combinators type synonyms of 'Verb'.
2016-01-07 13:47:07 +01:00
Luigy Leon
17fcc25d87 add include header files to extra-source-files 2016-01-04 23:05:05 -05:00
Julian K. Arni
79d4f944a4 less OverlappingInstances noise 2016-01-04 13:09:11 -05:00
Julian K. Arni
a4a0f1988b Bump wai and warp upper bound to < 3.3. 2016-01-04 17:21:14 +01:00
Philipp Kant
da5c273640 Relaxed upper version bound for http-api-data ...
... in order to include http-api-data-0.2.1, which is currently in LTS
Haskell (lts-3.16).
2015-12-03 14:13:50 +01:00
Simon Hengel
4e53e2083b Use tinc on travis 2015-11-05 09:32:13 +08:00
Julian K. Arni
9c12b7839b 7.8 routing fixes, -Wall, cleanup, changelog. 2015-10-26 16:56:46 +01:00
Andres Loeh
1398d1f5e1 More systematic approach to delayed checks.
This introduces a `Delayed` type in `RoutingApplication.hs` that
contains a handler together with delayed checks. There are several
blocks of delayed checks, so that we can ultimately execute them in the
order we desire.

The process is documented in more detail in `RoutingApplication.hs`.
2015-10-26 16:56:25 +01:00
Julian K. Arni
ccadba81ec Cleanup errorspec description of routing, changelog.
Review fixes
2015-10-26 16:55:13 +01:00
Julian K. Arni
a3b5652ab9 Refactor RouteResult.
Fix rerouting tests
        Fix 405 > 404 issue with Capture.
        Remove ServantErrWithPriority and Monoid instance
        More tests
        Update auth-combinator for routing changes
2015-10-26 16:54:49 +01:00
Julian K. Arni
153de01a62 Error retry tests
Mime[Un]Render instances for PlainText String
        pragmas and formatting
2015-10-26 16:54:28 +01:00
Julian K. Arni
9c62a3b150 Error order tests 2015-10-20 12:41:32 +02:00
Julian K. Arni
c22b5d1938 Changelogs for matrix params 2015-10-13 21:46:52 +02:00
Julian K. Arni
afc76b8f6c Remove MatrixParam.
In servant, servant-server, and servant-client.
2015-10-13 21:37:07 +02:00
Julian K. Arni
72acd1a19d Bump upper bound for http-types. 2015-10-13 20:53:56 +02:00
Matthias Fischmann
8f01efd599 Export tweakResponse from non-internal module; better haddock comment. 2015-10-12 21:58:06 +02:00
Matthias Fischmann
dd1d30843b Test case for tweakResponse. 2015-10-12 21:58:04 +02:00
Matthias Fischmann
f953d05212 Whitespace. 2015-10-12 21:47:50 +02:00
Matthias Fischmann
d106ed9c9f Use Functor class for functor business. 2015-10-12 21:47:47 +02:00
Matthias Fischmann
96f10add65 fmapRouter. 2015-10-12 17:06:43 +02:00
Alp Mestanogullari
5a032383bc update servant-server README 2015-10-10 19:31:03 +02:00
Nickolay Kudasov
2a7d110c17 Add version bounds for http-api-data 2015-10-08 16:21:02 +03:00
Nickolay Kudasov
dfb5cc7713 Update changelogs 2015-10-08 01:15:30 +03:00
Nickolay Kudasov
63a36e3b4e Fix warning 2015-10-08 00:57:18 +03:00
Nickolay Kudasov
40d2c68897 Use http-api-data package instead of ToText/FromText 2015-10-08 00:38:47 +03:00
Julian K. Arni
3c3efda0d5 Extra file 2015-09-23 20:18:52 +02:00
Julian K. Arni
965063171b Janitoring 2015-09-23 20:18:52 +02:00
Julian K. Arni
2be621871d Document octet-stream default RFC. 2015-09-15 17:24:37 +02:00
Index Int
c5257f42ab Depend on transformers-compat 2015-09-12 16:28:20 +03:00
Index Int
f2f7b061d2 Drop EitherT in favor of ExceptT 2015-09-12 15:11:24 +03:00
Jonathan Lange
6a35a0ae7a Remove auto-generated nix files 2015-09-08 20:36:54 +01:00
Jonathan Lange
a265fd31a0 Run of update-nix-files.sh 2015-09-08 20:28:47 +01:00
Julian K. Arni
6eb7add53a stylish haskell changes
And import fix.
2015-08-18 00:07:12 +02:00
Julian K. Arni
98b6e85128 Contributing 2015-08-17 23:50:42 +02:00
AndrewRademacher
e780e445cb Bumped aeson version. 2015-08-06 13:40:18 -05:00
Brandon Martin
050aa21b9d Response with Head to all Get requests
Signed-off-by: Brandon Martin <zmbmartin@gmail.com>
2015-08-01 07:58:56 -06:00
Brandon Martin
b40094d01c convenience scripts and nix updates 2015-07-30 08:09:29 -06:00
Julian Arni
522a7dc961 Merge pull request #165 from haskell-servant/jkarni/bump-warp
Bump warp upper bound.
2015-07-30 10:44:35 +02:00
Julian K. Arni
1c9d5baa99 Bump versions to 0.5 2015-07-27 22:26:49 +02:00
Sönke Hahn
e24cb9ddf6 add stack file 2015-07-26 17:25:07 +08:00
Julian K. Arni
42d73d10e6 Bump warp upper bound.
To < 3.2.
2015-07-23 13:31:37 +02:00
Alp Mestanogullari
3209f98985 Merge pull request #141 from haskell-servant/new-combinators
Add HttpVersion, IsSecure, RemoteHost and Vault combinators with inst…
2015-07-10 15:00:19 +02:00
Alp Mestanogullari
f39d57c6b3 add HttpVersion, IsSecure, RemoteHost and Vault combinators with instances for all interpretations (all but the server ones being 'ignore that combinator')
tighter version bounds for network

cleanup

document the new combinators

servant-server: add some tests for HttpVersion, IsSecure, RemoteHost and Vault

update changelogs

address Julian's feedback

remove vault test in servant-server

servant-server tests: -Werror friendly
2015-07-10 14:00:01 +02:00
Julian K. Arni
5db91c9ecb Cabal file fixes 2015-07-09 23:34:21 +02:00
Julian K. Arni
d5091a68e1 Bump string-conversions 2015-06-04 15:09:01 +02:00
Alp Mestanogullari
d654ccaf3d Merge pull request #111 from haskell-servant/improved-routing
Improved routing
2015-06-04 12:57:45 +01:00
Andres Loeh
31b12d4bf4 Refactoring: abstracting common parts of method handlers.
This change makes an attempt of abstracting out some of the common
functionality found in the handlers for the different request methods.
There's still a bit of code duplication between the cases for headers
and no headers and empty responses. But it's a significant relative
improvement already.
2015-06-04 13:14:51 +02:00
Andres Loeh
eb86a82105 Refactoring: one module per concept.
The main `Server.Internal` module was getting a bit large for my taste.
It now contains just the instances. All the administrative utilities
are in their own dedicated modules.
2015-06-04 13:14:31 +02:00
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