mirror of https://github.com/fafhrd91/actix-web
Merge branch 'master' into issue-3214-customize-cookie
This commit is contained in:
commit
4513f3db4b
|
@ -18,7 +18,7 @@ concurrency:
|
|||
jobs:
|
||||
read_msrv:
|
||||
name: Read MSRV
|
||||
uses: actions-rust-lang/msrv/.github/workflows/msrv.yml@main
|
||||
uses: actions-rust-lang/msrv/.github/workflows/msrv.yml@v0.1.0
|
||||
|
||||
build_and_test:
|
||||
needs: read_msrv
|
||||
|
|
|
@ -178,14 +178,14 @@ impl Parser {
|
|||
};
|
||||
|
||||
if payload_len < 126 {
|
||||
dst.reserve(p_len + 2 + if mask { 4 } else { 0 });
|
||||
dst.reserve(p_len + 2);
|
||||
dst.put_slice(&[one, two | payload_len as u8]);
|
||||
} else if payload_len <= 65_535 {
|
||||
dst.reserve(p_len + 4 + if mask { 4 } else { 0 });
|
||||
dst.reserve(p_len + 4);
|
||||
dst.put_slice(&[one, two | 126]);
|
||||
dst.put_u16(payload_len as u16);
|
||||
} else {
|
||||
dst.reserve(p_len + 10 + if mask { 4 } else { 0 });
|
||||
dst.reserve(p_len + 10);
|
||||
dst.put_slice(&[one, two | 127]);
|
||||
dst.put_u64(payload_len as u64);
|
||||
};
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
|
||||
## Example
|
||||
|
||||
Dependencies:
|
||||
|
@ -65,6 +64,7 @@ async fn main() -> std::io::Result<()> {
|
|||
```
|
||||
|
||||
Curl request :
|
||||
|
||||
```bash
|
||||
curl -v --request POST \
|
||||
--url http://localhost:8080/videos \
|
||||
|
@ -72,7 +72,6 @@ curl -v --request POST \
|
|||
-F file=@./Cargo.lock
|
||||
```
|
||||
|
||||
|
||||
### Examples
|
||||
|
||||
https://github.com/actix/examples/tree/master/forms/multipart
|
||||
https://github.com/actix/examples/tree/master/forms/multipart
|
||||
|
|
|
@ -3,8 +3,9 @@
|
|||
## Unreleased
|
||||
|
||||
- Add `TestServerConfig::rustls_0_23()` method for Rustls v0.23 support behind new `rustls-0_23` crate feature.
|
||||
- Minimum supported Rust version (MSRV) is now 1.72.
|
||||
- Add `TestServerConfig::disable_redirects()` method.
|
||||
- Various types from `awc`, such as `ClientRequest` and `ClientResponse`, are now re-exported.
|
||||
- Minimum supported Rust version (MSRV) is now 1.72.
|
||||
|
||||
## 0.1.3
|
||||
|
||||
|
|
|
@ -149,6 +149,8 @@ where
|
|||
StreamType::Rustls023(_) => true,
|
||||
};
|
||||
|
||||
let client_cfg = cfg.clone();
|
||||
|
||||
// run server in separate orphaned thread
|
||||
thread::spawn(move || {
|
||||
rt::System::new().block_on(async move {
|
||||
|
@ -460,7 +462,13 @@ where
|
|||
}
|
||||
};
|
||||
|
||||
Client::builder().connector(connector).finish()
|
||||
let mut client_builder = Client::builder().connector(connector);
|
||||
|
||||
if client_cfg.disable_redirects {
|
||||
client_builder = client_builder.disable_redirects();
|
||||
}
|
||||
|
||||
client_builder.finish()
|
||||
};
|
||||
|
||||
TestServer {
|
||||
|
@ -507,6 +515,7 @@ pub struct TestServerConfig {
|
|||
client_request_timeout: Duration,
|
||||
port: u16,
|
||||
workers: usize,
|
||||
disable_redirects: bool,
|
||||
}
|
||||
|
||||
impl Default for TestServerConfig {
|
||||
|
@ -524,6 +533,7 @@ impl TestServerConfig {
|
|||
client_request_timeout: Duration::from_secs(5),
|
||||
port: 0,
|
||||
workers: 1,
|
||||
disable_redirects: false,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -611,6 +621,15 @@ impl TestServerConfig {
|
|||
self.workers = workers;
|
||||
self
|
||||
}
|
||||
|
||||
/// Instruct the client to not follow redirects.
|
||||
///
|
||||
/// By default, the client will follow up to 10 consecutive redirects
|
||||
/// before giving up.
|
||||
pub fn disable_redirects(mut self) -> Self {
|
||||
self.disable_redirects = true;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
/// A basic HTTP server controller that simplifies the process of writing integration tests for
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
### Added
|
||||
|
||||
- Add `guard::GuardContext::app_data()` method.
|
||||
- Implement `From<Box<dyn ResponseError>>` for `Error`.
|
||||
- Add `CustomizeResponder::add_cookie()` method.
|
||||
|
||||
|
|
|
@ -110,6 +110,12 @@ impl<'a> GuardContext<'a> {
|
|||
pub fn header<H: Header>(&self) -> Option<H> {
|
||||
H::parse(self.req).ok()
|
||||
}
|
||||
|
||||
/// Counterpart to [HttpRequest::app_data](crate::HttpRequest::app_data).
|
||||
#[inline]
|
||||
pub fn app_data<T: 'static>(&self) -> Option<&T> {
|
||||
self.req.app_data()
|
||||
}
|
||||
}
|
||||
|
||||
/// Interface for routing guards.
|
||||
|
@ -512,4 +518,18 @@ mod tests {
|
|||
.to_srv_request();
|
||||
assert!(guard.check(&req.guard_ctx()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn app_data() {
|
||||
const TEST_VALUE: u32 = 42;
|
||||
let guard = fn_guard(|ctx| dbg!(ctx.app_data::<u32>()) == Some(&TEST_VALUE));
|
||||
|
||||
let req = TestRequest::default().app_data(TEST_VALUE).to_srv_request();
|
||||
assert!(guard.check(&req.guard_ctx()));
|
||||
|
||||
let req = TestRequest::default()
|
||||
.app_data(TEST_VALUE * 2)
|
||||
.to_srv_request();
|
||||
assert!(!guard.check(&req.guard_ctx()));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue