Commit Graph

494 Commits

Author SHA1 Message Date
Linus Heckemann
c63bb67fb9 Avoid sorting routes on every add. 2017-08-29 17:24:09 -07:00
Sergio Benitez
4df7ce6bf5 Propogate route names through codegen to runtime.
This commit modifies `codegen` so that a route's name (the name of the
route handler) is stored in the generated static route information
structure and later propogated into the corresponding `Route`
structure.

The primary advantage of this change is an improvement to debug and
error messages which now include route names. The collision error
message, in particular, has been improved dramatically in this commit.
Additionally, the `LaunchError::Collision` variant now contains a
vector of the colliding routes.
2017-08-20 10:55:23 -07:00
adrian5
f66780bd9e Add missing comma in 'FromParam' docs. 2017-08-14 11:49:59 -07:00
Sergio Benitez
31cbe65704 Fix example in 'Request::guard()' documentation.
Resolves #378.
2017-08-13 03:13:20 -07:00
Daiki Mizukami
667a057e39 Add 'Box' conversion methods to 'UncasedStr'. 2017-08-13 02:17:53 -07:00
Sergio Benitez
6f180d9d7c Require 'yansi' 0.3.3. 2017-08-11 10:09:23 -07:00
Sergio Benitez
3f6c6fd576 Move to 0.4.0-dev on master. 2017-08-11 09:32:27 -07:00
Sergio Benitez
721f6204ea Update lints for latest nightly, '2017-08-10'. 2017-08-11 09:14:54 -07:00
Sergio Benitez
9108e79fb9 Fix typo in 'Limits' docs: anf -> and. 2017-08-04 20:21:21 -07:00
Sergio Benitez
0b7d9f4602 Remove unused doc comments. 2017-08-02 17:48:00 -07:00
Ian Létourneau
84fe23a9fb Fix spelling of "corresponding" in 'status' docs. 2017-07-27 01:58:25 -04:00
Sergio Benitez
b276e1d51f Enable ASCII escape sequences in Windows consoles. 2017-07-26 22:54:45 -04:00
Sergio Benitez
3abc813605 Use 'AtomicIsize', not 'Cell', in URI. 2017-07-21 17:00:38 -04:00
Christian Legnitto
362afdc445 Fix spelling of "instantiated" in rustdocs. 2017-07-18 09:35:37 -04:00
Flarp
69afb5c4a3 Fix typo in 'NotFound' docs: 404, not 400. 2017-07-17 14:10:52 -04:00
Tommy Ip
ae406cf0ca Fix 'clusure' typo in fairings guide and ad_hoc.rs.
Fixes #348.
2017-07-15 00:36:41 -07:00
Stuart Hinson
b3f41f248c Update 'Fairing' example to reflect doc's content. 2017-07-15 00:35:25 -07:00
Sergio Benitez
cdacda0896 New version: 0.3.0. 2017-07-14 11:30:48 -07:00
Sergio Benitez
51a465f2cc Add regression test for issue #345. 2017-07-14 09:54:11 -07:00
Yong Wen Chua
10efcb1af9 Always implement 'Responder' with 'r instead of 'static. 2017-07-14 09:43:22 -07:00
Sergio Benitez
722959ee29 Use a parametric lifetime in 'Responder' example. 2017-07-14 09:42:33 -07:00
Sergio Benitez
897313730d Use TitleCase for all 'content::' struct names. 2017-07-12 15:21:45 -07:00
Sergio Benitez
65886c8c4e Rename 'contrib::JSON' to 'contrib::Json'. 2017-07-12 15:11:41 -07:00
Sergio Benitez
70bc97c322 Rename 'APIKey' in example docs to 'ApiKey'. 2017-07-12 14:53:08 -07:00
Sergio Benitez
0bbfa5e21a Update 'version_check' to 0.1.3. 2017-07-12 04:15:30 -07:00
Sergio Benitez
85846c2af1 Use 'hyper_sync_rustls' for hyper/rustls interop. 2017-07-12 04:13:46 -07:00
Sergio Benitez
4609413828 Update 'pear' and 'pear_codegen' to 0.0.10. 2017-07-12 04:07:55 -07:00
Sergio Benitez
5a632a4d27 Always log a request's 'format' when available. 2017-07-11 04:35:05 -07:00
Sergio Benitez
7e0cbe4842 Restrict compilation to rustc >= 2017-07-09. 2017-07-09 22:34:29 -07:00
Sergio Benitez
6050eb5169 Update for 2017-07-09. 'associated_consts' is stable. 2017-07-09 22:00:01 -07:00
Sergio Benitez
90d85d3c06 Implement 'Fairing' for 'Arc<T>'. Fix various doc issues. 2017-07-06 20:48:25 -07:00
Sergio Benitez
58445be4ff Add 'LocalRequest' cookies as original. 2017-07-04 14:51:00 -07:00
Sergio Benitez
6df5564983 Fix 'IntoOutcome' implementations for 'Option' and 'Result'.
Fixes #334.
2017-07-04 14:05:16 -07:00
Sergio Benitez
462f1f9298 Add a 'status::NotFound' responder. 2017-07-04 02:43:00 -07:00
Sergio Benitez
436bd99376 Use a streamed 'Responder' body for 'File', as before. 2017-07-04 01:34:43 -07:00
Sergio Benitez
da9bf1189f Add variant checker methods to 'StatusClass'. 2017-07-04 01:33:52 -07:00
Sergio Benitez
15c2ef7aaa Derive 'PartialOrd', 'Ord', and 'Hash' for 'State'. 2017-07-03 15:39:24 -07:00
Sergio Benitez
a94dc9a270 Document 'IntoOutcome'. 2017-07-03 15:29:12 -07:00
Sergio Benitez
00df2846d7 Improve 'State' docs. 2017-07-03 15:13:21 -07:00
Sergio Benitez
9dd83a9c39 Use 'eprintln' instead of custom 'printerr'. 2017-07-03 02:59:47 -07:00
Sergio Benitez
0fa2c459d9 Remove 'more_io_inner_methods' feature: it's been stabilized. 2017-07-03 02:39:32 -07:00
Sergio Benitez
77c51ff43f Use the '!' type for 'str::FromForm::Error'. 2017-07-03 02:25:02 -07:00
Sergio Benitez
82a2d2f44e Implement 'FromForm' for 'Option' and 'Result'. 2017-07-03 02:13:35 -07:00
Sergio Benitez
02f466fa17 Inline 'Method::supports_payload()'. 2017-07-03 01:38:14 -07:00
Sergio Benitez
1f367af704 Fix broken link to 'LaunchError' in 'Rocket' docs. 2017-06-30 13:50:36 -07:00
Sergio Benitez
beb5ca14cf Improve 'Route' documentation. 2017-06-30 13:17:40 -07:00
Sergio Benitez
b0612d7346 Enable features on docs.rs. 2017-06-30 02:41:00 -07:00
Sergio Benitez
3310c19960 Add examples for 'Data' methods. 2017-06-30 02:18:56 -07:00
Sergio Benitez
0a772286a9 Fully document the 'local' module. 2017-06-30 02:06:03 -07:00
Sergio Benitez
06ad52157d Use Into<Value> from 'toml' instead of 'IntoValue'. 2017-06-29 14:04:54 -07:00
Sergio Benitez
ef4c2fd989 Fix 'Accept' PartialEq impl. Finish 'Request' docs. 2017-06-24 21:00:50 -07:00
Sergio Benitez
dfbd3265f3 Improve fairing and request/data guard docs. 2017-06-24 18:43:10 -07:00
Sergio Benitez
150aef7764 Impl 'try' for 'Outcome'. Document 'Cookies'.
The 'try' impl for 'Outcome' allows the '?' operator to be used with
'Outcome' values. This is likely to make 'FromRequest' and 'FromData'
implementations more ergonomic.

