Implement User::delete_activity07()

This commit is contained in:
Kitaiti Makoto 2022-02-13 18:43:14 +09:00
parent 55ca1345e1
commit 8d69051a61

View File

@ -17,7 +17,7 @@ use activitystreams::{
actor::{ApActor as ApActor07, Endpoints as Endpoints07, Person as Person07}, actor::{ApActor as ApActor07, Endpoints as Endpoints07, Person as Person07},
collection::OrderedCollection as OrderedCollection07, collection::OrderedCollection as OrderedCollection07,
iri_string::types::IriString, iri_string::types::IriString,
object::{AsObject as _, Image as Image07}, object::{AsObject as _, Image as Image07, Tombstone as Tombstone07},
prelude::*, prelude::*,
}; };
use chrono::{NaiveDateTime, Utc}; use chrono::{NaiveDateTime, Utc};
@ -873,6 +873,25 @@ impl User {
Ok(del) Ok(del)
} }
pub fn delete_activity07(&self, conn: &Connection) -> Result<Delete07> {
let mut tombstone = Tombstone07::new();
tombstone.set_id(self.ap_url.parse()?);
let mut del = Delete07::new(
self.ap_url.parse::<IriString>()?,
tombstone.into_any_base()?,
);
del.set_id(format!("{}#delete", self.ap_url).parse()?);
del.set_many_tos(vec![PUBLIC_VISIBILITY.parse::<IriString>()?]);
del.set_many_ccs(
self.get_followers(conn)?
.into_iter()
.filter_map(|f| f.ap_url.parse::<IriString>().ok()),
);
Ok(del)
}
pub fn avatar_url(&self, conn: &Connection) -> String { pub fn avatar_url(&self, conn: &Connection) -> String {
self.avatar_id self.avatar_id
.and_then(|id| Media::get(conn, id).and_then(|m| m.url()).ok()) .and_then(|id| Media::get(conn, id).and_then(|m| m.url()).ok())