Implement FromId07 for PostUpdate
This commit is contained in:
parent
76f688c967
commit
e5a2850105
@ -15,7 +15,8 @@ use activitystreams::{
|
||||
iri_string::types::IriString,
|
||||
link::{self as link07, kind::MentionType},
|
||||
object::{
|
||||
kind::ImageType, ApObject, Article as Article07, Image as Image07, Tombstone as Tombstone07,
|
||||
kind::ImageType, ApObject, Article as Article07, AsApObject, Image as Image07,
|
||||
Tombstone as Tombstone07,
|
||||
},
|
||||
prelude::*,
|
||||
time::OffsetDateTime,
|
||||
@ -1302,6 +1303,63 @@ impl FromId<DbConn> for PostUpdate {
|
||||
}
|
||||
}
|
||||
|
||||
impl FromId07<DbConn> for PostUpdate {
|
||||
type Error = Error;
|
||||
type Object = LicensedArticle07;
|
||||
|
||||
fn from_db07(_: &DbConn, _: &str) -> Result<Self> {
|
||||
// Always fail because we always want to deserialize the AP object
|
||||
Err(Error::NotFound)
|
||||
}
|
||||
|
||||
fn from_activity07(conn: &DbConn, updated: Self::Object) -> Result<Self> {
|
||||
let mut post_update = PostUpdate {
|
||||
ap_url: updated
|
||||
.ap_object_ref()
|
||||
.id_unchecked()
|
||||
.ok_or(Error::MissingApProperty)?
|
||||
.to_string(),
|
||||
title: updated
|
||||
.ap_object_ref()
|
||||
.name()
|
||||
.and_then(|name| name.to_as_string()),
|
||||
subtitle: updated
|
||||
.ap_object_ref()
|
||||
.summary()
|
||||
.and_then(|summary| summary.to_as_string()),
|
||||
content: updated
|
||||
.ap_object_ref()
|
||||
.content()
|
||||
.and_then(|content| content.to_as_string()),
|
||||
cover: None,
|
||||
source: None,
|
||||
license: None,
|
||||
tags: updated
|
||||
.tag()
|
||||
.and_then(|tags| serde_json::to_value(tags).ok()),
|
||||
};
|
||||
post_update.cover = updated.ap_object_ref().icon().and_then(|img| {
|
||||
img.iter()
|
||||
.next()
|
||||
.and_then(|img| {
|
||||
img.clone()
|
||||
.extend::<Image07, ImageType>()
|
||||
.map(|img| img.and_then(|img| Media::from_activity07(conn, &img).ok()))
|
||||
.ok()
|
||||
})
|
||||
.and_then(|m| m.map(|m| m.id))
|
||||
});
|
||||
post_update.source = Some(updated.ext_two.source.content);
|
||||
post_update.license = Some(updated.ext_one.license);
|
||||
|
||||
Ok(post_update)
|
||||
}
|
||||
|
||||
fn get_sender07() -> &'static dyn Signer {
|
||||
Instance::get_local_instance_user().expect("Failed to local instance user")
|
||||
}
|
||||
}
|
||||
|
||||
impl AsObject<User, Update, &DbConn> for PostUpdate {
|
||||
type Error = Error;
|
||||
type Output = ();
|
||||
|
Loading…
Reference in New Issue
Block a user