api: translate ENOTFOUND to 404 for downloads
and percolate the HttpError back up on the client side Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
parent
86f6f74114
commit
91f5594c08
@ -6,7 +6,12 @@ use proxmox::http_err;
|
|||||||
|
|
||||||
pub async fn create_download_response(path: PathBuf) -> Result<Response<Body>, Error> {
|
pub async fn create_download_response(path: PathBuf) -> Result<Response<Body>, Error> {
|
||||||
let file = tokio::fs::File::open(path.clone())
|
let file = tokio::fs::File::open(path.clone())
|
||||||
.map_err(move |err| http_err!(BAD_REQUEST, format!("open file {:?} failed: {}", path.clone(), err)))
|
.map_err(move |err| {
|
||||||
|
match err.kind() {
|
||||||
|
std::io::ErrorKind::NotFound => http_err!(NOT_FOUND, format!("open file {:?} failed - not found", path.clone())),
|
||||||
|
_ => http_err!(BAD_REQUEST, format!("open file {:?} failed: {}", path.clone(), err)),
|
||||||
|
}
|
||||||
|
})
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let payload = tokio_util::codec::FramedRead::new(file, tokio_util::codec::BytesCodec::new())
|
let payload = tokio_util::codec::FramedRead::new(file, tokio_util::codec::BytesCodec::new())
|
||||||
|
@ -16,6 +16,7 @@ use percent_encoding::percent_encode;
|
|||||||
use xdg::BaseDirectories;
|
use xdg::BaseDirectories;
|
||||||
|
|
||||||
use proxmox::{
|
use proxmox::{
|
||||||
|
api::error::HttpError,
|
||||||
sys::linux::tty,
|
sys::linux::tty,
|
||||||
tools::{
|
tools::{
|
||||||
fs::{file_get_json, replace_file, CreateOptions},
|
fs::{file_get_json, replace_file, CreateOptions},
|
||||||
@ -606,7 +607,7 @@ impl HttpClient {
|
|||||||
Ok(value)
|
Ok(value)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
bail!("HTTP Error {}: {}", status, text);
|
Err(Error::from(HttpError::new(status, text)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -819,7 +820,7 @@ impl H2Client {
|
|||||||
bail!("got result without data property");
|
bail!("got result without data property");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
bail!("HTTP Error {}: {}", status, text);
|
Err(Error::from(HttpError::new(status, text)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user