mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-06-11 09:59:22 +00:00
c7de1fcf24
* start to implement apub inbox routing lib * got something that almost works * it compiles! * implemented some more * move library code to separate crate (most of it) * convert private message handlers * convert all comment receivers (except undo comment) * convert post receiver * add verify trait * convert community receivers * add cc field for all activities which i forgot before * convert inbox functions, add missing checks * convert undo like/dislike receivers * convert undo_delete and undo_remove receivers * move block/unblock activities * convert remaining activity receivers * reimplement http signature verification and other checks * also use actor type for routing, VerifyActivity and SendActivity traits * cleanup and restructure apub_receive code * wip: try to fix activity routing * implement a (very bad) derive macro for activityhandler * working activity routing! * rework pm verify(), fix tests and confirm manually also remove inbox username check which was broken * rework following verify(), fix tests and test manually * fix post/comment create/update, rework voting * Rewrite remove/delete post/comment, fix tests, test manually * Rework and fix (un)block user, announce, update post * some code cleanup * rework delete/remove activity receivers (still quite messy) * rewrite, test and fix add/remove mod, update community handlers * add docs for ActivityHandler derive macro * dont try to compile macro comments
101 lines
3.8 KiB
Rust
101 lines
3.8 KiB
Rust
use crate::activities::{
|
|
comment::{create::CreateComment, update::UpdateComment},
|
|
community::{
|
|
add_mod::AddMod,
|
|
announce::AnnounceActivity,
|
|
block_user::BlockUserFromCommunity,
|
|
undo_block_user::UndoBlockUserFromCommunity,
|
|
update::UpdateCommunity,
|
|
},
|
|
deletion::{delete::DeletePostCommentOrCommunity, undo_delete::UndoDeletePostCommentOrCommunity},
|
|
following::{accept::AcceptFollowCommunity, follow::FollowCommunity, undo::UndoFollowCommunity},
|
|
post::{create::CreatePost, update::UpdatePost},
|
|
private_message::{
|
|
create::CreatePrivateMessage,
|
|
delete::DeletePrivateMessage,
|
|
undo_delete::UndoDeletePrivateMessage,
|
|
update::UpdatePrivateMessage,
|
|
},
|
|
removal::{
|
|
remove::RemovePostCommentCommunityOrMod,
|
|
undo_remove::UndoRemovePostCommentOrCommunity,
|
|
},
|
|
voting::{
|
|
dislike::DislikePostOrComment,
|
|
like::LikePostOrComment,
|
|
undo_dislike::UndoDislikePostOrComment,
|
|
undo_like::UndoLikePostOrComment,
|
|
},
|
|
};
|
|
use lemmy_apub_lib::{ActivityCommonFields, ActivityHandler};
|
|
use lemmy_utils::LemmyError;
|
|
use lemmy_websocket::LemmyContext;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Clone, Debug, Deserialize, Serialize, ActivityHandler)]
|
|
#[serde(untagged)]
|
|
pub enum PersonInboxActivities {
|
|
AcceptFollowCommunity(AcceptFollowCommunity),
|
|
CreatePrivateMessage(CreatePrivateMessage),
|
|
UpdatePrivateMessage(UpdatePrivateMessage),
|
|
DeletePrivateMessage(DeletePrivateMessage),
|
|
UndoDeletePrivateMessage(UndoDeletePrivateMessage),
|
|
AnnounceActivity(Box<AnnounceActivity>),
|
|
}
|
|
|
|
#[derive(Clone, Debug, Deserialize, Serialize, ActivityHandler)]
|
|
#[serde(untagged)]
|
|
pub enum GroupInboxActivities {
|
|
FollowCommunity(FollowCommunity),
|
|
UndoFollowCommunity(UndoFollowCommunity),
|
|
CreateComment(CreateComment),
|
|
UpdateComment(UpdateComment),
|
|
CreatePost(CreatePost),
|
|
UpdatePost(UpdatePost),
|
|
LikePostOrComment(LikePostOrComment),
|
|
DislikePostOrComment(DislikePostOrComment),
|
|
UndoLikePostOrComment(UndoLikePostOrComment),
|
|
UndoDislikePostOrComment(UndoDislikePostOrComment),
|
|
DeletePostCommentOrCommunity(DeletePostCommentOrCommunity),
|
|
UndoDeletePostCommentOrCommunity(UndoDeletePostCommentOrCommunity),
|
|
RemovePostCommentOrCommunity(RemovePostCommentCommunityOrMod),
|
|
UndoRemovePostCommentOrCommunity(UndoRemovePostCommentOrCommunity),
|
|
UpdateCommunity(Box<UpdateCommunity>),
|
|
BlockUserFromCommunity(BlockUserFromCommunity),
|
|
UndoBlockUserFromCommunity(UndoBlockUserFromCommunity),
|
|
AddMod(AddMod),
|
|
}
|
|
|
|
#[derive(Clone, Debug, Deserialize, Serialize, ActivityHandler)]
|
|
#[serde(untagged)]
|
|
pub enum SharedInboxActivities {
|
|
// received by group
|
|
FollowCommunity(FollowCommunity),
|
|
UndoFollowCommunity(UndoFollowCommunity),
|
|
CreateComment(CreateComment),
|
|
UpdateComment(UpdateComment),
|
|
CreatePost(CreatePost),
|
|
UpdatePost(UpdatePost),
|
|
LikePostOrComment(LikePostOrComment),
|
|
DislikePostOrComment(DislikePostOrComment),
|
|
UndoDislikePostOrComment(UndoDislikePostOrComment),
|
|
UndoLikePostOrComment(UndoLikePostOrComment),
|
|
DeletePostCommentOrCommunity(DeletePostCommentOrCommunity),
|
|
UndoDeletePostCommentOrCommunity(UndoDeletePostCommentOrCommunity),
|
|
RemovePostCommentOrCommunity(RemovePostCommentCommunityOrMod),
|
|
UndoRemovePostCommentOrCommunity(UndoRemovePostCommentOrCommunity),
|
|
UpdateCommunity(Box<UpdateCommunity>),
|
|
BlockUserFromCommunity(BlockUserFromCommunity),
|
|
UndoBlockUserFromCommunity(UndoBlockUserFromCommunity),
|
|
AddMod(AddMod),
|
|
// received by person
|
|
AcceptFollowCommunity(AcceptFollowCommunity),
|
|
// Note, pm activities need to be at the end, otherwise comments will end up here. We can probably
|
|
// avoid this problem by replacing createpm.object with our own struct, instead of NoteExt.
|
|
CreatePrivateMessage(CreatePrivateMessage),
|
|
UpdatePrivateMessage(UpdatePrivateMessage),
|
|
DeletePrivateMessage(DeletePrivateMessage),
|
|
UndoDeletePrivateMessage(UndoDeletePrivateMessage),
|
|
AnnounceActivity(Box<AnnounceActivity>),
|
|
}
|