Sergio Benitez
2465e2f136
Make 'Responder' trait sync; fix its lifetimes.
...
In summary, this commit modifies 'Responder' so that:
* ..it is no longer 'async'. To accommodate, the 'sized_body' methods
in 'Response' and 'ResponseBuilder' are no longer 'async' and accept
an optional size directly. If none is supplied, Rocket will attempt
to compute the size, by seeking, before writing out the response.
The 'Body' type was also changed to differentiate between its sized
'Seek' and chunked body variants.
* ..'&Request' gains a lifetime: 'r, and the returned 'Response' is
parameterized by a new 'o: 'r. This allows responders to return
references from the request or those that live longer.
2020-07-11 09:24:29 -07:00
Sergio Benitez
12308b403f
Add '#[rocket::launch]' attribute.
...
The attribute is applied everywhere it can be across the codebase and is
the newly preferred method for launching an application. This commit
also makes '#[rocket::main]` stricter by warning when it is applied to
functions other than 'main'.
2020-07-11 09:24:29 -07:00
Jeb Rosen
c7c371910b
Remove extraneous dependency on 'futures-util'.
2020-07-11 09:24:29 -07:00
Jeb Rosen
bc1b90cbdb
Add '#[rocket::main]' attribute and make 'launch()' an 'async fn'.
...
'#[rocket::main]' works like '#[rocket::async_test]', but it uses
tokio's multithreaded scheduler.
2020-07-11 09:24:29 -07:00
Jeb Rosen
7a62653cdd
Add a test verifying that attempting to manage the same state type twice panics.
2020-07-11 09:24:29 -07:00
Jeb Rosen
e72058de81
Add 'config()' and 'state()' functions directly to 'Rocket' for convenience.
2020-07-11 09:24:29 -07:00
Jeb Rosen
b0238e5110
Make 'Fairing::on_attach()' async.
...
This transitively requires that 'Rocket::inspect()', 'Client::new()',
and 'Client::untracked()' also become async.
2020-07-11 09:24:29 -07:00
Jeb Rosen
dea940c7a8
Defer execution of operations on 'Rocket' until their effects will be
...
observed.
This is a prerequisite for async on_attach fairings. 'Rocket' is now a
builder wrapper around the 'Manifest' type, with operations being
applied when needed by 'launch()', 'Client::new()', or 'inspect()'.
'inspect()' returns an '&Manifest', which now provides the methods that
could be called on an '&Rocket'.
2020-07-11 09:24:29 -07:00
Sergio Benitez
8696dd94af
Make references to core types absolute in codegen.
...
Prior to this commit, codegen emitted tokens containing bare types like
'Result' and 'Box' as well as presumed imported variants such as 'None'
and 'Ok'. However, users are free to shadow these, and if they do, the
generated code will fail to compile, or worse, be incorrect. To avoid
this, this commit makes all references to these core types and imports
absolute.
2020-07-11 09:24:29 -07:00
Jeb Rosen
71b888c2fa
Fix AddrParseError when the incoming connection's remote_addr is not known.
2020-07-11 09:24:29 -07:00
Jeb Rosen
2ca15b663a
Update minimum nightly to '2019-12-29'.
...
This version of rustc was the first to ship with a version of cargo that
supports 'proc_macro' without an 'extern crate' declaration.
2020-07-11 09:24:29 -07:00
Sergio Benitez
98a90808b4
Fix an array of broken doc links.
2020-07-11 09:24:29 -07:00
Sergio Benitez
c0c6c79a7f
Use 'async_trait' for 'Responder'.
...
Also:
* Remove 'response::ResultFuture'.
* Re-export 'tokio' and 'futures' from the crate root.
* Make 'ResponseBuilder::sized_body()' and 'async fn'.
* Remove the 'Future' implementation for 'ResponseBuilder'.
* Add 'ResponseBuilder::finalize()' for finalizing the builder.
2020-07-11 09:24:29 -07:00
Sergio Benitez
58f81d392e
Simplify async 'Response' methods.
2020-07-11 09:24:29 -07:00
Sergio Benitez
431b963774
Use 'async_trait' for 'FromRequest'.
...
Removes 'FromRequestAsync'.
2020-07-11 09:24:29 -07:00
Sergio Benitez
48c333721c
Use 'async_trait' for 'Fairing' trait.
...
Also re-exports the 'async_trait' attribute from 'rocket'.
2020-07-11 09:24:29 -07:00
Sergio Benitez
a4e7972b4b
Remove unnecessary 'extern crate's.
2020-07-11 09:24:29 -07:00
Sergio Benitez
73484f1a88
Implement 'Responder' for 'tokio::fs::File'.
2020-07-11 09:24:29 -07:00
Michael Howell
5f3baf240a
Deduplicate response streaming code for sized and chunked bodies.
2020-07-11 09:24:29 -07:00
Jeb Rosen
d5483cb196
Clean up Error handling.
...
* Implement `std::error::Error` for the new Error type.
* Document the new Error type.
* Remove `LaunchError`'s implementation of `Error::description`, which is deprecated.
2020-07-11 09:24:29 -07:00
Jeb Rosen
85761c08e3
Fix deprecation warning: 'tokio::runtime::Builder::num_threads' -> 'core_threads'.
2020-07-11 09:24:29 -07:00
Michael Howell
c9d0af09d6
Use 'AsyncSeek' for sized bodies in 'Response's.
...
In order to avoid making 'ResponseBuilder::sized_body' an asynchronous
function, the seeking is deferred until finalization. 'finalize()' is
replaced with '.await', and 'ResponseBuilder::ok()' is an 'async fn'.
2020-07-11 09:24:29 -07:00
Jeb Rosen
dcd4068ca0
Move a debug-only 'use' in 'from_data.rs' to the locations where it is actually used.
2020-07-11 09:24:29 -07:00
Jeb Rosen
e41abc09e5
Update more API documentation to mention futures and async.
2020-07-11 09:24:29 -07:00
Jeb Rosen
9a16aeb2e0
Use async fn instead of impl Future in a few methods in 'Data' and 'Rocket'.
2020-07-11 09:24:29 -07:00
Jeb Rosen
f442642ec2
Fix request URI tests.
2020-07-11 09:24:29 -07:00
Jeb Rosen
49f4641871
Clean up handling of body data:
...
* Minor code and comment tweaks
* Remove dynamic dispatch inside Data and DataStream
2020-07-11 09:24:29 -07:00
Jeb Rosen
571e2ac845
Revert incoming request URI and header parsing to more closely match 0.4.
2020-07-11 09:24:29 -07:00
Jeb Rosen
c2da8a21d8
Change a panic to an error when a client sends a request but disconnects before a response can be sent.
2020-07-11 09:24:29 -07:00
Jeb Rosen
70096c1bd4
Revert on_response lifetimes to more closely match 0.4.
2020-07-11 09:24:29 -07:00
Jeb Rosen
4bb4c61528
Allow implementations of on_request fairings to return a Future that borrows from self, request, and data.
2020-07-11 09:24:29 -07:00
Jeb Rosen
cc3298c3e4
Allow implementations of FromData to return a Future that borrows from the request.
2020-07-11 09:24:29 -07:00
Jeb Rosen
468f4d9314
Simplify FromRequestAsync trait definition.
2020-07-11 09:24:29 -07:00
Paolo Barbolini
003bf77c29
Upgrade to tokio 0.2.0.
...
* Update 'tokio', 'tokio-rustls', and 'hyper'.
* Remove unused dependencies on some `futures-*` crates.
* Rework 'spawn_on', which is now 'serve'.
* Simplify Ctrl-C handling.
2020-07-11 09:24:29 -07:00
Jeb Rosen
7c4cd068d1
Update for rust-lang/rust#64856 .
...
Raise the nightly version to one that accepts '...(format!(...)).await'.
This additionally reverts commit bdbf80f2da
.
2020-07-11 09:24:29 -07:00
Jeb Rosen
df52616074
Update error positions after changes for async #[catch] support.
2020-07-11 09:24:29 -07:00
Jeb Rosen
2fa2d636e4
Implement FromRequestAsync instead of FromRequest for Option and Result.
2020-07-11 09:24:29 -07:00
Jeb Rosen
4e5b889358
Add async-routes test for #[get] and #[catch].
2020-07-11 09:24:29 -07:00
Follpvosten
189fd65b17
Add 'Request::local_cache_async' for use in async request guards.
2020-07-11 09:24:29 -07:00
Jeb Rosen
5317664893
Fix UI tests for FromRequestAsync.
2020-07-11 09:24:29 -07:00
Jeb Rosen
1c28a9413b
Allow catchers to be async fn.
2020-07-11 09:24:29 -07:00
Jeb Rosen
adf7e4233a
Add 'FromRequestAsync' and use it in route codegen.
...
'FromRequestAsync' is automatically implemented for all types
that implement 'FromRequest'.
2020-07-11 09:24:29 -07:00
Jeb Rosen
ea06878581
Update 'hyper', 'futures-*-preview', and 'tokio-*' dependencies.
...
Use I/O traits and types from 'tokio-io' as much as possible.
A few adapters only exist in futures-io-preview and use
futures-tokio-compat as a bridge for now.
2020-07-11 09:24:29 -07:00
Jeb Rosen
0d89637e8b
Propagate errors while writing out response instead of panicking.
2020-07-11 09:24:28 -07:00
Jeb Rosen
8718561bf8
Emit an error when #[async_test] is applied to a function with parameters.
2020-07-11 09:24:28 -07:00
Jeb Rosen
d1815e527f
Update 'hyper', 'tokio', and 'tokio-rustls'.
...
* hyper -> 0.13.0-alpha.2
* tokio -> 0.2.0-alpha.5
* tokio-rustls -> 0.12.0-alpha.3
2020-07-11 09:24:28 -07:00
Jeb Rosen
af36f299c6
Fix ordering of messages in a UI test.
2020-07-11 09:24:28 -07:00
Jeb Rosen
523c6099fb
Replace use of 'hyper::AddrIncoming' with a Listener API and implement TLS.
...
Types can now implement the new 'Listener' trait, which means they can
report the address they are listening on and asynchronously accept
connections. 'Connection's are read/write streams that can additionally
report the remote address.
Listener is implemented for 'tokio_net::tcp::TcpListener' and for
the new 'rocket_http::tls::TlsListener' based on 'tokio-rustls'.
The new private function 'Rocket::listen_on()' now does the main setup
for launch and is generic over a Listener. In the future, a more refined
version of the API can be exposed so that applications can implement
their own listeners.
2020-07-11 09:24:28 -07:00
Jeb Rosen
62a99e9e49
Fix a minor compilation error, possibly caused by rust-lang/rust#64292 .
2020-07-11 09:24:28 -07:00
Jeb Rosen
77a64c73bb
Fix some launch error handling in tests and examples.
2020-07-11 09:24:28 -07:00
Jeb Rosen
a0d2651e38
Fix a few unused import warnings.
2020-07-11 09:24:28 -07:00
Jacob Pratt
cd6a80c230
Implement an API to request a graceful shutdown.
...
Additionally listen for Ctrl-C as a shutdown signal by default.
2020-07-11 09:24:28 -07:00
Jeb Rosen
0d6e46944b
Use tokio's current_thread runtime for async_test to increase performance.
2020-07-11 09:24:28 -07:00
Jacob Pratt
c7ecfc69c3
Use 'futures::future::BoxFuture' instead of 'Pin<Box<...>>' for readability.
2020-07-11 09:24:28 -07:00
Jacob Pratt
bd929ef617
Remove unnecessary boxing of some Futures.
2020-07-11 09:24:28 -07:00
Jacob Pratt
1f90a9b6d1
Update hyper to '=0.13.0-alpha.1'.
2020-07-11 09:24:28 -07:00
Jeb Rosen
baa2ed27f3
Update UI tests affected by removal of typed headers.
2020-07-11 09:24:28 -07:00
Jeb Rosen
047b1620f9
Update pinned hyper and tokio versions.
2020-07-11 09:24:28 -07:00
Jacob Pratt
05426881b0
Use 'File' from 'async_std' instead of from 'tokio'.
...
Additionally pin tokio to '=0.2.0-alpha.2'; before this change cargo
selects '0.2.0-alpha.3' which hyper does not compile against.
2020-07-11 09:24:28 -07:00
Jeb Rosen
560f0977d3
Revamp testing system for async.
...
* body_string_wait and body_bytes_wait are removed; use `.await` instead
* `dispatch()` is now an async fn and must be .await-ed
* Add `#[rocket::async_test]` macro, similar in purpose to `tokio::test`
* Tests now use either `rocket::async_test(async { })` or
`#[rocket::async_test]` in order to `.await` the futures returned
from `dispatch()` and `body_{string,bytes}()`
* Update 'test.sh' to reflect the tests that should be passing.
Broken:
* Cloned dispatch and mut_dispatch() with a live previous response now both fail, due to a (partial) check for mutable aliasing in LocalRequest.
* Some tests are still failing and need example-specific changes.
2020-07-11 09:24:28 -07:00
Jacob Pratt
a87e1577aa
Add 'Rocket::spawn_on' to spawn a server on a user-provided (tokio) runtime.
2020-07-11 09:24:28 -07:00
Jacob Pratt
e44c5896b8
Remove stabilized 'async_await' feature gate and update the minimum nightly version.
2020-07-11 09:24:28 -07:00
Jeb Rosen
af95129590
Use futures 0.3-compatible hyper and tokio and the tokio runtime instead
...
of futures-rs executor.
Despite this change, using body_bytes_wait on (for example) a File will
still fail due to tokio-rs/tokio#1356 .
2020-07-11 09:24:28 -07:00
Jeb Rosen
8c8598b4fd
Fix 'static_files' and 'serve' tests.
2020-07-11 09:24:28 -07:00
Jeb Rosen
b780f9d8e0
Fix or ignore remaining doc tests in 'core'.
...
This adds an unstable "async_test" function for use in tests, to ensure
they stay working while refactoring other APIs.
2020-07-11 09:24:28 -07:00
Jeb Rosen
aee7f35095
Use read_to_string (from futures-preview 0.3.0-alpha.18) to more closely match the pre-async code.
2020-07-11 09:24:28 -07:00
Jacob Pratt
0e6841da66
Convert two internal functions returning `Pin<Box<_>>` to `async fn`.
2020-07-11 09:24:28 -07:00
Jeb Rosen
b56e889a0e
Disable some known-failing tests for now.
2020-07-11 09:24:28 -07:00
Jeb Rosen
633e495a6b
Update many doc tests in 'core' for async.
2020-07-11 09:24:28 -07:00
Jeb Rosen
1601e5c814
Fix a few 'unused use' warnings.
2020-07-11 09:24:28 -07:00
Jeb Rosen
6044961680
Update parts of contrib and associated tests and examples:
...
* json
* templates
* helmet
* databases
* serve
* examples/cookies
* examples/handlebars_templates
* examples/json
* examples/session
* examples/static_files
* examples/tera_templates
2020-07-11 09:24:28 -07:00
Jeb Rosen
7c34a3a93e
Make 'Fairing::on_response' and 'Responder::respond_to' async.
...
This is required to be able to do anything useful with the body in the
outgoing response. Request fairings do not appear to need to be async
as everything on Data that returns a future moves self and on_request only
gets &Data, but the same change in this commit should work for on_request
if desired.
2020-07-11 09:24:28 -07:00
Jeb Rosen
5d439bafc0
Convert core to async and add support for async routes.
...
Minimum rustc bump required for rust-lang/rust#61775
2020-07-11 09:24:28 -07:00
Marc Schreiber
96b4142156
Upgrade to hyper 0.12.
...
* Use hyper's 'MakeService' implementation with futures API.
* Use tokio runtime to serve HTTP backend.
2020-07-11 09:24:03 -07:00
Sergio Benitez
263e39b5b4
Always override config defaults with env vars.
...
Fixes a regression introduced in f7b1089
.
2020-07-08 19:39:28 -07:00
gcarq
86d0bdddb2
Replace manual ASCII checks with 'std::char' calls.
2020-06-22 05:07:14 -07:00
Sergio Benitez
83925bbae1
Use clearer variables names in guide test macro.
...
Also removes latent, unnecessary 'guide' test.
2020-06-14 18:56:45 -07:00
Sergio Benitez
74f15a7ab5
Use top-level doc image URLs.
2020-06-11 02:30:14 -07:00
Sergio Benitez
63a4ae0485
Silence warnings on 'extern crate proc_macro'.
2020-06-08 12:25:10 -07:00
Sergio Benitez
55d2b2bfb6
Properly mock 'Key::try_generate()'.
2020-06-07 04:02:35 -07:00
Sergio Benitez
f7b1089b49
Allow setting config path via 'ROCKET_CONFIG_FILE'.
2020-06-07 03:46:43 -07:00
Sergio Benitez
a4301c0a9a
Add 'Config::read()' and 'Config::read_from()'.
...
The former method allows constructing a 'Config' in the exact manner
Rocket does internally: reading the active environment's properties from
'Rocket.toml' and overriding values from environment variables. The
'read_from()' property does the same except it allows a custom config
file path.
This PR also improves the internal structure of the configuration code.
2020-06-07 02:42:15 -07:00
Sergio Benitez
ea9865ec42
Allow multiple versions of 'rustls' and 'ring'.
...
Co-authored-by: TotalKrill <kristoffer.odmark90@gmail.com>
2020-06-04 18:59:11 -07:00
Sergio Benitez
3c47fa895a
Enable minimal set of 'cookie' features.
2020-06-04 18:54:23 -07:00
Jeb Rosen
91fb0804be
Hide docs for more generated items.
2020-06-04 18:01:20 -07:00
Sergio Benitez
3f20e4ac93
Use proper SPDX license expression in 'Cargo.toml'.
2020-06-03 23:02:05 -07:00
Jeb Rosen
097fbd7df0
Fix some broken links in API documentation.
2020-05-31 11:32:14 -07:00
Yusuke Kominami
a21221aeb6
Replace deprecated 'OffsetDateTime::now' with 'OffsetDateTime::now_utc'.
...
Update 'time' dependency accordingly.
2020-05-30 11:13:40 -07:00
Nia Watts
ea81f8e07b
Fix typo in 'Query' documentation: 'mplementation' -> 'implementation'.
2020-05-30 11:09:42 -07:00
Sergio Benitez
ee5988fe5c
Update 'cookie' to '0.14'.
2020-05-30 01:49:32 -07:00
Sergio Benitez
578038619f
Add 'Origin::map_path()' method.
2020-05-29 17:49:37 -07:00
Sergio Benitez
b8f9011c04
Fix 'LocalRequest::clone()' soundness issue.
...
The existing implementation of 'LocalRequest::clone()' mistakenly copied
the internal 'Request' pointer from the existing 'LocalRequest' to the
cloned 'LocalRequest'. This resulted in an aliased '*mut Request'
pointer, a clear soundness issue. The fix in this commit is to clone the
internal 'Request', replacing the internal pointer with the newly cloned
'Request' when producing the cloned 'LocalRequest'. A fix that removes
all 'unsafe' code should be explored.
Fixes #1312 .
2020-05-27 01:09:12 -07:00
Alex Macleod
ca4d1572d4
Hide emoji on Windows.
...
Closes #1122 .
2020-05-17 15:30:48 -07:00
Sergio Benitez
a8b029e423
Properly delimit length and name in flash cookies.
...
Fixes #1263 .
2020-05-16 17:55:54 -07:00
Thiago Veronezi
94a222f6fe
Fix typo in 'State' documentation: missing backtick.
2020-04-21 18:47:17 -07:00
Jeb Rosen
3abafaaedb
Update UI tests for latest nightly.
2020-04-21 18:12:08 -07:00
Sergio Benitez
06e146e7d1
Update 'time' to 0.2 in 'contrib'.
2020-03-25 14:39:55 -07:00
Sergio Benitez
53353df633
Fix more broken links.
2020-03-09 02:03:38 -07:00
Sorin Davidoi
dfc9e9aab0
Improve accessibility of default error HTML.
2020-03-02 16:39:19 -08:00
Sergio Benitez
32e86c3b69
Inline macro docs into core crate.
2020-02-25 16:56:59 -08:00
Sergio Benitez
95c981de79
Test all guide code examples.
...
Every code example is now fully runnable and testable. As a result, all
examples are now tested and include imports. Relevant imports are shown
by default. Code examples can be expanded to show all imports.
Fixes #432 .
2020-02-15 04:02:19 -08:00
Sergio Benitez
ee1a9903b6
Update UI tests for latest nightly.
2020-02-15 03:51:56 -08:00
Sergio Benitez
385b69cf69
Migrate to 'binascii' for base 16, 64 decoding.
2020-02-14 17:14:37 -08:00
Sergio Benitez
9f0e02fe27
Make references to core types absolute in codegen.
...
Prior to this commit, codegen emitted tokens containing bare types like
'Result' and 'Box' as well as presumed imported variants such as 'None'
and 'Ok'. However, users are free to shadow these, and if they do, the
generated code will fail to compile, or worse, be incorrect. To avoid
this, this commit makes all references to these core types and imports
absolute.
2020-02-06 21:16:45 -08:00
Sergio Benitez
d0bfd8a3bb
Update 'cookie' to 0.13.2.
2020-01-29 14:17:01 -08:00
Sergio Benitez
f35e3c4aca
Set cookies even on error responses.
...
Fixes #1213 .
2020-01-23 21:10:04 -08:00
Sergio Benitez
7c1b8dc9ad
Update 'cookie' to 0.13, 'rustls' to 0.16.
2020-01-21 16:10:04 -08:00
Jeb Rosen
ff2000293c
Update 'compiletest' and fix and re-enable compile UI tests.
2020-01-15 17:09:57 -08:00
A. L
859224a209
Add additional Responder wrappers for some common HTTP status codes:
...
* 204 NoContent
* 401 Unauthorized
* 403 Forbidden
* 409 Conflict
2020-01-15 11:41:19 -08:00
Paolo Barbolini
cd5f96ae15
Update 'uuid', 'unicode-xid', and 'base64' dependencies.
2019-11-30 09:33:14 -08:00
Michael Howell
121210c55c
Add support for base16-encoded (a.k.a. hex-encoded) secret keys.
2019-11-29 12:06:55 -08:00
Jeb Rosen
96235615ce
Update compile tests for changes in rust nightly.
2019-11-29 11:18:32 -08:00
Jeb Rosen
343f51d550
Disable UI tests for now.
2019-11-29 11:18:26 -08:00
Jeb Rosen
e7e84a6d41
Fix and update benchmarks.
2019-11-16 13:08:36 -08:00
Matt Brubeck
8bf6aa2068
Update 'smallvec' to '1.0'.
2019-11-16 13:02:50 -08:00
Jacob Pratt
4e6a7ddd5f
Remove use of the 'crate_visibility_modifier' feature.
...
Most items with 'crate' visibility become 'pub(crate)'.
Items are made 'pub' instead when they would remain private.
2019-09-21 09:16:04 -07:00
Jeb Rosen
335d8f7dbb
Adjust '#[catch]' codegen output to fix a UI test regression in latest nightly.
2019-09-21 08:33:16 -07:00
Jacob Pratt
bed93133b8
Abide by formatting in 'Debug' implementations.
2019-09-18 19:06:08 -07:00
Jacob Pratt
e3c1a4ad3a
Remove use of the 'try_trait' feature.
...
Add the 'try_outcome' macro to replace uses of '?' on 'Outcome'.
2019-09-18 18:43:16 -07:00
Jacob Pratt
b95b6765e1
Remove use of 'label_break_value' feature.
2019-09-10 17:27:40 -07:00
Sergio Benitez
2537a1164d
Remove 'Result' specialization. Add 'Debug' responder.
...
This removes all uses of specialization in Rocket.
2019-09-09 21:57:33 -07:00
Sergio Benitez
592e441de5
Use proper span in responder codegen output.
2019-09-09 21:57:10 -07:00
Sergio Benitez
3fae9919f7
Deprecate 'Result<T, E>, E: !Responder' responder.
2019-09-09 21:56:55 -07:00
Sergio Benitez
22da02fa64
Remove double semicolons; silence test warnings.
2019-09-09 16:57:03 -07:00
Sergio Benitez
b7e688cefa
Remove use of deprecated 'IndexMap::remove()'.
...
Use 'IndexMap::swap_remove()' in its place.
2019-09-09 16:51:51 -07:00
Sergio Benitez
99a864008c
Remove use of specialization in http.
2019-09-09 16:45:03 -07:00
Sergio Benitez
6ed4c098f1
Stop exporting 'mime' and relevant conversions.
2019-09-09 16:42:44 -07:00
Sergio Benitez
c5973f01df
Remove use of specialization in 'status::Created'.
2019-09-09 16:37:46 -07:00
Sergio Benitez
0b059e06e5
Update 'devise' to 0.3.
...
This transitively updates 'syn', 'proc-macro2', and 'quote' to 1.0.
2019-09-05 15:44:25 -07:00
Sergio Benitez
dcea9563fc
Update UI tests for latest nightly.
2019-08-26 12:48:32 -07:00
Jacob Pratt
2dd09f90be
Remove unused 'doc_cfg' feature.
2019-08-06 14:01:35 -07:00
Jeb Rosen
3e4f8453ce
Remove use of the 'decl_macro' feature.
...
Also removes one internal use in the 'typed-uris' codegen test.
2019-07-19 11:39:56 -07:00
Jeb Rosen
2f458b5217
Remove dependence on 'decl_macro' in codegen.
...
The generated 'uri' helper macros are now re-exports of 'macro_rules'
macros, made possible by the stable 'uniform_paths' feature.
2019-07-19 11:38:35 -07:00
Jacob Pratt
34a741a26e
Remove use of '!' type in favor of 'Infallible'.
...
This removes the use of and dependence on the 'never_type' feature.
2019-07-09 15:10:51 -07:00
Sergio Benitez
21b10176ee
Forward from 'StaticFiles' if a file is not found.
...
Also adds a 'handler::Outcome::from_or_forward' method for easily
constructing handler outcomes that forward on responder failures.
Fixes #1036 .
2019-07-07 23:22:38 -07:00
Dmitry Murzin
c100a92127
Implement 'FromParam' for 'NonZero*' types.
2019-07-06 13:32:08 -07:00
Sergio Benitez
7f2c9f426c
Fix tests for Windows.
2019-07-06 00:59:01 -07:00
Jeb Rosen
be784a7845
Migrate codegen to Rust 2018.
2019-06-25 13:45:27 -04:00
Jeb Rosen
34cb1c14b8
Migrate core to Rust 2018.
2019-06-25 13:45:23 -04:00
Jeb Rosen
90e37beb2f
Migrate http to Rust 2018.
2019-06-25 13:43:53 -04:00
Thomas Lent
42f8af411e
Fix type in 'Data' rustdocs: 'T' -> 'DataGuard'.
2019-06-11 15:04:54 -07:00
Jeb Rosen
2d924f0f51
Allow 'non_snake_case' for generated query params.
...
Also adds '#[deny(non_snake_case)]' to the complete route generation
test for regressions.
Fixes #1003 .
2019-05-29 19:18:46 -07:00
Sergio Benitez
e458df094f
Update 'version_check' to 0.9.
2019-05-24 01:48:42 -07:00
jeb
6bf751fb22
Reexport derive macros alongside derived traits.
2019-05-22 22:19:47 -07:00
Brenden Matthews
ba6aa2f05e
Bump cookie, rustls, and hyper-sync-rustls dependencies.
2019-05-14 22:25:55 -07:00
Sergio Benitez
1caf87eb21
Move to 0.5.0-dev on master.
2019-05-13 16:18:48 -07:00
Richard Petrie
75d2ea96d9
Replace deprecated 'isatty' with 'atty'.
2019-05-10 18:21:58 -07:00
Sergio Benitez
3e7a20ae57
Clarify defaults in 'Config' documentation.
2019-05-10 16:39:41 -07:00
Sergio Benitez
fdd76ecf7e
Clean up 'AdHoc' fairing implementation.
2019-05-09 09:04:31 -07:00
Sergio Benitez
7c2dda2647
Clean up 'Server' header commentary.
2019-05-08 20:20:26 -07:00
Sergio Benitez
9f75e0f443
Clean up 'conditionally-set-server-header' test.
2019-05-08 20:18:10 -07:00
lu4nm3
0a978fdb5d
Set default 'Server' header only if it isn't set.
...
Closes #996 .
2019-05-08 20:18:10 -07:00
Jeb Rosen
3c51a2f401
Update compiler tests for 2019-04-19 nightly.
2019-04-20 08:17:19 -07:00
Konrad Borowski
7ab1c427b5
Replace uses of `FnBox`; `Box<dyn FnOnce>` now implements `FnOnce`.
2019-04-13 09:15:27 -07:00
Jacob Pratt
9b219ddc01
Remove stabilized feature gates.
...
* try_from
* transpose_result
2019-04-12 18:48:51 -07:00
Oliver Scherer
c86f4312fb
Always produce a valid, if conservative, subspan.
2019-02-08 18:03:53 -08:00
Sergio Benitez
f0c6c9b26f
Use explicit associated type in 'IntoOwned' impl.
2019-02-06 19:37:39 -08:00
Sergio Benitez
de9a98edd2
Update 'Rocket::custom()' docs to match signature.
...
Resolves #910 .
2019-02-06 17:18:53 -08:00
Chris Foster
4921af459f
Fix typo in 'LenientForm' docstring: 'gaurd' -> 'guard'.
2019-01-31 20:15:10 -08:00
jeb
afd08ffb20
Update compiler tests for 2018-12-28 nightly.
2018-12-29 09:31:14 -08:00
Sergio Benitez
ca5623c641
Type encoding to fix encoding issues once and for all.
...
Fixes #849 .
2018-12-12 17:38:36 -08:00
Sergio Benitez
5056705884
Improve query string routing and typed URI docs.
2018-12-07 12:09:15 -08:00
Sergio Benitez
b88a2d7d05
Add notes about enabling features to contrib docs.
2018-12-07 09:07:27 -08:00
Sergio Benitez
a4dcb0cf4c
New version: 0.4.0.
2018-12-06 09:19:11 -08:00
Sergio Benitez
7fb6ba9be5
Generate 'FromUriParam' impls in 'UriDisplayPath'.
2018-12-06 09:00:01 -08:00
Sergio Benitez
d7933dd6fd
Implement ignorable 'uri!' expressions.
...
Closes #840 .
2018-12-06 08:43:24 -08:00
Sergio Benitez
90a6749313
New version: 0.4.0-rc.2.
2018-11-30 21:00:18 -08:00
Sergio Benitez
7919ceac39
Strip dev-dependencies more reliably.
2018-11-30 20:58:29 -08:00
Sergio Benitez
5ec21d5ba0
Update dependencies to published versions.
2018-11-30 09:00:16 -08:00
Sergio Benitez
ac823861c8
Systematically name and span codegen variables.
...
Fixes #839 .
2018-11-30 08:43:31 -08:00
Sergio Benitez
b7db74144f
Parameterize 'UriDisplay' with 'Path' or 'Query'.
...
This commit introduces the sealed `UriPart` marker trait as well as the
implementing `Path` and `Query` marker types, allowing for parts of a
URI to be distinguished at the type level. Consequently, `UriDisplay`
has been parameterized with `P: UriPart`, creating `UriDisplay<Path>`
and `UriDisplay<Query>`. The effect of this change is improved type
safely for URI rendering as well as the ability to omit rendering values
in query parts via `Option` and `Result`.
The `UriDisplay` derive was replaced by `UriDisplayQuery` and
`UriDisplayPath` which derive implementations for `UriDisplay<Path>`
and `UriDisplay<Query>`, respectively.
This commit also works around a rustdoc visibility issue by creating a
hidden `http::private` module.
Finally, this commit also removes the now vestigial use of the
`rustc_private` feature in codegen.
Fixes #827 .
2018-11-27 10:01:47 -06:00
Sergio Benitez
543b07a4ba
Use upstream 'Literal::subspan()'.
2018-11-23 19:15:13 -06:00
jeb
ed4055925d
Use 'dyn' in codegen to silence 'bare_trait_objects' lint.
2018-11-19 02:34:46 -08:00
Sergio Benitez
abb434f228
Stop using white for legible logging everywhere.
...
Prior to this change, Rocket emitted "white" text in much of its logging
output. On terminals with light backgrounds, the text was nearly
illegible. This PR stops using white coloring altogether, opting instead
to use the terminal's default color albeit with bold styling. On dark
terminals, this will likely be a light color, and on light terminals,
this will likely be a dark color. The end result is that Rocket's
logging output should be readable everywhere.
Resolves #639 .
2018-11-19 02:11:38 -08:00
Sergio Benitez
76c830a467
Update 'base64', 'crossbeam', 'rand' dependencies.
2018-11-18 03:47:12 -08:00
Sergio Benitez
3b6c4d2a5f
Prefix codegen imports to avoid name collisions.
...
Fixes #817 .
2018-11-12 13:08:39 -08:00
Sergio Benitez
834c91ae9d
Remove the need for a current working directory.
...
This commit includes several breaking changes:
* `Config{new,development,staging,production}` constructors return a
`Config` instead of a `Result<Config>`.
* `Config.root()` returns an `Option<&Path>` instead of `&Path`.
* `ConfigError::BadCWD` was removed.
* `Config` no longer exposes a `config_path` field.
Resolves #809 .
2018-11-12 02:24:13 -08:00
Alva Snædís
4dea9eed36
Mention that u128, i128 implement UriDisplay.
2018-11-11 21:51:42 -08:00
Alva Snædís
b87994b52c
Implement FromParam, FromFormValue for i128, u128.
2018-11-11 21:51:24 -08:00
Sergio Benitez
4224419e63
Reduce 'cfg' usage for 'private-cookies' feature.
2018-11-08 23:56:15 -08:00
Linus Unnebäck
53758c6dd7
Introduce the 'private-cookies' feature.
2018-11-08 23:38:18 -08:00
Sergio Benitez
b16269a30e
Add note about cookie tracking serialization.
2018-11-08 21:40:42 -08:00
messense
64ba2056ef
Use 'RwLock' to make 'Client' 'Sync'.
...
Resolves #814 .
2018-11-08 21:40:34 -08:00
Alex Bowers
32e2ff4d6b
Add ZIP (application/zip) as a known media type.
2018-11-08 20:47:26 -08:00
Sergio Benitez
a2ada84986
Move 'UriDisplay' note to top of 'FromUriParam' docs.
2018-11-05 15:02:11 -08:00
Sergio Benitez
983ee9b32d
Make inner 'LenientForm' field public. Add 'State::from()'.
2018-11-03 01:52:19 -07:00
Rukai
b4f85daaf2
Make inner 'Form' field public.
2018-11-02 18:04:27 -07:00
Sergio Benitez
5762208bba
Percent-encode characters: '[', ']', '\', '^', '|'.
...
Fixes #808 .
2018-11-02 00:10:01 -07:00
Sergio Benitez
4dbd87a36f
New version: 0.4.0-rc.1.
2018-10-31 14:35:30 -07:00
Sergio Benitez
ef3e7ca2c6
Make all top-level crates publishable.
2018-10-31 03:57:37 -07:00
Sergio Benitez
41de1e62fb
Implement 'Responder' for 'Status'.
...
This commit obviates the following removed types:
* response::Failure
* response::status::NoContent
* response::status::Reset
Closes #489 .
2018-10-31 03:57:22 -07:00
Sergio Benitez
16a65a9a45
Mention selective importing in 'rocket_codegen' docs.
2018-10-30 02:53:51 -07:00
jeb
328bf4b32e
Support 'uri' macro in 2018 edition crates.
2018-10-30 02:44:22 -07:00
Sergio Benitez
4ef179cc59
Migrate from 'derive_utils' to published 'devise'.
...
Resolves #800 .
2018-10-29 04:58:56 -07:00
Sergio Benitez
7090e2a1ee
Use 'unreachable' to silence clippy on route codegen.
...
Closes #794 .
2018-10-29 01:33:30 -07:00
Sergio Benitez
7b2b6aba81
Use published version of 'pear'.
2018-10-28 20:17:44 -07:00
Sergio Benitez
c1b39a016b
Improve 'Redirect' and 'rocket_codegen' documentation.
2018-10-28 20:17:44 -07:00
Sergio Benitez
a77876f640
Use stable version of 'compiletest_rs'.
2018-10-28 20:17:44 -07:00
Sergio Benitez
3f2e724b23
Update rustls to 0.14.
2018-10-27 18:14:17 -07:00
Sergio Benitez
556206e8b3
Version all URLs to 'rocket.rs'.
2018-10-26 21:20:12 -07:00
Sergio Benitez
3798cd3e65
Document and test 'UriDisplay', its derive, and 'Formatter'.
2018-10-25 02:53:04 -07:00
Divyahans Gupta
cda4c520f1
Add derive for 'UriDisplay'.
2018-10-24 22:14:12 -07:00
Divyahans Gupta
34421f13f3
Allow nested values in 'UriDisplay'.
2018-10-24 21:57:53 -07:00
Sergio Benitez
26db5ecb4e
Fix normalization and Windows issues.
2018-10-24 00:01:56 -07:00
Sergio Benitez
f6325798b1
Normalize paths in 'route_guard' test.
2018-10-23 01:23:11 -07:00
Sergio Benitez
9ef0b731c8
Rename 'codegen_next' to 'codegen'.
2018-10-22 00:01:41 -07:00
Sergio Benitez
8b2ee5b99a
Point 'FromData' implementors to 'FromDataSimple'.
2018-10-21 23:43:24 -07:00
Sergio Benitez
b429063279
Fix incorrect 'Data' buffering.
...
This regression was introduced in ad0ba0d5
, where the buffer was
being copied from Hyper instead of being 'taken', resulting in
double-bufferred contents.
2018-10-21 20:36:40 -07:00
Sergio Benitez
2845b8d4d4
Add coloring disabling with 'ROCKET_CLI_COLORS=off'.
...
Resolves #703 .
2018-10-21 19:46:37 -07:00
Sergio Benitez
831d8dfbe3
Document codegen attributes individually.
2018-10-18 04:00:36 -07:00
Sergio Benitez
330390ad71
Fix unsynchronized doctest.
2018-10-17 18:33:08 -07:00
Sergio Benitez
ea158d4344
Individually document proc bang macros and derives.
2018-10-15 15:27:47 -07:00
Sergio Benitez
ad0ba0d5f1
Remove use of 'unsafe' in 'Data'.
2018-10-15 01:52:06 -07:00
Sergio Benitez
05eee14d90
Update pear to latest revision.
2018-10-14 23:49:02 -07:00
Richo Healey
085a143075
Update docstring for 'ConfigBuilder::keep_alive'.
2018-10-11 16:39:35 -07:00
Sergio Benitez
e34b2f3703
Fully document all public items in core.
2018-10-10 05:28:01 -07:00
Sergio Benitez
8b1e93192e
Version documentation.
2018-10-09 04:31:09 -07:00
Sergio Benitez
28f2a33abd
Use inter/intra-crate links in all documentation.
2018-10-09 04:31:09 -07:00
Sergio Benitez
2839aca8ce
Update features for latest nightly.
2018-10-09 04:31:09 -07:00
Sergio Benitez
360b0e80b0
Port all codegen tests to codegen_next.
2018-10-09 04:31:08 -07:00
Sergio Benitez
b9bf1ee37d
Fix typed URI generation for query reform.
2018-10-09 04:31:08 -07:00
Sergio Benitez
61f107f550
Reimplement route attribute as a proc-macro.
...
This commits also implement the query reform from #608 . It also consists
of many, many breaking changes. Among them are:
* Query parts in route paths use new query reform syntax.
* Routing for queries is now lenient.
- Default ranking has changed to reflect query reform.
* Format routing matching has been fixed.
- Routes with formats matching "accept" will always collide.
- Routes with formats matching "content-type" require requests to
have an equivalent content-type header to match.
- Requests with imprecise content-types are treated as not having a
content-type.
* Generated routes and catchers respect visibility modifiers.
* Raw getter methods from request were renamed and retooled.
- In particular, the index parameter is based on segments in the
route path, not dynamic parameters.
* The method-based attributes no longer accept a keyed 'path'.
* The 'rocket_codegen' crate is gone and will no longer be public.
* The 'FormItems' iterator emits values of type 'FormItem'.
- The internal form items' string can no longer be retrieved.
* In general, routes are more strictly validated.
* Logging from codegen now funnels through logging infrastructure.
* Routing has been optimized by caching routing metadata.
Resolves #93 .
Resolves #608 .
Resolves #693 .
Resolves #476 .
2018-10-09 04:18:04 -07:00
Sergio Benitez
3eb873d89d
Tidy 'uri!' proc-macro. Improve error reporting.
2018-10-04 02:00:04 -07:00
jeb
7624aaf3e4
Reimplement 'uri!' as a proc-macro.
2018-10-03 21:56:37 -07:00
Sergio Benitez
cee2f4439f
Fix 'content_types' example for debug-only 'FromData' impl.
2018-09-27 01:16:26 -07:00
Sergio Benitez
ec4cc3a293
Allow transforms in 'FromData'. Add 'FromDataSimple'.
...
The new 'FromData' trait allows an implementor to instruct the caller to
maintain state on its stack and later pass a borrow for processing.
Among other things, it greatly simplifies the 'Form' type, removing a
use of unsafe, and allows references in deserialized data guards.
2018-09-26 21:33:02 -07:00
Sergio Benitez
633d37bc97
Fix invalid TOML test for updated 'toml' dependency.
2018-09-25 19:41:59 -07:00
Sergio Benitez
24ee97575b
Remove Collider trait.
2018-09-24 19:44:38 -07:00
Sergio Benitez
1a3fd1d237
Add known media types and extensions.
...
Adds the following to the list of known media types:
* audio/webm (WEBA)
* image/tiff (TIFF)
* audio/aac (AAC)
* text/calendar (Calendar)
* video/mpeg (MPEG)
* application/x-tar (TAR)
* application/gzip (GZIP)
* video/quicktime (MOV)
* video/mp4 (MP4)
Also adds the following to the list of known extensions:
* .weba (WEBA)
* .ogv (OGG)
* .mp4 (MP4)
* .mpeg4 (MP4)
* .aac (AAC)
* .ics (Calendar)
* .bin (Binary)
* .mpg (MPEG)
* .mpeg (MPEG)
* .tar (TAR)
* .gz (GZIP)
* .tif (TIFF)
* .tiff (TIFF)
* .mov (MOV)
2018-09-18 18:25:39 -07:00
Sergio Benitez
d011cd63fc
Remove unnecessary 'use rocket::catch'.
2018-09-16 20:52:07 -07:00
Sergio Benitez
7926ffd6f0
Tidy 'routes!' and 'catchers!' proc-macros.
2018-09-16 20:38:02 -07:00
jeb
8e779610c4
Reimplement 'routes!' and 'catchers!' as proc-macros.
2018-09-16 18:52:23 -07:00
Sergio Benitez
46afabdfea
Remove neglected and obscure 'Error' type.
2018-09-16 03:07:50 -07:00
Sergio Benitez
351757c6ee
Rename 'Rocket::catch()' to 'Rocket::register()'.
2018-09-16 02:25:12 -07:00
Sergio Benitez
112e700836
Reimplement 'catch' attribute as a proc-macro.
2018-09-16 01:32:40 -07:00
Sergio Benitez
1f2f38ea5f
Update to latest 'derive_utils'.
2018-09-14 23:15:58 -07:00
jeb
cfdb2a404b
Add Icon (image/x-icon) as a known media type.
2018-09-11 15:16:06 -07:00
jeb
242b358e37
Fix typo in 'handle_error' docstring.
2018-09-11 15:13:20 -07:00
Tal
8172f748b3
Implement 'Clone' for all URI types.
2018-09-03 19:42:34 -07:00
jeb
1da506ea5d
Remove use of the 'const_fn' feature.
2018-09-03 19:41:31 -07:00
Sergio Benitez
42361c31f1
Use crates.io version of 'compiletest_rs'.
2018-08-26 19:24:13 -07:00
Sergio Benitez
df0b96d3fa
Remove 'attr_literals' feature: stabilized.
2018-08-26 19:18:49 -07:00
jeb
59e9f7fcc9
Update codegen for 2018-08-23 nightly.
2018-08-24 00:40:56 -06:00
Sergio Benitez
fd6d577158
Remove 'use_extern_macros' feature: stabilized.
2018-08-18 17:06:28 -07:00
Sergio Benitez
7b4747ff1c
Fix 'Segments::into_path_buf()' docstring.
2018-08-17 11:14:45 -07:00
Sergio Benitez
fe9fad339e
Clean up connection pooling documentation.
2018-08-15 23:31:49 -07:00
Eric Dattore
60b9f06407
Implement connection pooling support in contrib.
...
Resolves #167 .
2018-08-15 22:11:53 -07:00
Sergio Benitez
01a5011b61
Add a module-level docstring to 'http'.
2018-08-15 19:55:34 -07:00
Sergio Benitez
b642e94a2c
Reduce or consolidate git-based dependencies.
2018-08-15 19:44:35 -07:00
messense
135b7d29ae
Update codegen for 2018-08-14 nightly.
2018-08-14 22:01:33 -07:00