1
0
Fork 0
forked from alemi/upub

fix: add context extensions depending on type

if actor, add both counters and fe, if object add just fe:likedByMe, to
avoid sending useless text every time
This commit is contained in:
əlemi 2024-05-02 05:10:38 +02:00
parent 0b07979244
commit 4095b0eece
Signed by: alemi
GPG key ID: A4895B84D311642C

View file

@ -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![