Create labadoor-common
and move run_bin()
in it
This commit is contained in:
parent
924224c7fa
commit
0ab168b7f7
5 changed files with 53 additions and 29 deletions
|
@ -6,6 +6,7 @@ members = [
|
||||||
"labadoor-csv",
|
"labadoor-csv",
|
||||||
"labadoor",
|
"labadoor",
|
||||||
"labadoor-auth",
|
"labadoor-auth",
|
||||||
|
"labadoor-common",
|
||||||
"labadoor-open",
|
"labadoor-open",
|
||||||
"labadoor-acl",
|
"labadoor-acl",
|
||||||
]
|
]
|
||||||
|
|
6
labadoor-common/Cargo.toml
Normal file
6
labadoor-common/Cargo.toml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[package]
|
||||||
|
name = "labadoor-common"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
38
labadoor-common/src/lib.rs
Normal file
38
labadoor-common/src/lib.rs
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
pub type Binary = Vec<String>;
|
||||||
|
pub type BinaryResult = Result<String, String>;
|
||||||
|
|
||||||
|
pub struct OpenBinaryArgs {
|
||||||
|
pub method: String,
|
||||||
|
pub identifier: String,
|
||||||
|
pub resource_shortcut: i8,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run_bin(bin: Binary) -> BinaryResult {
|
||||||
|
use std::{
|
||||||
|
io::Read,
|
||||||
|
process::{Command, Stdio},
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut ret = Err("".to_string());
|
||||||
|
let mut iter = bin.iter();
|
||||||
|
let mut cmd = Command::new(iter.next().unwrap());
|
||||||
|
cmd.args(iter);
|
||||||
|
|
||||||
|
let mut child = cmd.stdout(Stdio::piped()).spawn().unwrap();
|
||||||
|
let mut success = child.wait().unwrap().success();
|
||||||
|
|
||||||
|
let mut s = String::from("");
|
||||||
|
child.stdout.unwrap().read_to_string(&mut s).unwrap();
|
||||||
|
s = String::from(s.trim());
|
||||||
|
|
||||||
|
ret = if success { Ok(s) } else { Err(s) };
|
||||||
|
ret
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run_open(args: OpenBinaryArgs, bin: Binary) -> BinaryResult {
|
||||||
|
let mut auth_bin = bin.clone();
|
||||||
|
auth_bin.push(args.method.clone());
|
||||||
|
auth_bin.push(args.identifier.clone());
|
||||||
|
auth_bin.push(args.resource_shortcut.to_string());
|
||||||
|
run_bin(auth_bin)
|
||||||
|
}
|
|
@ -4,3 +4,4 @@ version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
labadoor-common = { path = "../labadoor-common"}
|
||||||
|
|
|
@ -17,37 +17,15 @@ struct AuthResult {
|
||||||
pub resource: String,
|
pub resource: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_bin(bin: Binary) -> Result<String, String> {
|
|
||||||
use std::{
|
|
||||||
io::Read,
|
|
||||||
process::{Command, Stdio},
|
|
||||||
};
|
|
||||||
|
|
||||||
let mut ret = Err("".to_string());
|
|
||||||
let mut iter = bin.iter();
|
|
||||||
let mut cmd = Command::new(iter.next().unwrap());
|
|
||||||
cmd.args(iter);
|
|
||||||
|
|
||||||
let mut child = cmd.stdout(Stdio::piped()).spawn().unwrap();
|
|
||||||
let mut success = child.wait().unwrap().success();
|
|
||||||
|
|
||||||
let mut s = String::from("");
|
|
||||||
child.stdout.unwrap().read_to_string(&mut s).unwrap();
|
|
||||||
s = String::from(s.trim());
|
|
||||||
|
|
||||||
ret = if success { Ok(s) } else { Err(s) };
|
|
||||||
ret
|
|
||||||
}
|
|
||||||
|
|
||||||
fn run_auth(args: &OpenArgs, bin: Binary) -> Result<AuthResult, String> {
|
fn run_auth(args: &OpenArgs, bin: Binary) -> Result<AuthResult, String> {
|
||||||
let mut ret = Err("".to_string());
|
let mut ret = Err("".to_string());
|
||||||
|
|
||||||
let mut auth_bin = bin.clone();
|
let a = labadoor_common::OpenBinaryArgs {
|
||||||
auth_bin.push(args.method.clone());
|
method: args.method.clone(),
|
||||||
auth_bin.push(args.identifier.clone());
|
identifier: args.identifier.clone(),
|
||||||
auth_bin.push(args.resource_shortcut.to_string());
|
resource_shortcut: args.resource_shortcut,
|
||||||
let output = run_bin(auth_bin);
|
};
|
||||||
|
let output = labadoor_common::run_open(a, bin);
|
||||||
if let Ok(out) = output {
|
if let Ok(out) = output {
|
||||||
let s: Vec<String> = out.split(',').map(|s| String::from(s)).collect();
|
let s: Vec<String> = out.split(',').map(|s| String::from(s)).collect();
|
||||||
ret = Ok(AuthResult {
|
ret = Ok(AuthResult {
|
||||||
|
@ -66,7 +44,7 @@ pub fn open(args: OpenArgs) -> Result<(), ()> {
|
||||||
let output = run_auth(&args, binary.to_vec());
|
let output = run_auth(&args, binary.to_vec());
|
||||||
if let Ok(user) = output {
|
if let Ok(user) = output {
|
||||||
let resource_bin = args.hardware.get(&user.resource).unwrap();
|
let resource_bin = args.hardware.get(&user.resource).unwrap();
|
||||||
if let Ok(_) = run_bin(resource_bin.to_vec()) {
|
if let Ok(_) = labadoor_common::run_bin(resource_bin.to_vec()) {
|
||||||
msg = "Open sesame!";
|
msg = "Open sesame!";
|
||||||
ret = Ok(());
|
ret = Ok(());
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue