api2: update for latest proxmox-api changes

- rename ApiFuture into ApiResponseFuture
- impl. ApiHandler::Async
This commit is contained in:
Dietmar Maurer 2019-12-16 09:59:45 +01:00
parent 236a396aa1
commit bb084b9c91
6 changed files with 26 additions and 20 deletions

View File

@ -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<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
let store = tools::required_string_param(&param, "store")?;
@ -545,7 +545,7 @@ fn upload_backup_log(
param: Value,
_info: &ApiMethod,
_rpcenv: Box<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
let store = tools::required_string_param(&param, "store")?;

View File

@ -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<dyn RpcEnvironment>,
) -> 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<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
let env: &BackupEnvironment = rpcenv.as_ref();
@ -649,7 +649,7 @@ fn fixed_chunk_index(
param: Value,
_info: &ApiMethod,
rpcenv: Box<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
let env: &BackupEnvironment = rpcenv.as_ref();

View File

@ -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<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
let wid = tools::required_integer_param(&param, "wid")? as usize;
@ -173,7 +173,7 @@ fn upload_dynamic_chunk(
param: Value,
_info: &ApiMethod,
rpcenv: Box<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
let wid = tools::required_integer_param(&param, "wid")? as usize;
@ -209,7 +209,7 @@ fn upload_speedtest(
_param: Value,
_info: &ApiMethod,
rpcenv: Box<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
@ -257,7 +257,7 @@ fn upload_blob(
param: Value,
_info: &ApiMethod,
rpcenv: Box<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
let file_name = tools::required_string_param(&param, "file-name")?.to_owned();

View File

@ -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<dyn RpcEnvironment>,
) -> 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<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
let env: &ReaderEnvironment = rpcenv.as_ref();
@ -223,7 +223,7 @@ fn download_chunk(
param: Value,
_info: &ApiMethod,
rpcenv: Box<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
async move {
let env: &ReaderEnvironment = rpcenv.as_ref();
@ -258,7 +258,7 @@ fn download_chunk_old(
param: Value,
_info: &ApiMethod,
rpcenv: Box<dyn RpcEnvironment>,
) -> Result<ApiFuture, Error> {
) -> Result<ApiResponseFuture, Error> {
let env: &ReaderEnvironment = rpcenv.as_ref();
let env2 = env.clone();
@ -303,7 +303,7 @@ fn speedtest(
_param: Value,
_info: &ApiMethod,
_rpcenv: Box<dyn RpcEnvironment>,
) -> ApiFuture {
) -> ApiResponseFuture {
let buffer = vec![65u8; 1024*1024]; // nonsense [A,A,A...]

View File

@ -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 <E: RpcEnvironment + Clone> H2Service<E> {
if self.debug { self.worker.log(msg); }
}
fn handle_request(&self, req: Request<Body>) -> ApiFuture {
fn handle_request(&self, req: Request<Body>) -> ApiResponseFuture {
let (parts, body) = req.into_parts();

View File

@ -285,6 +285,12 @@ pub async fn handle_api_request<Env: RpcEnvironment, S: 'static + BuildHasher +
(handler)(params, info, &mut rpcenv)
.map(|data| (formatter.format_data)(data, &rpcenv))
}
ApiHandler::Async(handler) => {
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 {