14 KiB
14 KiB
v0.3.6 (September 27, 2023)
- Features:
- Add ability to pass
Nonetomultipart::form().max_length(). - Implement
ReplyforResult<impl Reply, impl Reply>. - Make
multipart::Part::content_type()return the full mime string. - Add
TlsServer::try_bind_with_graceful_shutdown().
- Add ability to pass
- Fixes:
- Updated tungstenite and rustls dependencies for security fixes.
v0.3.5 (April 28, 2023)
- Fixes:
multipartfilters now usemulterdependency, fixing some streaming bugs.Rejection::into_response()is significantly faster.
v0.3.4 (March 31, 2023)
- Fixes:
multipart::Partdata is now streamed instead of buffered.- Update dependency used for
multipartfilters.
v0.3.3 (September 27, 2022)
- Fixes:
- Fix
fsfilters path sanitization to reject colons on Windows.
- Fix
v0.3.2 (November 9, 2021)
- Features:
- Add
Filter::then(), which is likeFilter::map()in that it's infallible, but is async likeFilter::and_then(). - Add
redirect::found()reply helper that returns302 Found. - Add
compression-brotliandcompression-gzipcargo features to enable only the compression you need. - Allow
HEADrequests to be served tofs::dir()filters. - Allow
path!()with no arguments.
- Add
- Fixes:
- Update private dependencies Tungstenite and Multipart.
- Replaces uses of
futureswithfutures-util, which is a smaller dependency.
v0.3.1 (March 24, 2021)
- Features:
- Add
pongconstructor to websocket messages. - Add
redirect::see_otherandredirect::permanenthelpers.
- Add
- Fixes:
- Fix
fsfilters sometimes having an off-by-one error with range requests. - Fix CORS to allow spaces when checking
Access-Control-Request-Headers.
- Fix
v0.3.0 (January 19, 2021)
- Features:
- Add TLS client authentication support.
- Add TLS OCSP stapling support.
- Add
From<Reject>forRejection. - Add
close_frameaccessor tows::Message.
- Changes:
- Update to Tokio v1.
- Update to Bytes v1.
- Update to hyper v0.14.
- Rework
ssefilter to be more likews, with a singleEventtype and builder. - Change
cookiefilter to extract a genericFromStrvalue.
v0.2.5 (August 31, 2020)
- Features:
- Add
wrap_fn, which can be used to create aWrapfrom a closure. These in turn are used withFilter::with(). - Add
warp::hostfilters to deal withHost/:authorityheaders. - Relax some lifetime bounds on
Server.
- Add
- Fixes:
- Fix panic when URI doesn't have a slash (for example,
CONNECT foo.bar).
- Fix panic when URI doesn't have a slash (for example,
v0.2.4 (July 20, 2020)
- Features:
- Add
tracinginternals in place oflog(log is still emitted for backwards compatibility). - Add
warp::tracemodule set of filters to customizetracingdianostics. - Add
pathmethod towarp::fs::Filereply. - Add
sourceimplementation forBodyDeserializeError. - Make
warp::ws::MissingConnectionUpgraderejection public.
- Add
v0.2.3 (May 19, 2020)
- Features:
- Add
warp::compressionfilters, which will compress response bodies. - Add
warp::header::value()filter to get a requestHeaderValue. - Add
request_headersmethod towarp::log::Info. - Add
max_frame_sizetowarp::ws::Wsbuilder. - Add
remote_addrtowarp::test::RequestBuilder. - Add
try_bind_with_graceful_shutdowntowarp::Serverbuilder. - Add
serve_incoming_with_graceful_shutdowntowarp::Serverbuilder.
- Add
- Fixes:
- Fix
warp::addr::remotewhen used withServer::tls. - Fix panic in
warp::path::{peek, tail, full}filters when the request URI is in authority-form or asterisk-form.
- Fix
v0.2.2 (March 3, 2020)
- Features:
- Implement
Replyfor allBox<T>whereT: Reply. - Add
namemethods toMissingHeader,InvalidHeader, andMissingCookierejections. - Add
warp::ext::optional()filter that optionally retrieves an extension from the request.
- Implement
- Fixes:
- Fix the sending of pings when a user sends a
ws::Message::ping().
- Fix the sending of pings when a user sends a
v0.2.1 (January 23, 2020)
- Features:
- Add
closeandclose_withconstructors towarp::ws::Message.
- Add
- Fixes:
- Fix
warp::fsfilters using a very small read buffer.
- Fix
v0.2.0 (January 16, 2020)
- Features:
- Update to
std::future, addingasync/awaitsupport! - Add
warp::service()to convert aFilterinto atower::Service. - Implement
ReplyforBox<dyn Reply>.
- Update to
- Changes:
- Refactored Rejection system (#311).
- Change
path!macro to assume apath::end()by default, with explicit/ ..to allow building a prefix (#359). - Change
warp::path(str)to accept anyAsRef<str>argument. - Rename "2"-suffixed filters and types (
get2toget,ws2tows, etc). Filter::{or, or_else, recover}now requireSelf::Error=Rejection. This helps catch filters that didn't make sense (likewarp::any().or(warp::get())).- Change several
warp::bodyfilters (#345). - Change
warp::cors()to return awarp::cors::Builderwhich still implementsWrap, but can alsobuilda cheaper-to-clone wrapper. - Change
warp::multipartstream API to allow for errors when streaming. - Change
warp::sseto no longer return aFilter, addswarp::sse::replyto do whatSse::replydid. - Change
Server::tls()to return a TLS server builder (#340). - Change internal
warp::never::Neverusage withstd::convert::Infallible. - Remove
warp::ext::set()function (#222). - Remove deprecated
warp::cookie::optional_value().
v0.1.20 (September 17, 2019)
- Features:
- Implement
Clonefor thewarp::corsfilter. - Add
into_bytesmethod forwarp::ws::Message.
- Implement
v0.1.19 (August 16, 2019)
- Features:
- Make
warp::multipartandwrap::wssupport optional, though enabled by default.
- Make
- Fixes:
- Fix
warp::fs::dirfilter to reject paths containing backslashes.
- Fix
v0.1.18 (July 25, 2019)
- Features:
- Add
warp::multipartsupport.
- Add
v0.1.17 (July 8, 2019)
- Features:
- Export all built-in Rejection causes in the
warp::rejectmodule. - Add
Server::try_bindas fallible bind methods.
- Export all built-in Rejection causes in the
v0.1.16 (June 11, 2019)
- 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
v0.1.15 (April 2, 2019)
- Features:
- Add more accessors to
warp::log::Infotype for building custom log formats. - Implement
ReplyforCow<'static, str>.
- Add more accessors to
v0.1.14 (March 19, 2019)
- Features:
- Add
warp::header::optionalfilter.
- Add
v0.1.13 (February 13, 2019)
- Features:
- Implement
ReplyforVec<u8>and&'static [u8]. - Set
content-typeheader automatically for string and bytes replies. - Add
expose_headerstowarp::corsfilter.
- Implement
v0.1.12 (January 29, 2019)
- 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
v0.1.11 (January 14, 2019)
- 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.
v0.1.10 (December 17, 2018)
- 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
v0.1.9 (October 30, 2018)
- 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.
v0.1.8 (October 25, 2018)
- 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.
-
v0.1.7 (October 15, 2018)
-
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
v0.1.6 (October 5, 2018)
- 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
v0.1.5 (October 3, 2018)
-
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
v0.1.4 (September 25, 2018)
- 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
v0.1.3 (August 28, 2018)
- 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
v0.1.2 (August 14, 2018)
- 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
v0.1.1 (August 7, 2018)
- 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
v0.1.0 (August 1, 2018)
- Initial release.