A bunch of work on finger
Build and test / check (push) Failing after 42s
Build and test / build (push) Failing after 1m38s
Build and test / test (push) Failing after 1m40s
Build and test / docs (push) Failing after 2m56s

This commit is contained in:
2026-02-08 22:03:29 +09:00
parent def4eec2d5
commit 6ca9e0ced1
9 changed files with 431 additions and 16 deletions
+15 -4
View File
@@ -4,7 +4,7 @@ use zlink::{ReplyError, service::MethodReply};
use crate::{
proto::{WhodStatusUpdate, WhodUserEntry, finger_protocol::FingerResponse},
server::rwhod::RwhodStatusStore,
server::{fingerd::{self, FingerUserEntry}, rwhod::RwhodStatusStore},
};
// Types for 'no.ntnu.pvv.roowho2.rwhod'
@@ -73,7 +73,7 @@ pub enum VarlinkFingerClientResponse {
Finger(VarlinkFingerResponse),
}
pub type VarlinkFingerResponse = FingerResponse;
pub type VarlinkFingerResponse = Vec<Option<FingerUserEntry>>;
#[derive(Debug, Clone, PartialEq, ReplyError)]
#[zlink(interface = "no.ntnu.pvv.roowho2.finger")]
@@ -141,6 +141,13 @@ impl VarlinkRoowhoo2ClientServer {
let store = self.whod_status_store.read().await;
store.values().cloned().collect()
}
async fn handle_finger_request(&self, user_queries: Vec<String>) -> VarlinkFingerResponse {
user_queries
.into_iter()
.map(|username| fingerd::get_local_user(&username).unwrap())
.collect()
}
}
impl zlink::Service for VarlinkRoowhoo2ClientServer {
@@ -167,8 +174,12 @@ impl zlink::Service for VarlinkRoowhoo2ClientServer {
VarlinkRwhodClientResponse::Ruptime(self.handle_ruptime_request().await),
)))
}
VarlinkMethod::Finger(VarlinkFingerClientRequest::Finger { user_queries: _ }) => {
unimplemented!()
VarlinkMethod::Finger(VarlinkFingerClientRequest::Finger { user_queries }) => {
MethodReply::Single(Some(VarlinkReply::Finger(
VarlinkFingerClientResponse::Finger(
self.handle_finger_request(user_queries.clone()).await,
),
)))
}
}
}