diff --git a/src/api2/admin/datastore/backup/upload_chunk.rs b/src/api2/admin/datastore/backup/upload_chunk.rs index d7bdf048..eecc3bb1 100644 --- a/src/api2/admin/datastore/backup/upload_chunk.rs +++ b/src/api2/admin/datastore/backup/upload_chunk.rs @@ -83,14 +83,9 @@ fn upload_chunk( let abort_future = env.worker.abort_future().then(|_| Ok(Value::Null)); let resp = upload.select(abort_future) - .then(move |result| { - use crate::server::formatter::*; - match result { - Ok((result,_)) => Ok(json_response(result)), - Err((err, _)) => Ok(json_format_error(err)), - } - }); - + .and_then(|(result, _)| Ok(result)) + .map_err(|(err, _)| err) + .then(|res| Ok(crate::server::formatter::json_response(res))); Ok(Box::new(resp)) diff --git a/src/server/formatter.rs b/src/server/formatter.rs index e49aac14..28380937 100644 --- a/src/server/formatter.rs +++ b/src/server/formatter.rs @@ -18,10 +18,16 @@ pub struct OutputFormatter { static JSON_CONTENT_TYPE: &str = "application/json;charset=UTF-8"; +pub fn json_response(result: Result) -> Response { + match result { + Ok(data) => json_data_response(data), + Err(err) => json_error_response(err), + } +} -pub fn json_response(result: Value) -> Response { +pub fn json_data_response(data: Value) -> Response { - let json_str = result.to_string(); + let json_str = data.to_string(); let raw = json_str.into_bytes(); @@ -47,10 +53,10 @@ fn json_format_data(data: Value, rpcenv: &RpcEnvironment) -> Response { result["changes"] = changes.clone(); } - json_response(result) + json_data_response(result) } -pub fn json_format_error(err: Error) -> Response { +pub fn json_error_response(err: Error) -> Response { let mut response = if let Some(apierr) = err.downcast_ref::() { let mut resp = Response::new(Body::from(apierr.message.clone())); @@ -73,7 +79,7 @@ pub fn json_format_error(err: Error) -> Response { pub static JSON_FORMATTER: OutputFormatter = OutputFormatter { format_data: json_format_data, - format_error: json_format_error, + format_error: json_error_response, }; fn extjs_format_data(data: Value, rpcenv: &RpcEnvironment) -> Response { @@ -92,7 +98,7 @@ fn extjs_format_data(data: Value, rpcenv: &RpcEnvironment) -> Response { } - json_response(result) + json_data_response(result) } fn extjs_format_error(err: Error) -> Response { @@ -108,7 +114,7 @@ fn extjs_format_error(err: Error) -> Response { "success": false }); - let mut response = json_response(result); + let mut response = json_data_response(result); response.extensions_mut().insert(ErrorMessageExtension(message));