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> {
|
||||
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?;
|
||||
|
||||
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 proxmox::{
|
||||
api::error::HttpError,
|
||||
sys::linux::tty,
|
||||
tools::{
|
||||
fs::{file_get_json, replace_file, CreateOptions},
|
||||
|
@ -606,7 +607,7 @@ impl HttpClient {
|
|||
Ok(value)
|
||||
}
|
||||
} 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");
|
||||
}
|
||||
} else {
|
||||
bail!("HTTP Error {}: {}", status, text);
|
||||
Err(Error::from(HttpError::new(status, text)))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue