diff --git a/src/nodeinfo.rs b/src/nodeinfo.rs index b4683d7..a47a6a9 100644 --- a/src/nodeinfo.rs +++ b/src/nodeinfo.rs @@ -28,9 +28,17 @@ pub async fn route(config: web::Data, state: web::Data) -> web::J version: config.software_version(), }, protocols: vec![Protocol::ActivityPub], - services: vec![], + services: Services { + inbound: vec![], + outbound: vec![], + }, open_registrations: false, usage: Usage { + users: Users { + total: 1, + active_halfyear: 1, + active_month: 1, + }, local_posts: 0, local_comments: 0, }, @@ -52,7 +60,7 @@ pub struct NodeInfo { version: NodeInfoVersion, software: Software, protocols: Vec, - services: Vec, + services: Services, open_registrations: bool, usage: Usage, metadata: Metadata, @@ -74,11 +82,19 @@ pub enum Protocol { } #[derive(Clone, Debug, serde::Serialize)] +pub struct Services { + inbound: Vec, + outbound: Vec, +} + +#[derive(Clone, Debug, serde::Serialize)] +#[serde(rename_all = "lowercase")] pub enum Service {} #[derive(Clone, Debug, Default, serde::Serialize)] #[serde(rename_all = "camelCase")] pub struct Usage { + users: Users, local_posts: u64, local_comments: u64, } @@ -88,6 +104,14 @@ pub struct Metadata { peers: Vec, } +#[derive(Clone, Debug, Default, serde::Serialize)] +#[serde(rename_all = "camelCase")] +pub struct Users { + total: u64, + active_halfyear: u64, + active_month: u64, +} + impl serde::ser::Serialize for NodeInfoVersion { fn serialize(&self, serializer: S) -> Result where