mirror of
https://github.com/actix/actix-web.git
synced 2024-11-26 03:21:08 +00:00
This commit is contained in:
parent
b018e4abaf
commit
c695358bcb
2 changed files with 45 additions and 0 deletions
|
@ -6,6 +6,10 @@
|
||||||
|
|
||||||
* Add `from_file` and `from_file_with_config` to `NamedFile` to allow sending files without a known path. #670
|
* Add `from_file` and `from_file_with_config` to `NamedFile` to allow sending files without a known path. #670
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* Ignored the `If-Modified-Since` if `If-None-Match` is specified. #680
|
||||||
|
|
||||||
## [0.7.18] - 2019-01-10
|
## [0.7.18] - 2019-01-10
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
41
src/fs.rs
41
src/fs.rs
|
@ -441,6 +441,8 @@ impl<C: StaticFileConfig> Responder for NamedFile<C> {
|
||||||
// check last modified
|
// check last modified
|
||||||
let not_modified = if !none_match(etag.as_ref(), req) {
|
let not_modified = if !none_match(etag.as_ref(), req) {
|
||||||
true
|
true
|
||||||
|
} else if req.headers().contains_key(header::IF_NONE_MATCH) {
|
||||||
|
false
|
||||||
} else if let (Some(ref m), Some(header::IfModifiedSince(ref since))) =
|
} else if let (Some(ref m), Some(header::IfModifiedSince(ref since))) =
|
||||||
(last_modified, req.get_header())
|
(last_modified, req.get_header())
|
||||||
{
|
{
|
||||||
|
@ -944,6 +946,8 @@ impl HttpRange {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
use std::time::Duration;
|
||||||
|
use std::ops::Add;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
use application::App;
|
use application::App;
|
||||||
|
@ -963,6 +967,43 @@ mod tests {
|
||||||
assert_eq!(m, mime::APPLICATION_OCTET_STREAM);
|
assert_eq!(m, mime::APPLICATION_OCTET_STREAM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_if_modified_since_without_if_none_match() {
|
||||||
|
let mut file = NamedFile::open("Cargo.toml")
|
||||||
|
.unwrap()
|
||||||
|
.set_cpu_pool(CpuPool::new(1));
|
||||||
|
let since = header::HttpDate::from(
|
||||||
|
SystemTime::now().add(Duration::from_secs(60)));
|
||||||
|
|
||||||
|
let req = TestRequest::default()
|
||||||
|
.header(header::IF_MODIFIED_SINCE, since)
|
||||||
|
.finish();
|
||||||
|
let resp = file.respond_to(&req).unwrap();
|
||||||
|
assert_eq!(
|
||||||
|
resp.status(),
|
||||||
|
StatusCode::NOT_MODIFIED
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_if_modified_since_with_if_none_match() {
|
||||||
|
let mut file = NamedFile::open("Cargo.toml")
|
||||||
|
.unwrap()
|
||||||
|
.set_cpu_pool(CpuPool::new(1));
|
||||||
|
let since = header::HttpDate::from(
|
||||||
|
SystemTime::now().add(Duration::from_secs(60)));
|
||||||
|
|
||||||
|
let req = TestRequest::default()
|
||||||
|
.header(header::IF_NONE_MATCH, "miss_etag")
|
||||||
|
.header(header::IF_MODIFIED_SINCE, since)
|
||||||
|
.finish();
|
||||||
|
let resp = file.respond_to(&req).unwrap();
|
||||||
|
assert_ne!(
|
||||||
|
resp.status(),
|
||||||
|
StatusCode::NOT_MODIFIED
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_named_file_text() {
|
fn test_named_file_text() {
|
||||||
assert!(NamedFile::open("test--").is_err());
|
assert!(NamedFile::open("test--").is_err());
|
||||||
|
|
Loading…
Reference in a new issue