mirror of
https://git.joinplu.me/Plume/Plume.git
synced 2024-11-29 23:11:02 +00:00
Implement User::to_activity()
This commit is contained in:
parent
038d65acaa
commit
cb8e2e9294
1 changed files with 47 additions and 5 deletions
|
@ -12,9 +12,13 @@ use activitypub::{
|
||||||
Activity, CustomObject, Endpoint,
|
Activity, CustomObject, Endpoint,
|
||||||
};
|
};
|
||||||
use activitystreams::{
|
use activitystreams::{
|
||||||
activity::Delete as Delete07, actor::AsApActor,
|
activity::Delete as Delete07,
|
||||||
collection::OrderedCollection as OrderedCollection07, iri_string::types::IriString,
|
actor::AsApActor,
|
||||||
object::AsObject as _, prelude::*,
|
actor::{ApActor as ApActor07, Endpoints as Endpoints07, Person as Person07},
|
||||||
|
collection::OrderedCollection as OrderedCollection07,
|
||||||
|
iri_string::types::IriString,
|
||||||
|
object::{AsObject as _, Image as Image07},
|
||||||
|
prelude::*,
|
||||||
};
|
};
|
||||||
use chrono::{NaiveDateTime, Utc};
|
use chrono::{NaiveDateTime, Utc};
|
||||||
use diesel::{self, BelongingToDsl, ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl};
|
use diesel::{self, BelongingToDsl, ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl};
|
||||||
|
@ -30,8 +34,8 @@ use plume_common::{
|
||||||
inbox::{AsActor, AsObject, AsObject07, FromId, FromId07},
|
inbox::{AsActor, AsObject, AsObject07, FromId, FromId07},
|
||||||
request::get,
|
request::get,
|
||||||
sign::{gen_keypair, Error as SignError, Result as SignResult, Signer},
|
sign::{gen_keypair, Error as SignError, Result as SignResult, Signer},
|
||||||
ActivityStream, ApSignature, CustomPerson as CustomPerson07, Id, IntoId, PublicKey,
|
ActivityStream, ApSignature, ApSignature07, CustomPerson as CustomPerson07, Id, IntoId,
|
||||||
ToAsString, ToAsUri, PUBLIC_VISIBILITY,
|
PublicKey, PublicKey07, ToAsString, ToAsUri, PUBLIC_VISIBILITY,
|
||||||
},
|
},
|
||||||
utils,
|
utils,
|
||||||
};
|
};
|
||||||
|
@ -808,6 +812,44 @@ impl User {
|
||||||
Ok(CustomPerson::new(actor, ap_signature))
|
Ok(CustomPerson::new(actor, ap_signature))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn to_activity07(&self, conn: &Connection) -> Result<CustomPerson07> {
|
||||||
|
let mut actor = ApActor07::new(self.inbox_url.parse()?, Person07::new());
|
||||||
|
let ap_url = self.ap_url.parse::<IriString>()?;
|
||||||
|
actor.set_id(ap_url.clone());
|
||||||
|
actor.set_name(self.display_name.clone());
|
||||||
|
actor.set_summary(self.summary_html.get().clone());
|
||||||
|
actor.set_url(ap_url.clone());
|
||||||
|
actor.set_inbox(self.inbox_url.parse()?);
|
||||||
|
actor.set_outbox(self.outbox_url.parse()?);
|
||||||
|
actor.set_preferred_username(self.username.clone());
|
||||||
|
actor.set_followers(self.followers_endpoint.parse()?);
|
||||||
|
|
||||||
|
if let Some(shared_inbox_url) = self.shared_inbox_url.clone() {
|
||||||
|
let endpoints = Endpoints07 {
|
||||||
|
shared_inbox: Some(shared_inbox_url.parse::<IriString>()?),
|
||||||
|
..Endpoints07::default()
|
||||||
|
};
|
||||||
|
actor.set_endpoints(endpoints);
|
||||||
|
}
|
||||||
|
|
||||||
|
let pub_key = PublicKey07 {
|
||||||
|
id: format!("{}#main-key", self.ap_url).parse()?,
|
||||||
|
owner: ap_url,
|
||||||
|
public_key_pem: self.public_key.clone(),
|
||||||
|
};
|
||||||
|
let ap_signature = ApSignature07 {
|
||||||
|
public_key: pub_key,
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Some(avatar_id) = self.avatar_id {
|
||||||
|
let mut avatar = Image07::new();
|
||||||
|
avatar.set_url(Media::get(conn, avatar_id)?.url()?.parse::<IriString>()?);
|
||||||
|
actor.set_icon(avatar.into_any_base()?);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(CustomPerson07::new(actor, ap_signature))
|
||||||
|
}
|
||||||
|
|
||||||
pub fn delete_activity(&self, conn: &Connection) -> Result<Delete> {
|
pub fn delete_activity(&self, conn: &Connection) -> Result<Delete> {
|
||||||
let mut del = Delete::default();
|
let mut del = Delete::default();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue