mirror of
				https://git.proxmox.com/git/proxmox
				synced 2025-10-31 19:42:43 +00:00 
			
		
		
		
	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`.
 | ||||
| 
 | ||||
| use std::collections::HashSet; | ||||
| 
 | ||||
| use failure::{bail, Error}; | ||||
| use http::Response; | ||||
| use serde_json::{json, Value}; | ||||
| @ -313,6 +315,7 @@ unconstrained_api_type! {String, &str} | ||||
| unconstrained_api_type! {bool} | ||||
| unconstrained_api_type! {isize, usize, i64, u64, i32, u32, i16, u16, i8, u8, f64, f32} | ||||
| unconstrained_api_type! {Vec<String>} | ||||
| unconstrained_api_type! {HashSet<String>} | ||||
| 
 | ||||
| // Raw return types are also okay:
 | ||||
| impl<Body> ApiType for Response<Body> { | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| //! Provides Command Line Interface to API methods
 | ||||
| 
 | ||||
| use std::collections::HashMap; | ||||
| use std::collections::{HashMap, HashSet}; | ||||
| use std::str::FromStr; | ||||
| 
 | ||||
| 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
	 Wolfgang Bumiller
						Wolfgang Bumiller