forked from proxmox-mirrors/proxmox
api: support HashSet<String> as api type
This is just an array of strings in json, or a semicolon-separated string on the command line. Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
parent
ef13b38632
commit
75e90ebb25
@ -1,5 +1,7 @@
|
|||||||
//! This contains traits used to implement methods to be added to the `Router`.
|
//! This contains traits used to implement methods to be added to the `Router`.
|
||||||
|
|
||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
use failure::{bail, Error};
|
use failure::{bail, Error};
|
||||||
use http::Response;
|
use http::Response;
|
||||||
use serde_json::{json, Value};
|
use serde_json::{json, Value};
|
||||||
@ -313,6 +315,7 @@ unconstrained_api_type! {String, &str}
|
|||||||
unconstrained_api_type! {bool}
|
unconstrained_api_type! {bool}
|
||||||
unconstrained_api_type! {isize, usize, i64, u64, i32, u32, i16, u16, i8, u8, f64, f32}
|
unconstrained_api_type! {isize, usize, i64, u64, i32, u32, i16, u16, i8, u8, f64, f32}
|
||||||
unconstrained_api_type! {Vec<String>}
|
unconstrained_api_type! {Vec<String>}
|
||||||
|
unconstrained_api_type! {HashSet<String>}
|
||||||
|
|
||||||
// Raw return types are also okay:
|
// Raw return types are also okay:
|
||||||
impl<Body> ApiType for Response<Body> {
|
impl<Body> ApiType for Response<Body> {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
//! Provides Command Line Interface to API methods
|
//! Provides Command Line Interface to API methods
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::{HashMap, HashSet};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
@ -382,3 +382,16 @@ impl ParseCli for String {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ParseCli for HashSet<String> {
|
||||||
|
fn parse_cli(name: &str, value: Option<&str>) -> Result<Value, Error> {
|
||||||
|
Ok(serde_json::Value::Array(value
|
||||||
|
.ok_or_else(|| format_err!("missing value for parameter '{}'", name))?
|
||||||
|
.split(';')
|
||||||
|
.fold(Vec::new(), |mut list, entry| {
|
||||||
|
list.push(serde_json::Value::String(entry.trim().to_string()));
|
||||||
|
list
|
||||||
|
})
|
||||||
|
))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user