This commit is contained in:
Kitaiti Makoto 2022-02-20 01:22:46 +09:00
parent 6168930fe6
commit 95cf6cd335

View File

@ -8,6 +8,11 @@ use activitypub::{
object::Image, object::Image,
CustomObject, CustomObject,
}; };
use activitystreams::{
activity::ActorAndObjectRef,
object::{kind::ImageType, ApObject, AsObject, Image as Image07, ObjectExt},
prelude::*,
};
use chrono::NaiveDateTime; use chrono::NaiveDateTime;
use diesel::{self, ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, SaveChangesDsl}; use diesel::{self, ExpressionMethods, OptionalExtension, QueryDsl, RunQueryDsl, SaveChangesDsl};
use openssl::{ use openssl::{
@ -17,8 +22,8 @@ use openssl::{
sign::{Signer, Verifier}, sign::{Signer, Verifier},
}; };
use plume_common::activity_pub::{ use plume_common::activity_pub::{
inbox::{AsActor, FromId}, inbox::{AsActor, FromId, FromId07},
sign, ActivityStream, ApSignature, Id, IntoId, PublicKey, Source, sign, ActivityStream, ApSignature, CustomGroup as CustomGroup07, Id, IntoId, PublicKey, Source,
}; };
use url::Url; use url::Url;
use webfinger::*; use webfinger::*;
@ -449,6 +454,43 @@ impl FromId<DbConn> for Blog {
} }
} }
impl FromId07<DbConn> for Blog {
type Error = Error;
type Object = CustomGroup07;
fn from_db07(conn: &DbConn, id: &str) -> Result<Self> {
Self::find_by_ap_url(conn, id)
}
fn from_activity07(conn: &DbConn, acct: CustomGroup07) -> Result<Self> {
let icon_id = acct
.object_ref()
.icon()
.and_then(|icons| {
icons.iter().next().and_then(|icon| {
let icon = icon.extend::<Image07, ImageType>().ok()?;
let owner = icon
.attributed_to()
.iter()
.next()
.ok_or(Error::MissingApProperty)?
.as_str();
Media::save_remote(
conn,
icon.url().ok_or(Error::MissingApProperty)?,
&User::from_id07(conn, owner, None, CONFIG.proxy()).ok()?,
)
.ok()
})
})
.map(|m| m.id);
}
fn get_sender07() -> &'static dyn sign::Signer {
Instance::get_local_instance_user().expect("Failed to local instance user")
}
}
impl AsActor<&PlumeRocket> for Blog { impl AsActor<&PlumeRocket> for Blog {
fn get_inbox_url(&self) -> String { fn get_inbox_url(&self) -> String {
self.inbox_url.clone() self.inbox_url.clone()