aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/agent.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/agent.rs')
-rw-r--r--src/bin/agent.rs32
1 files changed, 9 insertions, 23 deletions
diff --git a/src/bin/agent.rs b/src/bin/agent.rs
index 6b73f56..50b13a1 100644
--- a/src/bin/agent.rs
+++ b/src/bin/agent.rs
@@ -3,24 +3,6 @@ use std::io::Write as _;
use tokio::io::AsyncBufReadExt as _;
use tokio::stream::StreamExt as _;
-#[derive(serde::Deserialize, Debug)]
-struct Message {
- tty: Option<String>,
- action: Action,
-}
-
-#[derive(serde::Deserialize, Debug)]
-#[serde(tag = "type")]
-enum Action {
- Login,
- Unlock,
- Sync,
- Decrypt { cipherstring: String },
- // add
- // update
- // remove
-}
-
fn make_pidfile() -> std::fs::File {
let runtime_dir = rbw::dirs::runtime_dir();
std::fs::create_dir_all(&runtime_dir).unwrap();
@@ -135,12 +117,16 @@ async fn handle_sock(
let mut lines = buf.lines();
while let Some(line) = lines.next().await {
let line = line.unwrap();
- let msg: Message = serde_json::from_str(&line).unwrap();
+ let msg: rbw::agent::Message = serde_json::from_str(&line).unwrap();
match msg.action {
- Action::Login => login(state.clone(), msg.tty.as_deref()).await,
- Action::Unlock => unlock(state.clone(), msg.tty.as_deref()).await,
- Action::Sync => sync(state.clone()).await,
- Action::Decrypt { cipherstring } => {
+ rbw::agent::Action::Login => {
+ login(state.clone(), msg.tty.as_deref()).await
+ }
+ rbw::agent::Action::Unlock => {
+ unlock(state.clone(), msg.tty.as_deref()).await
+ }
+ rbw::agent::Action::Sync => sync(state.clone()).await,
+ rbw::agent::Action::Decrypt { cipherstring } => {
decrypt(state.clone(), &cipherstring).await
}
}