This commit also expands the 'IntoOutcome' trait. It is now
implemented for 'Option'. It also now includes an additional
'or_forward' method.
2017-06-24 02:49:31 -07:00
Sergio Benitez
0376fb5fe5 Rename 'WeightedMediaType' to 'QMediaType'. More docs.
This commit nears completion of the 'http' module docs.
2017-06-22 04:29:59 -07:00
Sergio Benitez
3c4cb27d55 Upgrade 'state' to 0.3 to prevent memory leaks.
Fixes #323.
2017-06-20 16:46:07 -07:00
Sergio Benitez
3f87b16d75 Update minimum nightly to '2017-06-19'. 2017-06-19 22:58:31 -07:00
Sergio Benitez
ce363810c5 Disable coloring when output isn't a tty. 2017-06-19 18:29:26 -07:00
Sergio Benitez
6a7fde6d70 Initial cleanup of 'http' docs. Add 'handler::Outcome' docs.
This commit also changes the signature of the 'ContentType'
'from_extension" method so that it returns an 'Option<ContentType>' as
opposed to 'ContentType'.

This commit also disallows negative quality values in 'Accept' media
types.
2017-06-19 17:32:33 -07:00
Sergio Benitez
cdf9ff9bde Remove 'LoggingLevel' from root. Add ConfigError::Io.
This tentatively completes the 'config' rustdocs.
2017-06-18 21:06:41 -07:00
Sergio Benitez
43a4028085 Use a less confusing version number during dev. 2017-06-18 02:25:26 -07:00
Vesa Kaihlavirta
3ef14f5392 Fix benchmarks to use 'route.uri' instead of 'route.path'. 2017-06-18 02:07:13 -07:00
Sergio Benitez
a3ea9d0f9a Add support for lenient forms via 'LenientForm'.
This commit changes the 'FromForm' trait in two ways:

  1. The singular method is now named 'from_form'.
  2. The method takes a second parameter: 'strict: bool'.

