depend on proxmox 0.1.31 - use Value to store result metadata
This commit is contained in:
parent
813aacde7e
commit
3f633844fa
@ -1,19 +1,18 @@
|
||||
use std::collections::HashMap;
|
||||
use serde_json::Value;
|
||||
use serde_json::{json, Value};
|
||||
|
||||
use proxmox::api::{RpcEnvironment, RpcEnvironmentType};
|
||||
|
||||
/// Encapsulates information about the runtime environment
|
||||
pub struct RestEnvironment {
|
||||
env_type: RpcEnvironmentType,
|
||||
result_attributes: HashMap<String, Value>,
|
||||
result_attributes: Value,
|
||||
user: Option<String>,
|
||||
}
|
||||
|
||||
impl RestEnvironment {
|
||||
pub fn new(env_type: RpcEnvironmentType) -> Self {
|
||||
Self {
|
||||
result_attributes: HashMap::new(),
|
||||
result_attributes: json!({}),
|
||||
user: None,
|
||||
env_type,
|
||||
}
|
||||
@ -22,12 +21,12 @@ impl RestEnvironment {
|
||||
|
||||
impl RpcEnvironment for RestEnvironment {
|
||||
|
||||
fn set_result_attrib(&mut self, name: &str, value: Value) {
|
||||
self.result_attributes.insert(name.into(), value);
|
||||
fn result_attrib_mut (&mut self) -> &mut Value {
|
||||
&mut self.result_attributes
|
||||
}
|
||||
|
||||
fn get_result_attrib(&self, name: &str) -> Option<&Value> {
|
||||
self.result_attributes.get(name)
|
||||
fn result_attrib(&self) -> &Value {
|
||||
&self.result_attributes
|
||||
}
|
||||
|
||||
fn env_type(&self) -> RpcEnvironmentType {
|
||||
|
@ -41,16 +41,13 @@ pub fn json_data_response(data: Value) -> Response<Body> {
|
||||
|
||||
fn add_result_attributes(result: &mut Value, rpcenv: &dyn RpcEnvironment)
|
||||
{
|
||||
if let Some(total) = rpcenv.get_result_attrib("total").and_then(|v| v.as_u64()) {
|
||||
result["total"] = Value::from(total);
|
||||
}
|
||||
let attributes = match rpcenv.result_attrib().as_object() {
|
||||
Some(attr) => attr,
|
||||
None => return,
|
||||
};
|
||||
|
||||
if let Some(active) = rpcenv.get_result_attrib("active").and_then(|v| v.as_bool()) {
|
||||
result["active"] = Value::from(active);
|
||||
}
|
||||
|
||||
if let Some(changes) = rpcenv.get_result_attrib("changes") {
|
||||
result["changes"] = changes.clone();
|
||||
for (key, value) in attributes {
|
||||
result[key] = value.clone();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user