Commit Graph

672 Commits

Author SHA1 Message Date
Sergio Benitez
82ec8ee739 Use bash from env, not /usr/bin. 2017-04-06 22:04:32 -07:00
Sergio Benitez
982997dbad Add Rocket::routes() method to get all routes. Add some internal benchmarks. 2017-04-05 01:19:33 -07:00
Sergio Benitez
5259e3fd5c Disallow invalid form field names. 2017-04-04 17:00:48 -07:00
Sergio Benitez
7c19bf784d Allow form field renaming via #[form(field = "name")] attribute. 2017-04-03 19:06:30 -07:00
Sergio Benitez
351658801e Allow unreachable_code in generated route functions for new ! error types. 2017-04-03 16:46:13 -07:00
Sergio Benitez
f5ec470a7d Use the RawStr type for raw parameter strings.
This is a breaking change.

The `&str` type no longer implements `FromParam`. The `&RawStr` type
should be used in its place.
2017-03-31 00:18:58 -07:00
Sergio Benitez
cff9901940 Implement FromData for Vec<u8>. 2017-03-30 23:17:28 -07:00
Sergio Benitez
0c44e44641 Use the RawStr type for all form raw strings.
This is a breaking change.

This commit introduces `RawStr` to forms. In particular, after this
commit, the `&str` type no longer implements `FromFormValue`, and so it
cannot be used as a field in forms. Instad, the `&RawStr` can be used.

The `FormItems` iterator now returns an `(&RawStr, &RawStr)` pair.
2017-03-30 23:06:53 -07:00
Sergio Benitez
f57d984e2e New version: 0.2.4. 2017-03-30 19:56:12 -07:00
Sergio Benitez
f7bc1ce24f Update codegen for latest nightly. 2017-03-30 19:56:12 -07:00
Sergio Benitez
10306c3b7e Clarify segment handling for '..'. 2017-03-30 18:15:36 -07:00
Sergio Benitez
df19ef74db Add RawStr::url_decode. 2017-03-30 18:15:15 -07:00
Sergio Benitez
709acf18a4 Initial implementation of RawStr. 2017-03-30 17:56:24 -07:00
Sergio Benitez
b49c89af7a Rename UncasedAscii and UncasedAsciiRef to Uncased and UncasedStr. 2017-03-30 15:38:51 -07:00
Sergio Benitez
301257623c Update diesel and rusqlite example dependencies. 2017-03-30 02:02:09 -07:00
Sergio Benitez
dd3c03a83a Use sudo: required to get a VM with higher specs on Travis. 2017-03-30 02:01:49 -07:00
Sergio Benitez
d4b9360f57 Remove the '...' in the launch message. 2017-03-30 00:14:45 -07:00
Ryan Leckey
ff3193a22a Fix spelling in Method docs: ff -> if. 2017-03-29 23:50:12 -07:00
Sergio Benitez
2e78afbc93 Don't use a cache for Travis to prevent memory exhaustion. 2017-03-29 23:36:54 -07:00
Sergio Benitez
cb21fbf6af Small typo: parse -> parsed. 2017-03-29 21:06:15 -07:00
Sergio Benitez
8f997a2a39 Rewrite some markdown for commonmark. 2017-03-29 19:05:49 -07:00
Sergio Benitez
7d48944080 Handle specificity based preferences in Accept. Allow 3 decimals in q parameter. 2017-03-29 18:18:30 -07:00
Sergio Benitez
b102a6a497 Implement FromRequest for Accept. 2017-03-29 04:21:18 -07:00
Sergio Benitez
c58ca894b7 Initial implementation of content negotiation via Accept.
This is a breaking change.

This commit changes the meaning of the `format` route attribute when
used on non-payload carrying requests (GET, HEAD, CONNECT, TRACE, and
OPTIONS) so that it matches against the preferred media type in the
`Accept` header of the request. The preferred media type is computed
according to the HTTP 1.1 RFC, barring a few specificty rules to come.
2017-03-29 04:08:53 -07:00
Sergio Benitez
fb29b37f30 Reorganize extra request state. Add 'accept' and 'accept_first' methods to Request. 2017-03-28 03:10:18 -07:00
Sergio Benitez
1fb1cdfc58 Use MediaType instead of ContentType for Route format. 2017-03-28 00:12:59 -07:00
Sergio Benitez
9160483554 A route with unspecified query parameters accepts any.
This is a breaking change. It modifies collisions with respect to query
parameters as well as the default ranking of routes.