The 'strict' parameter is used to specify whether form parsing should
be strict or not (i.e. lenient). When parsing is lenient, extra form
fields do not result in an error. This lenient behavior is used by a
new 'LenientForm' data guard type to request lenient form parsing. The
behavior for 'Form' remains unchanged.

Resolves #242.
2017-06-18 01:59:22 -07:00
Sergio Benitez
8536e39d10 Update 'cookie' for cookie path deletion fix. 2017-06-17 13:31:24 -07:00
Sergio Benitez
2aad1d876b Update ring-based dependencies. 2017-06-16 20:32:20 -07:00
Sergio Benitez
3fcf6c43dc Clean up LaunchError docs. Add Rocket::{config, routes} example.
This commit also:

  * Cleans up the stored URIs in routes.
  * Removes LaunchError as a root export.
  * Adds a URI::base() method.
2017-06-12 15:11:01 -07:00
Sergio Benitez
7cf3367183 Document the Limits structure. Change default workers.
The default workers config parameter is now [num_cpus * 2].
2017-06-11 03:39:30 -07:00
Sergio Benitez
8badc73c4b Update toml to 0.4. Add Config::get_datetime. 2017-06-11 02:20:57 -07:00
Sergio Benitez
2bfb41d968 Update 'handlebars' and 'base64' dependencies. 2017-06-11 01:07:18 -07:00
Sergio Benitez
9a297f776b Tidy up broken links. Set 'html_root_url'. 2017-06-11 01:03:59 -07:00
Sergio Benitez
d09920c021 Emit warning when no 'secret_key' is set in prod. 2017-06-08 23:33:16 -07:00
Sergio Benitez
b8ba7b855f Remove Session in favor of private cookies. New testing API.
Sessions
--------

