@ -1,9 +1,16 @@
use crate ::protocol ::Source ;
use activitypub_federation ::protocol ::values ::MediaTypeMarkdownOrHtml ;
use activitypub_federation ::{
config ::Data ,
fetch ::object_id ::ObjectId ,
protocol ::values ::MediaTypeMarkdownOrHtml ,
traits ::Object ,
} ;
use anyhow ::anyhow ;
use html2md ::parse_html ;
use lemmy_utils ::{ error ::LemmyResult , settings ::structs ::Settings } ;
use url ::Url ;
use lemmy_api_common ::context ::LemmyContext ;
use lemmy_utils ::error ::LemmyResult ;
use serde ::Deserialize ;
use std ::fmt ::Debug ;
pub mod comment ;
pub mod community ;
@ -43,9 +50,15 @@ pub(crate) fn read_from_string_or_source_opt(
/// wrapped in Announce. If we simply receive this like any other federated object, overwrite the
/// existing, local Post. In particular, it will set the field local = false, so that the object
/// can't be fetched from the Activitypub HTTP endpoint anymore (which only serves local objects).
pub ( crate ) fn verify_is_remote_object ( id : & Url , settings : & Settings ) -> LemmyResult < ( ) > {
let local_domain = settings . get_hostname_without_port ( ) ? ;
if id . domain ( ) = = Some ( & local_domain ) {
pub ( crate ) fn verify_is_remote_object < T > (
id : & ObjectId < T > ,
context : & Data < LemmyContext > ,
) -> LemmyResult < ( ) >
where
T : Object < DataType = LemmyContext > + Debug + Send + ' static ,
for < ' de2 > < T as Object > ::Kind : Deserialize < ' de2 > ,
{
if id . is_local ( context ) {
Err ( anyhow ! ( "cant accept local object from remote instance" ) . into ( ) )
} else {
Ok ( ( ) )