diff --git a/src/routes/activitypub/jsonld.rs b/src/routes/activitypub/jsonld.rs index d0f0d300..0c2188e1 100644 --- a/src/routes/activitypub/jsonld.rs +++ b/src/routes/activitypub/jsonld.rs @@ -3,6 +3,7 @@ // it's not a route // maybe under src/server/jsonld.rs ?? +use apb::Object; use axum::response::{IntoResponse, Response}; pub trait LD { @@ -14,9 +15,26 @@ pub trait LD { impl LD for serde_json::Value { fn ld_context(mut self) -> Self { + let o_type = self.object_type(); if let Some(obj) = self.as_object_mut() { let mut ctx = serde_json::Map::new(); ctx.insert("sensitive".to_string(), serde_json::Value::String("as:sensitive".into())); + match o_type { + Some(apb::ObjectType::Actor(_)) => { + ctx.insert("counters".to_string(), serde_json::Value::String("https://ns.alemi.dev/as/counters/#".into())); + ctx.insert("followingCount".to_string(), serde_json::Value::String("counters:followingCount".into())); + ctx.insert("followersCount".to_string(), serde_json::Value::String("counters:followersCount".into())); + ctx.insert("statusesCount".to_string(), serde_json::Value::String("counters:statusesCount".into())); + ctx.insert("fe".to_string(), serde_json::Value::String("https://ns.alemi.dev/as/fe/#".into())); + ctx.insert("followingMe".to_string(), serde_json::Value::String("fe:followingMe".into())); + ctx.insert("followedByMe".to_string(), serde_json::Value::String("fe:followedByMe".into())); + }, + Some(_) => { + ctx.insert("fe".to_string(), serde_json::Value::String("https://ns.alemi.dev/as/fe/#".into())); + ctx.insert("likedByMe".to_string(), serde_json::Value::String("fe:likedByMe".into())); + }, + None => {}, + } obj.insert( "@context".to_string(), serde_json::Value::Array(vec![