This commit removes the `Session` type in favor of methods on the
`Cookies` types that allow for adding, removing, and getting private
(signed and encrypted) cookies. These methods provide a superset of
the functionality of `Session` while also being a minimal addition to
the existing API. They can be used to implement the previous `Session`
type as well as other forms of session storage. The new methods are:

  * Cookie::add_private(&mut self, Cookie)
  * Cookie::remove_private(&mut self, Cookie)
  * Cookie::get_private(&self, &str)

Resolves #20

Testing
-------

This commit removes the `rocket::testing` module. It adds the
`rocket::local` module which provides a `Client` type for local
dispatching of requests against a `Rocket` instance. This `local`
package subsumes the previous `testing` package.

Rocket Examples
---------------

The `forms`, `optional_result`, and `hello_alt_methods` examples have
been removed. The following example have been renamed:

  * extended_validation -> form_validation
  * hello_ranks -> ranking
  * from_request -> request_guard
  * hello_tls -> tls

Other Changes
-------------

This commit also includes the following smaller changes:

  * Config::{development, staging, production} constructors have been
    added for easier creation of default `Config` structures.
  * The `Config` type is exported from the root.
  * `Request` implements `Clone` and `Debug`.
  * `Request::new` is no longer exported.
  * A `Response::body_bytes` method was added to easily retrieve a
    response's body as a `Vec<u8>`.
2017-06-08 17:34:50 -07:00
Sergio Benitez
504a7fe583 Update to yansi 0.3 for proper Debug formatting.
This commit also improves the format of TOML parsing error messages.

Fixes #310.
2017-06-06 13:56:13 -07:00
Sergio Benitez
fa31b6ae42 Support the 'dev' channel during build.
Resolves #306.
2017-06-02 17:41:15 -07:00
Sergio Benitez
a6c4d053ad Switch to 'yansi' for all terminal coloring.
Resolves #299.
2017-06-01 22:10:05 -07:00
Sergio Benitez
73fed03ef4 New version: 0.2.8. 2017-06-01 22:10:05 -07:00
Sergio Benitez
e42fe78e41 Update 'smallvec' dependency to 0.4. 2017-05-31 17:28:12 -07:00
Sergio Benitez
923b84f42c Remove outdated comment FIXME. 2017-05-29 18:10:07 -07:00
Sergio Benitez
6a9421935e Add 'Request::route' method to get active 'Route'.
This commit also adds the `base` field to `Route` which allows the
base mount point to be retrieved. Finally, this commits adds an
implementation of `FromRequest` for `Route` which returns the active
route if one is available or forwards otherwise.

This commit is a breaking change: it makes `Request` and `MockRequest`
invariant over the lifetime `'r`. While this shouldn't affect most
applications, it may affect some.

Resolves #108.
2017-05-29 18:00:33 -07:00
Sergio Benitez
5f2b2ee3df New version: 0.2.7. 2017-05-26 20:37:54 -07:00
Sergio Benitez
6a5d8ab58a Update rustls and hyper-rustls dependencies. 2017-05-24 16:02:16 -07:00
Sergio Benitez
299a422cbc Optimize MediaType::Display, ContentType::Into<Header>, and precheck.
Differential and causal profiling determined that 35% of `Hello, world!`
dispatch time was spent rendering `Content-Type` due to many calls to `fmt` in
`MediaType::Display` and an allocation in `ContentType::Into<Header>`. This
change reduces the number of calls to `fmt` to 1 in `MediaType::Display` and
removes the allocation in `Into<Header>` for known media types.

