mirror of
https://git.joinplu.me/Plume/Plume.git
synced 2024-11-26 21:41:04 +00:00
Define Instance::to_activity()
This commit is contained in:
parent
b41e982daf
commit
fa48060a94
1 changed files with 31 additions and 1 deletions
|
@ -6,11 +6,17 @@ use crate::{
|
||||||
users::{Role, User},
|
users::{Role, User},
|
||||||
Connection, Error, Result,
|
Connection, Error, Result,
|
||||||
};
|
};
|
||||||
|
use activitypub::{actor::Service, CustomObject};
|
||||||
use chrono::NaiveDateTime;
|
use chrono::NaiveDateTime;
|
||||||
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
|
use diesel::{self, ExpressionMethods, QueryDsl, RunQueryDsl};
|
||||||
use plume_common::{activity_pub::sign::gen_keypair, utils::md_to_html};
|
use plume_common::{
|
||||||
|
activity_pub::{sign::gen_keypair, ApSignature, PublicKey},
|
||||||
|
utils::md_to_html,
|
||||||
|
};
|
||||||
use std::sync::RwLock;
|
use std::sync::RwLock;
|
||||||
|
|
||||||
|
pub type CustomService = CustomObject<ApSignature, Service>;
|
||||||
|
|
||||||
#[derive(Clone, Identifiable, Queryable)]
|
#[derive(Clone, Identifiable, Queryable)]
|
||||||
pub struct Instance {
|
pub struct Instance {
|
||||||
pub id: i32,
|
pub id: i32,
|
||||||
|
@ -256,6 +262,30 @@ impl Instance {
|
||||||
.and(Ok(()))
|
.and(Ok(()))
|
||||||
.map_err(Error::from)
|
.map_err(Error::from)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn to_activity(&self) -> Result<CustomService> {
|
||||||
|
let mut actor = Service::default();
|
||||||
|
let id = ap_url(&format!(
|
||||||
|
"{}/!/{}",
|
||||||
|
Self::get_local()?.public_domain,
|
||||||
|
self.public_domain
|
||||||
|
));
|
||||||
|
actor.object_props.set_id_string(id.clone())?;
|
||||||
|
actor.object_props.set_name_string(self.name.clone())?;
|
||||||
|
|
||||||
|
let mut ap_signature = ApSignature::default();
|
||||||
|
if self.local {
|
||||||
|
if let Some(pub_key) = self.public_key.clone() {
|
||||||
|
let mut public_key = PublicKey::default();
|
||||||
|
public_key.set_id_string(format!("{}#main-key", id))?;
|
||||||
|
public_key.set_owner_string(id)?;
|
||||||
|
public_key.set_public_key_pem_string(pub_key)?;
|
||||||
|
ap_signature.set_public_key_publickey(public_key)?;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(CustomService::new(actor, ap_signature))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl NewInstance {
|
impl NewInstance {
|
||||||
|
|
Loading…
Reference in a new issue