- Features:
- Unseal the
Replytrait: custom types can now implementReply. - Add
warp::sse::keep_alive()replacement forwarp::sse::keep()which allows customizing keep-alive behavior. - Add
warp::log::Info::host()accessor.
- Unseal the
- Fixes:
- Fix
warp::fsfilters from sending some headers for304responses.
- Fix
- Features:
- Add more accessors to
warp::log::Infotype for building custom log formats. - Implement
ReplyforCow<'static, str>.
- Add more accessors to
- Features:
- Add
warp::header::optionalfilter.
- Add
- Features:
- Implement
ReplyforVec<u8>and&'static [u8]. - Set
content-typeheader automatically for string and bytes replies. - Add
expose_headerstowarp::corsfilter.
- Implement
- Features:
- Implement
PartialEq,Eq, andCloneforwarp::ws::Message.
- Implement
- Fixes:
- Fix panic when incoming request URI may not have a path (such as
CONNECTrequests).
- Fix panic when incoming request URI may not have a path (such as
- Features:
- Add
warp::ssefilters for handling Server-Sent-Events. - Add
allow_headerstowarp::corsfilter.
- Add
- Fixes:
- Fix TLS handshake to close the connection if handshake fails.
- Features:
- Add optional TLS support. Enable the
tlsfeature, and then useServer::tls. - Add
warp::corsfilter for CORS support. - Add
warp::addr::remoteto access the remote address of a request. - Add
warp::log::customto support customizing of access logging. - Add
warp::test::wsto improve testing Websocket filters.
- Add optional TLS support. Enable the
- Features:
- Add
warp::ext::getandwarp::ext::setto set request extensions. - Add
Filter::untuple_oneto unroll nested tuple layers from extractions. - Add
Ws2::max_send_queueconfiguration method. - Add
ws::Message::is_pingmethod, and yield pings to user code.
- Add
- Fixes:
- Fix panic in debug mode when receiving a websocket ping.
- Features:
-
Improved flexibility of
Rejectionsystem.The
Rejectiontype can now nest and combine arbitrary rejections, so it is no longer bound to a small set of meanings. The ranking of status codes is still used to determine which rejection gets priority.A different priority can be implemented by handling rejections with a
Filter::recover, and searching for causes in order viaRejection::find_cause.- Adds
warp::reject::custom()to create aRejectionwith anyInto<Box<std::error::Error>>. These rejections should be handled with an eventualFilter::recover. Any unhandled custom rejections are considered a server error. - Deprecates
Rejection::with. Use custom rejections instead. - Deprecates
Rejection::into_cause, as it can no longer work. Always returnsErr(Rejection). - Deprecates
Rejection::json, since the format needed is too generic. Theerrors.rsexample shows how to send custom JSON when recovering from rejections. - Deprecates
warp::reject(), since it current signals a400 Bad Request, but in newer versions, it will signal404 Not Found. It's deprecated simply to warn that the semantics are changing, but the function won't actually go away. - Deprecates
reject::bad_request(),reject::forbidden(), andreject::server_error(). Uses custom rejections instead.
- Adds
-
Renamed
warp::path::indextowarp::path::end.
-
-
Features:
- Export the types returned from the
warp::body::stream()filter,BodyStreamandStreamBuf. - Deprecated
Rejection::into_cause, since an upcoming Rejection refactor will make it impossible to support.
- Export the types returned from the
-
Fixes:
- Fix websocket filters to do a case-insensitive match of the
Connectionheader.
- Fix websocket filters to do a case-insensitive match of the
- Features:
- Add Conditional and Range request support for
warp::fsfilters. - Relaxed bounds on
Rejection::withto no longer need to beSized. - Add
warp::path::peek()which gets the unmatched tail without adjusting the currently matched path.
- Add Conditional and Range request support for
-
Features:
- Serve
index.htmlautomatically withwarp::fs::dirfilter. - Include
last-modifiedheader withwarp::fsfilters. - Add
warp::redirectto easily reply with redirections. - Add
warp::reply::{with_status, with_header}to wrapimpl Replys directly with a new status code or header. - Add support for running a warp
Serverwith a custom source of incoming connections.Server::run_incomingto have the runtime started automatically.Server::serve_incomingto get a future to run on existing runtime.- These can be used to support Unix Domain Sockets, TLS, and other transports.
- Add
Rejection::into_cause()to retrieve the original error of a rejection back. - Add
Rejection::json()to convert a rejection into a JSON response.
- Serve
-
Fixes
- Internal errors in warp that result in rendering a
500 Internal Server Errorare now also logged at theerrorlevel.
- Internal errors in warp that result in rendering a
- Features:
- Add
warp::reply::with::headers(HeaderMap)filter wrapper. - Add
warp::cookie::optional()to get an optional cookie value. - Add
warp::path::full()to be able to extract the full request path without affecting route matching. - Add graceful shutdown support to the
Server. - Allow empty query strings to be treated as for
warp::query().
- Add
- Features:
- Add
warp::reject::forbidden()to represent403 Forbiddenresponses. - Add
Rejection::with(cause)to customize rejection messages.
- Add
- Fixes:
- Fix
warp::body::formto allow charsets in thecontent-typeheader.
- Fix
- Features:
- Implemented
ReplyforResponse<impl Into<hyper::Body>, allowing streaming response bodies. - Add
warp::body::stream()filter to access the request body as animpl Stream. - Add
warp::ws2()as a more flexible websocket filter.- This allows passing other extracted values to the upgrade callback, such as a value from a header or path.
- Deprecates
warp::ws(), andws2()will becomews()in 0.2.
- Add
warp::get2(),warp::post2(),warp::put2(), andwarp::delete2()as more standard method filters that are used via chaining instead of nesting.get(),post(),put(), anddelete()are deprecated, and the new versions will become them in 0.2.
- Add
Filter::unify()for when a filter returnsEither<T, T>, converting theEitherinto the innerT, regardless of which variant it was.-
This requires that both sides of the
Eitherbe the same type. -
This can be useful when extracting a value that might be present in different places of the request.
// Allow `MyId` to be a path parameter or a header... let id = warp::path::param::<MyId>() .or(warp::header::<MyId>()) .unify(); // A way of providing default values... let dnt = warp::header::<bool>("dnt") .or(warp::any().map(|| true)) .unify();
-
- Add
content-typeheader automatically to replies fromfileanddirfilters based on file extension. - Add
warp::head(),warp::options(), andwarp::patch()as new Method filters. - Try to use OS blocksize in
warp::fsfilters.
- Implemented
- Fixes:
- Chaining filters that try to consume the request body will log that the body is already consumed, and return a
500 Internal Server Errorrejection.
- Chaining filters that try to consume the request body will log that the body is already consumed, and return a
- Features:
- Add
warp::query::raw()filter to get query as aString. - Add
Filter::recover()to ease customizing of rejected responses. - Add
warp::header::headers_clone()filter to get a clone of request'sHeaderMap. - Add
warp::path::tail()filter to get remaining "tail" of the request path.
- Add
- Fixes:
- URL decode path segments in
warp::fsfilters.
- URL decode path segments in
- Intial release.