A route that does not specify query parameters will now match against
requests with _and without_ query parameters, assuming all other
elements of the route match as well. A route that _does_ specify query
parameters will only match requests with query parameters; this remains
true.

To accommodate this change in the most natural manner possible, the
default rankings of routes have changed as illustrated below:

  |-------------+-------+----------+---------------|
  | static path | query | new rank | previous rank |
  |-------------+-------+----------+---------------|
  | yes         | yes   | -4       | 0             |
  | yes         | no    | -3       | 0             |
  | no          | yes   | -2       | 1             |
  | no          | no    | -1       | 1             |
  |-------------+-------+----------+---------------|

In other words, the most specific routes, with preference for paths over
queries, are ranked highest (lower number).
2017-03-27 03:52:26 -07:00
Sergio Benitez
c09644b270 Add the Accept ContentType structure. 2017-03-27 01:53:45 -07:00
Sergio Benitez
13359d4f50 Reformulate ContentType as a wrapper around MediaType. 2017-03-23 22:41:42 -07:00
Sergio Benitez
605e8fdc0e Update Tera to 0.8. 2017-03-23 15:28:49 -07:00
Sergio Benitez
d2c49e02c3 Fix 'Response::join' docs. 2017-03-23 03:56:02 -07:00
Sergio Benitez
e006f3f83e Spruce up MediaType docs. Use new Pear features in MediaType parser. 2017-03-23 03:28:53 -07:00
Sergio Benitez
09550b6e7c New version: 0.2.3. 2017-03-22 19:47:52 -07:00
Sergio Benitez
bf67a32cd9 Update minimum rustc version for codegen. 2017-03-22 18:57:46 -07:00
Sergio Benitez
22062d1bbe Remove spurious new line. 2017-03-22 18:57:14 -07:00
Sergio Benitez
ae201b1577 Remove pub_restricted feature: it's stable! 2017-03-21 20:34:01 -07:00
Sergio Benitez
7076ae3c1d Move parsing tests to parse module. 2017-03-21 20:30:56 -07:00
Sergio Benitez
d09b4138d9 Implement the (currently unused) MediaType struct. 2017-03-21 02:04:07 -07:00
Sergio Benitez
7808ad1649 Update codegen for latest nightly. 2017-03-20 13:55:40 -07:00
Sergio Benitez
ec92046d3a Clarify that rocket::launch doesn't return on success. 2017-03-16 00:51:28 -07:00
Sergio Benitez
65da988962 Return a LaunchError from launch when launching fails.
This is a (minor) breaking change. If `rocket.launch()` is the last expression
in a function, the return type will change from `()` to `LaunchError`. A simple
workaround that preserves the previous functionality is to simply add a
semicolon after `launch()`: `rocket.launch();`.

resolves #34
2017-03-15 22:10:09 -07:00
Sergio Benitez
da157a061d Don't use hyper directly in request tests. 2017-03-15 20:30:07 -07:00
Alan Stoate
9d10aa2329 Update Catcher example: returns Status::NotFound on 404. 2017-03-15 19:39:22 -07:00
Sergio Benitez
7139941e04 Ensure no files have trailing whitespace. 2017-03-15 19:26:15 -07:00
Sergio Benitez
ca30e5e901 Cleanup request tests; move into separate file. 2017-03-15 19:20:20 -07:00
Scott Schroeder
47fe659ebe Preserve multiple incoming header values. 2017-03-15 18:25:37 -07:00
Sergio Benitez
5434f467a9 Check msgpack example version to 0.0.0. 2017-03-08 17:56:08 -08:00
Ryan Leckey
5086f0eb01 Default generic T in JSON to Value. 2017-03-08 17:53:05 -08:00
Artem Biryukov
c465109fb4 Add get_slice and get_table methods to Config. 2017-03-08 15:31:43 -08:00
Sergio Benitez
ca2bde6386 Slight cleanup of manual_routes example. 2017-03-08 15:22:36 -08:00