RpcEnvironment: add environment type enum RpcEnvironmentType
This commit is contained in:
parent
e82dad9700
commit
162b979394
|
@ -16,6 +16,18 @@ pub trait RpcEnvironment {
|
|||
fn set_result_attrib(&mut self, name: &str, value: Value);
|
||||
|
||||
fn get_result_attrib(&self, name: &str) -> Option<&Value>;
|
||||
|
||||
fn env_type(&self) -> RpcEnvironmentType;
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
pub enum RpcEnvironmentType {
|
||||
/// command started from command line
|
||||
CLI,
|
||||
/// access from public acessable server
|
||||
PUBLIC,
|
||||
/// ... access from priviledged server (run as root)
|
||||
PRIVILEDGED,
|
||||
}
|
||||
|
||||
type ApiHandlerFn = fn(Value, &ApiMethod, &mut dyn RpcEnvironment) -> Result<Value, Error>;
|
||||
|
|
|
@ -22,4 +22,9 @@ impl RpcEnvironment for CliEnvironment {
|
|||
fn get_result_attrib(&self, name: &str) -> Option<&Value> {
|
||||
self.result_attributes.get(name)
|
||||
}
|
||||
|
||||
fn env_type(&self) -> RpcEnvironmentType {
|
||||
RpcEnvironmentType::CLI
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,12 +4,16 @@ use std::collections::HashMap;
|
|||
use serde_json::Value;
|
||||
|
||||
pub struct RestEnvironment {
|
||||
env_type: RpcEnvironmentType,
|
||||
result_attributes: HashMap<String, Value>,
|
||||
}
|
||||
|
||||
impl RestEnvironment {
|
||||
pub fn new() -> Self {
|
||||
Self { result_attributes: HashMap::new() }
|
||||
pub fn new(env_type: RpcEnvironmentType) -> Self {
|
||||
Self {
|
||||
result_attributes: HashMap::new(),
|
||||
env_type,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,4 +26,8 @@ impl RpcEnvironment for RestEnvironment {
|
|||
fn get_result_attrib(&self, name: &str) -> Option<&Value> {
|
||||
self.result_attributes.get(name)
|
||||
}
|
||||
|
||||
fn env_type(&self) -> RpcEnvironmentType {
|
||||
self.env_type
|
||||
}
|
||||
}
|
||||
|
|
|
@ -397,7 +397,7 @@ pub fn handle_request(api: Arc<ApiConfig>, req: Request<Body>) -> BoxFut {
|
|||
println!("REQUEST {} {}", method, path);
|
||||
println!("COMPO {:?}", components);
|
||||
|
||||
let mut rpcenv = RestEnvironment::new();
|
||||
let rpcenv = RestEnvironment::new(RpcEnvironmentType::PRIVILEDGED);
|
||||
|
||||
if comp_len >= 1 && components[0] == "api2" {
|
||||
println!("GOT API REQUEST");
|
||||
|
|
Loading…
Reference in New Issue