From 7bcb0712ae991b23fc4ddac8b24894695e8e05b7 Mon Sep 17 00:00:00 2001 From: Nadja Reitzenstein Date: Wed, 20 Oct 2021 09:43:39 +0200 Subject: [PATCH] Implement wiki and URN links --- Cargo.lock | 2 +- src/api/machines.rs | 4 ++++ src/config.rs | 1 + src/machine.rs | 6 +++++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2fcd4eb..0aa81b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -515,7 +515,7 @@ dependencies = [ [[package]] name = "diflouroborane" -version = "0.2.0" +version = "0.3.0" dependencies = [ "async-channel", "async-trait", diff --git a/src/api/machines.rs b/src/api/machines.rs index 82edf71..0ba90e4 100644 --- a/src/api/machines.rs +++ b/src/api/machines.rs @@ -148,6 +148,10 @@ impl machines::Server for Machines { if let Some(ref desc) = machine.desc.description { builder.set_description(desc); } + if let Some(ref wiki) = machine.desc.wiki { + builder.set_wiki(wiki); + } + builder.set_urn(&format!("urn:fabaccess:resource:{}", &name)); let machineapi = Machine::new(user.clone(), perms, machine.clone()); let state = machine.get_status().await; diff --git a/src/config.rs b/src/config.rs index a820abc..1196b73 100644 --- a/src/config.rs +++ b/src/config.rs @@ -80,6 +80,7 @@ impl Default for Config { machines.insert("Testmachine".to_string(), MachineDescription { name: "Testmachine".to_string(), description: Some("A test machine".to_string()), + wiki: None, privs: PrivilegesBuf { disclose: PermissionBuf::from_string("lab.test.read".to_string()), read: PermissionBuf::from_string("lab.test.read".to_string()), diff --git a/src/machine.rs b/src/machine.rs index e585e4e..6c7b004 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -65,7 +65,7 @@ pub struct Machine { } impl Machine { - pub fn new(inner: Inner, desc: MachineDescription, ) -> Self { + pub fn new(inner: Inner, desc: MachineDescription) -> Self { Self { id: uuid::Uuid::default(), inner: Arc::new(Mutex::new(inner)), @@ -226,6 +226,10 @@ pub struct MachineDescription { /// An optional description of the Machine. pub description: Option, + #[serde(default)] + #[serde(flatten)] + pub wiki: Option, + /// The permission required #[serde(flatten)] pub privs: access::PrivilegesBuf,