tools.rs: new helper required_string_param()

To extract parameters from Value.
This commit is contained in:
Dietmar Maurer 2019-01-17 12:14:02 +01:00
parent 0ee0ad5bf3
commit 0fe5d605e7
3 changed files with 15 additions and 10 deletions

View File

@ -1,5 +1,6 @@
use failure::*;
use crate::tools;
use crate::backup::datastore::*;
use crate::backup::archive_index::*;
//use crate::server::rest::*;
@ -41,8 +42,8 @@ impl Future for UploadCaTar {
fn upload_catar(req_body: hyper::Body, param: Value, _info: &ApiUploadMethod) -> Result<BoxFut, Error> {
let store = param["name"].as_str().unwrap();
let archive_name = param["archive_name"].as_str().unwrap();
let store = tools::required_string_param(&param, "name")?;
let archive_name = tools::required_string_param(&param, "archive_name")?;
println!("Upload {}.catar to {} ({}.aidx)", archive_name, store, archive_name);

View File

@ -19,11 +19,6 @@ use serde_json::{Value};
use hyper::Body;
fn required_string_param<'a>(param: &'a Value, name: &str) -> &'a str {
param[name].as_str().expect(&format!("missing parameter '{}'", name))
}
fn backup_directory(body: Body, store: &str, archive_name: &str) -> Result<(), Error> {
let client = HttpClient::new("localhost");
@ -63,9 +58,9 @@ fn backup_image(datastore: &DataStore, file: &std::fs::File, size: usize, target
fn create_backup(param: Value, _info: &ApiMethod) -> Result<Value, Error> {
let filename = required_string_param(&param, "filename");
let store = required_string_param(&param, "store");
let target = required_string_param(&param, "target");
let filename = tools::required_string_param(&param, "filename")?;
let store = tools::required_string_param(&param, "store")?;
let target = tools::required_string_param(&param, "target")?;
let mut chunk_size = 4*1024*1024;

View File

@ -15,6 +15,8 @@ use std::time::Duration;
use std::os::unix::io::AsRawFd;
use serde_json::Value;
pub mod timer;
/// The `BufferedReader` trait provides a single function
@ -224,3 +226,10 @@ pub fn file_chunker<C, R>(
Ok(())
}
pub fn required_string_param<'a>(param: &'a Value, name: &str) -> Result<&'a str, Error> {
match param[name].as_str() {
Some(s) => Ok(s),
None => bail!("missing parameter '{}'", name),
}
}