This change also caches a `Rocket` "precheck" so that pre-dispatch checks are
done only a single time for a given `Rocket` instance, further reducing
`MockRequest::dispatch_with` time for "Hello, world!" by roughly 15%.
2017-05-23 16:41:38 -07:00
Sergio Benitez
d93d366ce7 Remove use of type_ascription feature. 2017-05-20 11:51:17 -07:00
Sergio Benitez
6c00d362c0 Add ResponseBuilder::raw_body. Use OrderMap for HeaderMap. 2017-05-20 11:41:44 -07:00
Sergio Benitez
80a1abdc89 Add hello_world benchmark. 2017-05-19 19:39:10 -07:00
Sergio Benitez
42c98fe1c3 Rename 'extra' Request field to 'state'. 2017-05-19 19:38:56 -07:00
Sergio Benitez
fc7d51d010 Check before dumping data in kill_stream. 2017-05-19 19:38:28 -07:00
Sergio Benitez
4cab891fda Default session removal cookie path to '/'.
Fixes #295.
2017-05-19 03:46:19 -07:00
Sergio Benitez
9b955747e4 Remove config global state. Use Responder::respond_to.
This commit includes two major changes to core:

  1. Configuration state is no longer global. The `config::active()`
     function has been removed. The active configuration can be
     retrieved via the `config` method on a `Rocket` instance.

  2. The `Responder` trait has changed. `Responder::respond(self)` has
     been removed in favor of `Responder::respond_to(self, &Request)`.
     This allows responders to dynamically adjust their response based
     on the incoming request.

Additionally, it includes the following changes to core and codegen:

  * The `Request::guard` method was added to allow for simple
    retrivial of request guards.
  * The `Request::limits` method was added to retrieve configured
    limits.
  * The `File` `Responder` implementation now uses a fixed size body
    instead of a chunked body.
  * The `Outcome::of<R: Responder>(R)` method was removed while
    `Outcome::from<R: Responder(&Request, R)` was added.
  * The unmounted and unmanaged limits are more cautious: they will only
    emit warnings when the `Rocket` receiver is known.

This commit includes one major change to contrib:

  1. To use contrib's templating, the fairing returned by
     `Template::fairing()` must be attached to the running Rocket
     instance.

Additionally, the `Display` implementation of `Template` was removed. To
directly render a template to a `String`, the new `Template::show`
method can be used.
2017-05-19 03:29:08 -07:00
Sergio Benitez
28a1ef0916 Fairings, v3.
Modifying the `Rocket` structure just before launch doesn't make sense for
several reasons: 1) those affects can't influence the launch, and 2) they won't
be observed in tests. Thus, an `Attach` fairing kind was added that ameliorates
these issues.
2017-05-17 01:39:36 -07:00
Sergio Benitez
9c9740f966 Fairings v2. 2017-05-14 21:46:01 -07:00
Sergio Benitez
9a7484f7a8 Reclose connection on unread data. Minimum nightly is 1.19. 2017-05-13 02:00:35 -07:00
Anton Pirker
781477fff1 Rename 'session_key' config parameter to 'secret_key'.
Resolves #220.
2017-05-12 17:24:25 -07:00
Sergio Benitez
5e345e99d0 Make I/O and parsing TLS file errors distinct. 2017-05-12 14:38:18 -07:00
Sergio Benitez
a9d9ef3867 Update rustls, cookie, and hyper-rustls dependencies. 2017-05-12 14:36:32 -07:00
Sergio Benitez
6907fd432c Update base64 to secure version. 2017-05-08 15:28:46 -07:00
Sergio Benitez
84255af4f9 Update base64 dependency to 0.5. 2017-05-05 12:40:57 -07:00
Sergio Benitez
30fac32978 Upgrade dependencies to Serde 1.0.
Closes #272.
Resolves #273.
2017-04-24 17:37:18 -07:00
Sergio Benitez
40d11929d7 Optimize the creation of the Data structure. 2017-04-24 01:33:00 -07:00
Sergio Benitez
45eb475607 Use unboxed WrappedStream. 2017-04-22 22:17:21 -07:00
Sergio Benitez
0a8de2f0a6 Ensure that all raw HTTP data is transfer-decoded. 2017-04-22 22:06:33 -07:00