diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs index edaf2839..2510b0c0 100644 --- a/src/api2/admin/datastore.rs +++ b/src/api2/admin/datastore.rs @@ -9,7 +9,7 @@ use serde_json::{json, Value}; use proxmox::{sortable, identity}; use proxmox::api::{http_err, list_subdirs_api_method}; -use proxmox::api::{ApiFuture, ApiHandler, ApiMethod, Router, RpcEnvironment, RpcEnvironmentType}; +use proxmox::api::{ApiResponseFuture, ApiHandler, ApiMethod, Router, RpcEnvironment, RpcEnvironmentType}; use proxmox::api::router::SubdirMap; use proxmox::api::schema::*; use proxmox::tools::{try_block, fs::file_get_contents, fs::file_set_contents}; @@ -486,7 +486,7 @@ fn download_file( param: Value, _info: &ApiMethod, _rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let store = tools::required_string_param(¶m, "store")?; @@ -545,7 +545,7 @@ fn upload_backup_log( param: Value, _info: &ApiMethod, _rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let store = tools::required_string_param(¶m, "store")?; diff --git a/src/api2/backup.rs b/src/api2/backup.rs index 9329e067..894d7c13 100644 --- a/src/api2/backup.rs +++ b/src/api2/backup.rs @@ -7,7 +7,7 @@ use serde_json::{json, Value}; use proxmox::{sortable, identity}; use proxmox::api::list_subdirs_api_method; -use proxmox::api::{ApiFuture, ApiHandler, ApiMethod, Router, RpcEnvironment}; +use proxmox::api::{ApiResponseFuture, ApiHandler, ApiMethod, Router, RpcEnvironment}; use proxmox::api::router::SubdirMap; use proxmox::api::schema::*; @@ -47,7 +47,7 @@ fn upgrade_to_backup_protocol( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let debug = param["debug"].as_bool().unwrap_or(false); @@ -574,7 +574,7 @@ fn dynamic_chunk_index( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let env: &BackupEnvironment = rpcenv.as_ref(); @@ -649,7 +649,7 @@ fn fixed_chunk_index( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let env: &BackupEnvironment = rpcenv.as_ref(); diff --git a/src/api2/backup/upload_chunk.rs b/src/api2/backup/upload_chunk.rs index 3a9577ef..1bc8c7d8 100644 --- a/src/api2/backup/upload_chunk.rs +++ b/src/api2/backup/upload_chunk.rs @@ -9,7 +9,7 @@ use hyper::http::request::Parts; use serde_json::{json, Value}; use proxmox::{sortable, identity}; -use proxmox::api::{ApiFuture, ApiHandler, ApiMethod, RpcEnvironment}; +use proxmox::api::{ApiResponseFuture, ApiHandler, ApiMethod, RpcEnvironment}; use proxmox::api::schema::*; use crate::api2::types::*; @@ -115,7 +115,7 @@ fn upload_fixed_chunk( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let wid = tools::required_integer_param(¶m, "wid")? as usize; @@ -173,7 +173,7 @@ fn upload_dynamic_chunk( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let wid = tools::required_integer_param(¶m, "wid")? as usize; @@ -209,7 +209,7 @@ fn upload_speedtest( _param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { @@ -257,7 +257,7 @@ fn upload_blob( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let file_name = tools::required_string_param(¶m, "file-name")?.to_owned(); diff --git a/src/api2/reader.rs b/src/api2/reader.rs index 42801526..130fe7ba 100644 --- a/src/api2/reader.rs +++ b/src/api2/reader.rs @@ -8,7 +8,7 @@ use serde_json::Value; use proxmox::{sortable, identity}; use proxmox::api::http_err; -use proxmox::api::{ApiFuture, ApiHandler, ApiMethod, Router, RpcEnvironment}; +use proxmox::api::{ApiResponseFuture, ApiHandler, ApiMethod, Router, RpcEnvironment}; use proxmox::api::schema::*; use crate::api2::types::*; @@ -49,7 +49,7 @@ fn upgrade_to_backup_reader_protocol( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let debug = param["debug"].as_bool().unwrap_or(false); @@ -172,7 +172,7 @@ fn download_file( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let env: &ReaderEnvironment = rpcenv.as_ref(); @@ -223,7 +223,7 @@ fn download_chunk( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { async move { let env: &ReaderEnvironment = rpcenv.as_ref(); @@ -258,7 +258,7 @@ fn download_chunk_old( param: Value, _info: &ApiMethod, rpcenv: Box, -) -> Result { +) -> Result { let env: &ReaderEnvironment = rpcenv.as_ref(); let env2 = env.clone(); @@ -303,7 +303,7 @@ fn speedtest( _param: Value, _info: &ApiMethod, _rpcenv: Box, -) -> ApiFuture { +) -> ApiResponseFuture { let buffer = vec![65u8; 1024*1024]; // nonsense [A,A,A...] diff --git a/src/server/h2service.rs b/src/server/h2service.rs index cb100fd0..982618d6 100644 --- a/src/server/h2service.rs +++ b/src/server/h2service.rs @@ -7,7 +7,7 @@ use std::task::{Context, Poll}; use futures::*; use hyper::{Body, Request, Response, StatusCode}; -use proxmox::api::{http_err, ApiFuture, HttpError, Router, RpcEnvironment}; +use proxmox::api::{http_err, ApiResponseFuture, HttpError, Router, RpcEnvironment}; use crate::tools; use crate::server::formatter::*; @@ -35,7 +35,7 @@ impl H2Service { if self.debug { self.worker.log(msg); } } - fn handle_request(&self, req: Request) -> ApiFuture { + fn handle_request(&self, req: Request) -> ApiResponseFuture { let (parts, body) = req.into_parts(); diff --git a/src/server/rest.rs b/src/server/rest.rs index 119883f1..8d82f855 100644 --- a/src/server/rest.rs +++ b/src/server/rest.rs @@ -285,6 +285,12 @@ pub async fn handle_api_request { + let params = get_request_parameters(info.parameters, parts, req_body, uri_param).await?; + (handler)(params, info, &mut rpcenv) + .await + .map(|data| (formatter.format_data)(data, &rpcenv)) + } }; let resp = match result {