Commit Graph

1081 Commits

Author SHA1 Message Date
Sergio Benitez
10f267a56d Add 'ConfigError::Missing' to identify missing config keys. 2018-08-14 10:31:54 -07:00
Sergio Benitez
d699827079 Reexport new 'serde_json::json_internal_vec' macro. 2018-08-14 09:53:04 -07:00
Sergio Benitez
e0961e0750 Require all 'AdHoc' fairings to be named. 2018-08-14 09:14:06 -07:00
messense
589743579a Fix benchmark compilation. 2018-08-13 15:51:42 -07:00
Sergio Benitez
ec130f96ee Implement a 'StaticFiles' custom handler in contrib.
Closes #239.
2018-08-13 02:17:50 -07:00
Sergio Benitez
4098ddd92f Improve templates contrib test by reusing code. 2018-08-13 02:14:16 -07:00
Sergio Benitez
651c202060 Move 'SegmentError' into 'uri' module. 2018-08-13 02:14:16 -07:00
Sergio Benitez
948a9e6720 Move 'Request::local_cache()' method for nicer docs. 2018-08-13 02:14:16 -07:00
Sergio Benitez
7abfaafcf9 Emit a helpful error when 'LocalRequest' is malformed. 2018-08-13 02:14:16 -07:00
Sergio Benitez
4010a967a6 Allow any 'T: Into<Vec<Route>>' to be mounted. 2018-08-13 02:14:12 -07:00
Sergio Benitez
29c9cffdbe Implement dynamic request handling via 'Handler' trait. 2018-08-12 02:13:42 -07:00
Sean Stangl
9bf585496c Apply more Clippy suggestions. 2018-08-11 23:41:35 -07:00
Sergio Benitez
0612c644ad Fix typo in 'Template::finalize()' docstring. 2018-08-11 23:17:22 -07:00
Ryan
995603666f Force close only the read end of connections.
Previously, when a request's body data exceeded the expected length,
Rocket would shutdown both ends of the corresponding connection. This PR
changes the behavior so that only the read end of the connection, on
Rocket's side, is shutdown. This allows a response to be sent in the
future while still preventing DoS attacks due to exuberant data.

Fixes #386.
2018-08-11 23:10:13 -07:00
Sergio Benitez
f941b1310b Improve template engine customization docs. 2018-08-10 23:29:12 -07:00
jeb
491b04cf5a Implement template auto-reload.
Resolves #163.
2018-08-10 23:29:12 -07:00
Sergio Benitez
83cead775f Fix 'Error' associated type for 'Result<T, T::Error>'. 2018-08-10 19:14:39 -07:00
Sergio Benitez
fe59a7fe38 Use better types for 'Error' associated types. 2018-08-10 04:42:30 -07:00
kryptan
d9bfc9b104 Implement 'Responder' for '&[u8]'. 2018-08-07 23:58:54 -07:00
Sergio Benitez
b5a4e18b0e Remove outdated lint information in state guide.
Closes #389.
2018-08-07 23:55:25 -07:00
Sergio Benitez
41f0614b14 Update request-local state documentation. 2018-08-07 23:16:16 -07:00
jeb
d1cfdbaa8e Add documentation and examples for request-local state.
Closes #654.
2018-08-07 19:40:30 -07:00
Marc Mettke
cd776d5b6a Add 'and_then', 'failure_then', and 'forward_then' methods to 'Outcome'. 2018-08-07 18:55:04 -06:00
Sergio Benitez
d7f6d82fe4 Implement 'FromForm[Value]', 'Responder' proc-macro derives.
This completes the migration of custom derives to proc-macros, removing
the need for the `custom_derive` feature in consumer code. This commit
also includes documentation, unit tests, and compile UI tests for each
of the derives.

Additionally, this commit improves the existing `FromForm` and
`FromFormValue` derives. The generated code for `FromForm` now returns
an error value indicating the error condition. The `FromFormValue`
derive now accepts a `form` attribute on variants for specifying the
exact value string to match against.

Closes #590.
Closes #670.
2018-08-06 19:58:07 -07:00
Sergio Benitez
b0f86dcba0 Fix URI normalization checks in 'Rocket::mount()'. 2018-07-29 18:40:24 -07:00
Sergio Benitez
56c6a96f6a Overhaul URI types.
This is fairly large commit with several entangled logical changes.

The primary change in this commit is to completely overhaul how URI
handling in Rocket works. Prior to this commit, the `Uri` type acted as
an origin API. Its parser was minimal and lenient, allowing URIs that
were invalid according to RFC 7230. By contrast, the new `Uri` type
brings with it a strict RFC 7230 compliant parser. The `Uri` type now
represents any kind of valid URI, not simply `Origin` types. Three new
URI types were introduced:

  * `Origin` - represents valid origin URIs
  * `Absolute` - represents valid absolute URIs
  * `Authority` - represents valid authority URIs

The `Origin` type replaces `Uri` in many cases:

  * As fields and method inputs of `Route`
  * The `&Uri` request guard is now `&Origin`
  * The `uri!` macro produces an `Origin` instead of a `Uri`

The strict nature of URI parsing cascaded into the following changes:

  * Several `Route` methods now `panic!` on invalid URIs
  * The `Rocket::mount()` method is (correctly) stricter with URIs
  * The `Redirect` constructors take a `TryInto<Uri>` type
  * Dispatching of a `LocalRequest` correctly validates URIs

Overall, URIs are now properly and uniformly handled throughout Rocket's
codebase, resulting in a more reliable and correct system.

In addition to these URI changes, the following changes are also part of
this commit:

  * The `LocalRequest::cloned_dispatch()` method was removed in favor of
    chaining `.clone().dispatch()`.
  * The entire Rocket codebase uses `crate` instead of `pub(crate)` as a
    visibility modifier.
  * Rocket uses the `crate_visibility_modifier` and `try_from` features.

A note on unsafety: this commit introduces many uses of `unsafe` in the
URI parser. All of these uses are a result of unsafely transforming byte
slices (`&[u8]` or similar) into strings (`&str`). The parser ensures
that these casts are safe, but of course, we must label their use
`unsafe`. The parser was written to be as generic and efficient as
possible and thus can parse directly from byte sources. Rocket, however,
does not make use of this fact and so would be able to remove all uses
of `unsafe` by parsing from an existing `&str`. This should be
considered in the future.

Fixes #443.
Resolves #263.
2018-07-29 00:17:33 -07:00
Sergio Benitez
c04655f290 Remove unnecessary code in codegen_next. 2018-07-27 21:03:33 -07:00
jeb
706cd32053 Use absolute paths in 'FromFormValue' derive.
This resolves a warning introduced in rust-lang/rust#51952 that will
eventually become a hard error, the latter of which is being tracked
in rust-lang/rust#50504.
2018-07-25 15:55:41 -07:00
Sean Stangl
a7cc5542ab Fix various clippy warnings in core and codegen. 2018-07-25 15:28:35 -07:00
jeb
1d1d5259ad Fix compatibility warnings and errors in examples. 2018-07-25 09:01:29 -06:00
Sergio Benitez
aaad4f5c57 Remove use of 'unsafe' in 'Fairings'. 2018-07-22 22:00:20 -07:00
Sergio Benitez
f8c36f5c67 Update 'diesel', 'parking_lot', and 'rand' dependencies in 'todo' example. 2018-07-22 21:59:40 -07:00
Sergio Benitez
9405fc9055 Update 'rand' dependency in 'pastebin' example. 2018-07-22 21:59:40 -07:00
Sergio Benitez
49365d5fdf Update 'handlebars' to 1.0. 2018-07-22 21:59:40 -07:00
Sergio Benitez
cee3bbca30 Use git version of compiletest while release is broken. 2018-07-22 21:59:40 -07:00
Sergio Benitez
e25a82b14b Update dependencies for ring 0.13. 2018-07-22 21:59:40 -07:00
jeb
0c80217289 Fix various spelling and grammar issues in core and contrib. 2018-07-20 22:14:58 -06:00
Sergio Benitez
19d8569cdb Update core, codegen for 2018-07-16 nightly. 2018-07-17 14:06:32 -07:00
Sergio Benitez
f6e48fa001 Update CHANGELOG for 0.3.15. 2018-07-16 14:31:06 -07:00
Sergio Benitez
9c7b868371 Update codegen for 2018-07-15 nightly. 2018-07-16 14:30:20 -07:00
Sergio Benitez
a3206c751c Use a better link for site license in README. 2018-07-11 17:40:46 -07:00
Sergio Benitez
18a91c938e Reexport 'cookie::SameSite' from the http module. 2018-07-10 17:09:24 -07:00
Sergio Benitez
5acb08a026 Make contrib MsgPack tests actually run. 2018-07-10 17:08:58 -07:00
Sergio Benitez
0045486227 Implement Serialize + Deserialize for contrib JsonValue. 2018-07-10 17:08:26 -07:00
Sergio Benitez
39c952f8eb Clean up 'TemplateMetadata' implementation. 2018-07-10 17:07:53 -07:00
Marc Mettke
c381386098 Add 'TemplateMetadata' request guard to contrib.
The request guard allows a user to query information about loaded
templates. In particular, a user can check whether a template was
loaded.
2018-07-10 15:11:43 -07:00
Sergio Benitez
5e2502f028 Add leading underscore to avoid unused warning. 2018-07-07 19:10:50 -07:00
Sergio Benitez
69683dddd7 Mask emoji in the 'catchers' info log. 2018-07-07 19:01:00 -07:00
Sergio Benitez
351b8f7c37 Small fixes to request-local state cache implementation. 2018-07-07 18:52:03 -07:00
Ville Hakulinen
97c6b3ace8 Implement Request-Local State Cache.
Resolves #654.
2018-07-07 18:41:21 -07:00