[[package]]
name = "thiserror"
-version = "1.0.23"
+version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146"
+checksum = "93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.23"
+version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1"
+checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745"
dependencies = [
"proc-macro2 1.0.24",
"quote 1.0.8",
async-trait = "0.1.42"
captcha = "0.0.8"
anyhow = "1.0.38"
-thiserror = "1.0.23"
+thiserror = "1.0.26"
background-jobs = "0.8.0"
reqwest = { version = "0.10.10", features = ["json"] }
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<CommentResponse, LemmyError> {
- let data: &MarkCommentAsRead = &self;
+ let data: &MarkCommentAsRead = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let comment_id = data.comment_id;
let orig_comment = blocking(context.pool(), move |conn| {
- CommentView::read(&conn, comment_id, None)
+ CommentView::read(conn, comment_id, None)
})
.await??;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<CommentResponse, LemmyError> {
- let data: &SaveComment = &self;
+ let data: &SaveComment = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let comment_saved_form = CommentSavedForm {
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CommentResponse, LemmyError> {
- let data: &CreateCommentLike = &self;
+ let data: &CreateCommentLike = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let mut recipient_ids = Vec::<LocalUserId>::new();
let comment_id = data.comment_id;
let orig_comment = blocking(context.pool(), move |conn| {
- CommentView::read(&conn, comment_id, None)
+ CommentView::read(conn, comment_id, None)
})
.await??;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CreateCommentReportResponse, LemmyError> {
- let data: &CreateCommentReport = &self;
+ let data: &CreateCommentReport = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// check size of report and check for whitespace
let person_id = local_user_view.person.id;
let comment_id = data.comment_id;
let comment_view = blocking(context.pool(), move |conn| {
- CommentView::read(&conn, comment_id, None)
+ CommentView::read(conn, comment_id, None)
})
.await??;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<ResolveCommentReportResponse, LemmyError> {
- let data: &ResolveCommentReport = &self;
+ let data: &ResolveCommentReport = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let report_id = data.report_id;
let report = blocking(context.pool(), move |conn| {
- CommentReportView::read(&conn, report_id)
+ CommentReportView::read(conn, report_id)
})
.await??;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<ListCommentReportsResponse, LemmyError> {
- let data: &ListCommentReports = &self;
+ let data: &ListCommentReports = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let person_id = local_user_view.person.id;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<CommunityResponse, LemmyError> {
- let data: &FollowCommunity = &self;
+ let data: &FollowCommunity = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let community_id = data.community_id;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<BanFromCommunityResponse, LemmyError> {
- let data: &BanFromCommunity = &self;
+ let data: &BanFromCommunity = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let community_id = data.community_id;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<AddModToCommunityResponse, LemmyError> {
- let data: &AddModToCommunity = &self;
+ let data: &AddModToCommunity = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let community_id = data.community_id;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetCommunityResponse, LemmyError> {
- let data: &TransferCommunity = &self;
+ let data: &TransferCommunity = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let site_creator_id = blocking(context.pool(), move |conn| {
for<'de> Data: Deserialize<'de> + 'a,
Data: Perform,
{
- let parsed_data: Data = serde_json::from_str(&data)?;
+ let parsed_data: Data = serde_json::from_str(data)?;
let res = parsed_data
.perform(&web::Data::new(context), Some(id))
.await?;
// The check should fail, since the validator time is now newer than the jwt issue time
let updated_local_user =
- LocalUser::update_password(&conn, inserted_local_user.id, &"password111").unwrap();
+ LocalUser::update_password(&conn, inserted_local_user.id, "password111").unwrap();
let check_after = check_validator_time(&updated_local_user.validator_time, &claims);
assert!(check_after.is_err());
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<LoginResponse, LemmyError> {
- let data: &Login = &self;
+ let data: &Login = self;
// Fetch that username / email
let username_or_email = data.username_or_email.clone();
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<LoginResponse, LemmyError> {
- let data: &SaveUserSettings = &self;
+ let data: &SaveUserSettings = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let avatar = diesel_option_overwrite_to_url(&data.avatar)?;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<LoginResponse, LemmyError> {
- let data: &ChangePassword = &self;
+ let data: &ChangePassword = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
password_length_check(&data.new_password)?;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<AddAdminResponse, LemmyError> {
- let data: &AddAdmin = &self;
+ let data: &AddAdmin = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Make sure user is an admin
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<BanPersonResponse, LemmyError> {
- let data: &BanPerson = &self;
+ let data: &BanPerson = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Make sure user is an admin
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetRepliesResponse, LemmyError> {
- let data: &GetReplies = &self;
+ let data: &GetReplies = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetPersonMentionsResponse, LemmyError> {
- let data: &GetPersonMentions = &self;
+ let data: &GetPersonMentions = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<PersonMentionResponse, LemmyError> {
- let data: &MarkPersonMentionAsRead = &self;
+ let data: &MarkPersonMentionAsRead = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let person_mention_id = data.person_mention_id;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetRepliesResponse, LemmyError> {
- let data: &MarkAllAsRead = &self;
+ let data: &MarkAllAsRead = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let person_id = local_user_view.person.id;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<PasswordResetResponse, LemmyError> {
- let data: &PasswordReset = &self;
+ let data: &PasswordReset = self;
// Fetch that email
let email = data.email.clone();
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<LoginResponse, LemmyError> {
- let data: &PasswordChange = &self;
+ let data: &PasswordChange = self;
// Fetch the user_id from the token
let token = data.token.clone();
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<GetReportCountResponse, LemmyError> {
- let data: &GetReportCount = &self;
+ let data: &GetReportCount = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let person_id = local_user_view.person.id;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetFollowedCommunitiesResponse, LemmyError> {
- let data: &GetFollowedCommunities = &self;
+ let data: &GetFollowedCommunities = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let person_id = local_user_view.person.id;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PostResponse, LemmyError> {
- let data: &CreatePostLike = &self;
+ let data: &CreatePostLike = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Don't do a downvote if site has downvotes disabled
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PostResponse, LemmyError> {
- let data: &LockPost = &self;
+ let data: &LockPost = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let post_id = data.post_id;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PostResponse, LemmyError> {
- let data: &StickyPost = &self;
+ let data: &StickyPost = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let post_id = data.post_id;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<PostResponse, LemmyError> {
- let data: &SavePost = &self;
+ let data: &SavePost = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let post_saved_form = PostSavedForm {
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CreatePostReportResponse, LemmyError> {
- let data: &CreatePostReport = &self;
+ let data: &CreatePostReport = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// check size of report and check for whitespace
let person_id = local_user_view.person.id;
let post_id = data.post_id;
let post_view = blocking(context.pool(), move |conn| {
- PostView::read(&conn, post_id, None)
+ PostView::read(conn, post_id, None)
})
.await??;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<ResolvePostReportResponse, LemmyError> {
- let data: &ResolvePostReport = &self;
+ let data: &ResolvePostReport = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let report_id = data.report_id;
let report = blocking(context.pool(), move |conn| {
- PostReportView::read(&conn, report_id)
+ PostReportView::read(conn, report_id)
})
.await??;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<ListPostReportsResponse, LemmyError> {
- let data: &ListPostReports = &self;
+ let data: &ListPostReports = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let person_id = local_user_view.person.id;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PrivateMessageResponse, LemmyError> {
- let data: &MarkPrivateMessageAsRead = &self;
+ let data: &MarkPrivateMessageAsRead = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Checking permissions
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetModlogResponse, LemmyError> {
- let data: &GetModlog = &self;
+ let data: &GetModlog = self;
let community_id = data.community_id;
let mod_person_id = data.mod_person_id;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<SearchResponse, LemmyError> {
- let data: &Search = &self;
+ let data: &Search = self;
match search_by_apub_id(&data.q, context).await {
Ok(r) => return Ok(r),
}
SearchType::Comments => {
comments = blocking(context.pool(), move |conn| {
- CommentQueryBuilder::create(&conn)
+ CommentQueryBuilder::create(conn)
.sort(sort)
.listing_type(listing_type)
.search_term(q)
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetSiteResponse, LemmyError> {
- let data: &TransferSite = &self;
+ let data: &TransferSite = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
is_admin(&local_user_view)?;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetSiteConfigResponse, LemmyError> {
- let data: &GetSiteConfig = &self;
+ let data: &GetSiteConfig = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Only let admins read this
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetSiteConfigResponse, LemmyError> {
- let data: &SaveSiteConfig = &self;
+ let data: &SaveSiteConfig = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Only let admins read this
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<UserJoinResponse, LemmyError> {
- let data: &UserJoin = &self;
+ let data: &UserJoin = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
if let Some(ws_id) = websocket_id {
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CommunityJoinResponse, LemmyError> {
- let data: &CommunityJoin = &self;
+ let data: &CommunityJoin = self;
if let Some(ws_id) = websocket_id {
context.chat_server().do_send(JoinCommunityRoom {
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<ModJoinResponse, LemmyError> {
- let data: &ModJoin = &self;
+ let data: &ModJoin = self;
if let Some(ws_id) = websocket_id {
context.chat_server().do_send(JoinModRoom {
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PostJoinResponse, LemmyError> {
- let data: &PostJoin = &self;
+ let data: &PostJoin = self;
if let Some(ws_id) = websocket_id {
context.chat_server().do_send(JoinPostRoom {
.filter(|m| m.is_local() && m.name.ne(&person.name))
.collect::<Vec<&MentionData>>()
{
- if let Ok(mention_user_view) = LocalUserView::read_from_name(&conn, &mention.name) {
+ if let Ok(mention_user_view) = LocalUserView::read_from_name(conn, &mention.name) {
// TODO
// At some point, make it so you can't tag the parent creator either
// This can cause two notifications, one for reply and the other for mention
// Allow this to fail softly, since comment edits might re-update or replace it
// Let the uniqueness handle this fail
- PersonMention::create(&conn, &user_mention_form).ok();
+ PersonMention::create(conn, &user_mention_form).ok();
// Send an email to those local users that have notifications on
if do_send_email {
// Send notifs to the parent commenter / poster
match comment.parent_id {
Some(parent_id) => {
- if let Ok(parent_comment) = Comment::read(&conn, parent_id) {
+ if let Ok(parent_comment) = Comment::read(conn, parent_id) {
// Don't send a notif to yourself
if parent_comment.creator_id != person.id {
// Get the parent commenter local_user
- if let Ok(parent_user_view) = LocalUserView::read_person(&conn, parent_comment.creator_id)
+ if let Ok(parent_user_view) = LocalUserView::read_person(conn, parent_comment.creator_id)
{
recipient_ids.push(parent_user_view.local_user.id);
// Its a post
None => {
if post.creator_id != person.id {
- if let Ok(parent_user_view) = LocalUserView::read_person(&conn, post.creator_id) {
+ if let Ok(parent_user_view) = LocalUserView::read_person(conn, post.creator_id) {
recipient_ids.push(parent_user_view.local_user.id);
if do_send_email {
comment_content,
Settings::get().get_protocol_and_hostname()
);
- match send_email(subject, &user_email, &local_user_view.person.name, html) {
+ match send_email(subject, user_email, &local_user_view.person.name, html) {
Ok(_o) => _o,
Err(e) => error!("{}", e),
};
jwt: &str,
pool: &DbPool,
) -> Result<LocalUserView, LemmyError> {
- let claims = Claims::decode(&jwt)
+ let claims = Claims::decode(jwt)
.map_err(|_| ApiError::err("not_logged_in"))?
.claims;
let local_user_id = LocalUserId(claims.sub);
jwt: &str,
pool: &DbPool,
) -> Result<LocalUserSettingsView, LemmyError> {
- let claims = Claims::decode(&jwt)
+ let claims = Claims::decode(jwt)
.map_err(|_| ApiError::err("not_logged_in"))?
.claims;
let local_user_id = LocalUserId(claims.sub);
sha2 = "0.9.3"
async-trait = "0.1.42"
anyhow = "1.0.38"
-thiserror = "1.0.23"
+thiserror = "1.0.26"
background-jobs = "0.8.0"
reqwest = { version = "0.10.10", features = ["json"] }
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CommentResponse, LemmyError> {
- let data: &CreateComment = &self;
+ let data: &CreateComment = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let content_slurs_removed = remove_slurs(&data.content.to_owned());
// If there's a parent_id, check to make sure that comment is in that post
if let Some(parent_id) = data.parent_id {
// Make sure the parent comment exists
- let parent = blocking(context.pool(), move |conn| Comment::read(&conn, parent_id))
+ let parent = blocking(context.pool(), move |conn| Comment::read(conn, parent_id))
.await?
.map_err(|_| ApiError::err("couldnt_create_comment"))?;
if parent.post_id != post_id {
// Create the comment
let comment_form2 = comment_form.clone();
let inserted_comment = blocking(context.pool(), move |conn| {
- Comment::create(&conn, &comment_form2)
+ Comment::create(conn, &comment_form2)
})
.await?
.map_err(|_| ApiError::err("couldnt_create_comment"))?;
blocking(context.pool(), move |conn| -> Result<Comment, LemmyError> {
let apub_id =
generate_apub_endpoint(EndpointType::Comment, &inserted_comment_id.to_string())?;
- Ok(Comment::update_ap_id(&conn, inserted_comment_id, apub_id)?)
+ Ok(Comment::update_ap_id(conn, inserted_comment_id, apub_id)?)
})
.await?
.map_err(|_| ApiError::err("couldnt_create_comment"))?;
score: 1,
};
- let like = move |conn: &'_ _| CommentLike::like(&conn, &like_form);
+ let like = move |conn: &'_ _| CommentLike::like(conn, &like_form);
if blocking(context.pool(), like).await?.is_err() {
return Err(ApiError::err("couldnt_like_comment").into());
}
let person_id = local_user_view.person.id;
let mut comment_view = blocking(context.pool(), move |conn| {
- CommentView::read(&conn, inserted_comment.id, Some(person_id))
+ CommentView::read(conn, inserted_comment.id, Some(person_id))
})
.await??;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CommentResponse, LemmyError> {
- let data: &DeleteComment = &self;
+ let data: &DeleteComment = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let comment_id = data.comment_id;
let orig_comment = blocking(context.pool(), move |conn| {
- CommentView::read(&conn, comment_id, None)
+ CommentView::read(conn, comment_id, None)
})
.await??;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CommentResponse, LemmyError> {
- let data: &RemoveComment = &self;
+ let data: &RemoveComment = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let comment_id = data.comment_id;
let orig_comment = blocking(context.pool(), move |conn| {
- CommentView::read(&conn, comment_id, None)
+ CommentView::read(conn, comment_id, None)
})
.await??;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetCommentsResponse, LemmyError> {
- let data: &GetComments = &self;
+ let data: &GetComments = self;
let local_user_view = get_local_user_view_from_jwt_opt(&data.auth, context.pool()).await?;
let show_bot_accounts = local_user_view
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CommentResponse, LemmyError> {
- let data: &EditComment = &self;
+ let data: &EditComment = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let comment_id = data.comment_id;
let orig_comment = blocking(context.pool(), move |conn| {
- CommentView::read(&conn, comment_id, None)
+ CommentView::read(conn, comment_id, None)
})
.await??;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<CommunityResponse, LemmyError> {
- let data: &CreateCommunity = &self;
+ let data: &CreateCommunity = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let site = blocking(context.pool(), move |conn| Site::read(conn, 0)).await??;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CommunityResponse, LemmyError> {
- let data: &DeleteCommunity = &self;
+ let data: &DeleteCommunity = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Fetch the community mods
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CommunityResponse, LemmyError> {
- let data: &RemoveCommunity = &self;
+ let data: &RemoveCommunity = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Verify its an admin (only an admin can remove a community)
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetCommunityResponse, LemmyError> {
- let data: &GetCommunity = &self;
+ let data: &GetCommunity = self;
let local_user_view = get_local_user_view_from_jwt_opt(&data.auth, context.pool()).await?;
let person_id = local_user_view.map(|u| u.person.id);
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<ListCommunitiesResponse, LemmyError> {
- let data: &ListCommunities = &self;
+ let data: &ListCommunities = self;
let local_user_view = get_local_user_view_from_jwt_opt(&data.auth, context.pool()).await?;
let person_id = local_user_view.to_owned().map(|l| l.person.id);
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<CommunityResponse, LemmyError> {
- let data: &EditCommunity = &self;
+ let data: &EditCommunity = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
check_slurs_opt(&data.title)?;
for<'de> Data: Deserialize<'de> + 'a,
Data: PerformCrud,
{
- let parsed_data: Data = serde_json::from_str(&data)?;
+ let parsed_data: Data = serde_json::from_str(data)?;
let res = parsed_data
.perform(&web::Data::new(context), Some(id))
.await?;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PostResponse, LemmyError> {
- let data: &CreatePost = &self;
+ let data: &CreatePost = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
check_slurs(&data.name)?;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PostResponse, LemmyError> {
- let data: &DeletePost = &self;
+ let data: &DeletePost = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let post_id = data.post_id;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PostResponse, LemmyError> {
- let data: &RemovePost = &self;
+ let data: &RemovePost = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let post_id = data.post_id;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetPostResponse, LemmyError> {
- let data: &GetPost = &self;
+ let data: &GetPost = self;
let local_user_view = get_local_user_view_from_jwt_opt(&data.auth, context.pool()).await?;
let show_bot_accounts = local_user_view
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetPostsResponse, LemmyError> {
- let data: &GetPosts = &self;
+ let data: &GetPosts = self;
let local_user_view = get_local_user_view_from_jwt_opt(&data.auth, context.pool()).await?;
let person_id = local_user_view.to_owned().map(|l| l.person.id);
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PostResponse, LemmyError> {
- let data: &EditPost = &self;
+ let data: &EditPost = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
check_slurs_opt(&data.name)?;
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PrivateMessageResponse, LemmyError> {
- let data: &CreatePrivateMessage = &self;
+ let data: &CreatePrivateMessage = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let content_slurs_removed = remove_slurs(&data.content.to_owned());
&inserted_private_message_id.to_string(),
)?;
Ok(PrivateMessage::update_ap_id(
- &conn,
+ conn,
inserted_private_message_id,
apub_id,
)?)
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PrivateMessageResponse, LemmyError> {
- let data: &DeletePrivateMessage = &self;
+ let data: &DeletePrivateMessage = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Checking permissions
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<PrivateMessagesResponse, LemmyError> {
- let data: &GetPrivateMessages = &self;
+ let data: &GetPrivateMessages = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
let person_id = local_user_view.person.id;
let limit = data.limit;
let unread_only = data.unread_only;
let messages = blocking(context.pool(), move |conn| {
- PrivateMessageQueryBuilder::create(&conn, person_id)
+ PrivateMessageQueryBuilder::create(conn, person_id)
.page(page)
.limit(limit)
.unread_only(unread_only)
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<PrivateMessageResponse, LemmyError> {
- let data: &EditPrivateMessage = &self;
+ let data: &EditPrivateMessage = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Checking permissions
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<SiteResponse, LemmyError> {
- let data: &CreateSite = &self;
+ let data: &CreateSite = self;
let read_site = move |conn: &'_ _| Site::read_simple(conn);
if blocking(context.pool(), read_site).await?.is_ok() {
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<GetSiteResponse, LemmyError> {
- let data: &GetSite = &self;
+ let data: &GetSite = self;
let site_view = match blocking(context.pool(), move |conn| SiteView::read(conn)).await? {
Ok(site_view) => Some(site_view),
context: &Data<LemmyContext>,
websocket_id: Option<ConnectionId>,
) -> Result<SiteResponse, LemmyError> {
- let data: &EditSite = &self;
+ let data: &EditSite = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
check_slurs_opt(&data.name)?;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<LoginResponse, LemmyError> {
- let data: &Register = &self;
+ let data: &Register = self;
// Make sure site has open registration
if let Ok(site) = blocking(context.pool(), move |conn| Site::read_simple(conn)).await? {
// If the local user creation errored, then delete that person
blocking(context.pool(), move |conn| {
- Person::delete(&conn, inserted_person.id)
+ Person::delete(conn, inserted_person.id)
})
.await??;
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<LoginResponse, LemmyError> {
- let data: &DeleteAccount = &self;
+ let data: &DeleteAccount = self;
let local_user_view = get_local_user_view_from_jwt(&data.auth, context.pool()).await?;
// Verify the password
context: &Data<LemmyContext>,
_websocket_id: Option<ConnectionId>,
) -> Result<GetPersonDetailsResponse, LemmyError> {
- let data: &GetPersonDetails = &self;
+ let data: &GetPersonDetails = self;
let local_user_view = get_local_user_view_from_jwt_opt(&data.auth, context.pool()).await?;
let show_nsfw = local_user_view.as_ref().map(|t| t.local_user.show_nsfw);
sha2 = "0.9.3"
async-trait = "0.1.42"
anyhow = "1.0.38"
-thiserror = "1.0.23"
+thiserror = "1.0.26"
background-jobs = "0.8.0"
reqwest = { version = "0.10.10", features = ["json"] }
backtrace = "0.3.56"
})
.await??;
- let maa = collect_non_local_mentions(&self, &community, context).await?;
+ let maa = collect_non_local_mentions(self, &community, context).await?;
let mut create = Create::new(
creator.actor_id.to_owned().into_inner(),
// Set the mention tags
.set_many_tags(maa.get_tags()?);
- send_to_community(create.clone(), &creator, &community, None, context).await?;
- send_comment_mentions(&creator, maa.inboxes, create, context).await?;
+ send_to_community(create.clone(), creator, &community, None, context).await?;
+ send_comment_mentions(creator, maa.inboxes, create, context).await?;
Ok(())
}
})
.await??;
- let maa = collect_non_local_mentions(&self, &community, context).await?;
+ let maa = collect_non_local_mentions(self, &community, context).await?;
let mut update = Update::new(
creator.actor_id.to_owned().into_inner(),
// Set the mention tags
.set_many_tags(maa.get_tags()?);
- send_to_community(update.clone(), &creator, &community, None, context).await?;
- send_comment_mentions(&creator, maa.inboxes, update, context).await?;
+ send_to_community(update.clone(), creator, &community, None, context).await?;
+ send_comment_mentions(creator, maa.inboxes, update, context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(delete, &creator, &community, None, context).await?;
+ send_to_community(delete, creator, &community, None, context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(undo, &creator, &community, None, context).await?;
+ send_to_community(undo, creator, &community, None, context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(remove, &mod_, &community, None, context).await?;
+ send_to_community(remove, mod_, &community, None, context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(undo, &mod_, &community, None, context).await?;
+ send_to_community(undo, mod_, &community, None, context).await?;
Ok(())
}
}
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(like, &creator, &community, None, context).await?;
+ send_to_community(like, creator, &community, None, context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(dislike, &creator, &community, None, context).await?;
+ send_to_community(dislike, creator, &community, None, context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(undo, &creator, &community, None, context).await?;
+ send_to_community(undo, creator, &community, None, context).await?;
Ok(())
}
}
.set_many_ccs(vec![self.actor_id()])
.set_target(generate_moderators_url(&self.actor_id)?.into_inner());
- send_to_community(remove, &actor, self, Some(removed_mod.actor_id()), context).await?;
+ send_to_community(remove, actor, self, Some(removed_mod.actor_id()), context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![self.actor_id()]);
- send_to_community(block, &actor, self, Some(blocked_user.actor_id()), context).await?;
+ send_to_community(block, actor, self, Some(blocked_user.actor_id()), context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![self.actor_id()]);
- send_to_community(undo, &actor, self, Some(unblocked_user.actor_id()), context).await?;
+ send_to_community(undo, actor, self, Some(unblocked_user.actor_id()), context).await?;
Ok(())
}
}
person_id: self.id,
pending: true,
};
- blocking(&context.pool(), move |conn| {
+ blocking(context.pool(), move |conn| {
CommunityFollower::follow(conn, &community_follower_form).ok()
})
.await?;
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(like, &creator, &community, None, context).await?;
+ send_to_community(like, creator, &community, None, context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(dislike, &creator, &community, None, context).await?;
+ send_to_community(dislike, creator, &community, None, context).await?;
Ok(())
}
.set_to(public())
.set_many_ccs(vec![community.actor_id()]);
- send_to_community(undo, &creator, &community, None, context).await?;
+ send_to_community(undo, creator, &community, None, context).await?;
Ok(())
}
}
);
let public_key = PKey::public_key_from_pem(public_key.as_bytes())?;
let mut verifier = Verifier::new(MessageDigest::sha256(), &public_key)?;
- verifier.update(&signing_string.as_bytes())?;
+ verifier.update(signing_string.as_bytes())?;
Ok(verifier.verify(&base64::decode(signature)?)?)
})?;
use diesel::result::Error::NotFound;
use lemmy_api_common::blocking;
use lemmy_db_queries::{source::community::Community_, ApubObject, Joinable};
-use lemmy_db_schema::{
- source::community::{Community, CommunityModerator, CommunityModeratorForm},
- DbUrl,
-};
+use lemmy_db_schema::source::community::{Community, CommunityModerator, CommunityModeratorForm};
use lemmy_db_views_actor::community_moderator_view::CommunityModeratorView;
use lemmy_utils::{location_info, LemmyError};
use lemmy_websocket::LemmyContext;
let new_moderators = fetch_community_mods(context, group, request_counter).await?;
let community_id = community.id;
let current_moderators = blocking(context.pool(), move |conn| {
- CommunityModeratorView::for_community(&conn, community_id)
+ CommunityModeratorView::for_community(conn, community_id)
})
.await??;
// Remove old mods from database which arent in the moderators collection anymore
for mod_user in ¤t_moderators {
- if !new_moderators.contains(&&mod_user.moderator.actor_id.clone().into()) {
+ if !new_moderators.contains(&mod_user.moderator.actor_id.clone().into()) {
let community_moderator_form = CommunityModeratorForm {
community_id: mod_user.community.id,
person_id: mod_user.moderator.id,
// Add new mods to database which have been added to moderators collection
for mod_uri in new_moderators {
let mod_user = get_or_fetch_and_upsert_person(&mod_uri, context, request_counter).await?;
- let current_mod_uris: Vec<DbUrl> = current_moderators
+
+ if !current_moderators
.clone()
.iter()
.map(|c| c.moderator.actor_id.clone())
- .collect();
- if !current_mod_uris.contains(&mod_user.actor_id) {
+ .any(|x| x == mod_user.actor_id)
+ {
let community_moderator_form = CommunityModeratorForm {
community_id: community.id,
person_id: mod_user.id,
if *recursion_counter > MAX_REQUEST_NUMBER {
return Err(LemmyError::from(anyhow!("Maximum recursion depth reached")).into());
}
- check_is_apub_id_valid(&url, false)?;
+ check_is_apub_id_valid(url, false)?;
let timeout = Duration::from_secs(60);
);
Url::parse(&url)?
} else {
- Url::parse(&query)?
+ Url::parse(query)?
};
let recursion_counter = &mut 0;
SearchAcceptedObjects::Person(p) => {
let person_uri = p.inner.id(domain)?.context("person has no id")?;
- let person = get_or_fetch_and_upsert_person(&person_uri, context, recursion_counter).await?;
+ let person = get_or_fetch_and_upsert_person(person_uri, context, recursion_counter).await?;
response.users = vec![
blocking(context.pool(), move |conn| {
// This post, or the parent comment might not yet exist on this server yet, fetch them.
let post = Box::pin(get_or_fetch_and_insert_post(
- &post_ap_id,
+ post_ap_id,
context,
request_counter,
))
Some(parent_comment_uri) => {
let parent_comment_ap_id = &parent_comment_uri?;
let parent_comment = Box::pin(get_or_fetch_and_insert_comment(
- &parent_comment_ap_id,
+ parent_comment_ap_id,
context,
request_counter,
))
async fn to_apub(&self, pool: &DbPool) -> Result<GroupExt, LemmyError> {
let id = self.id;
let moderators = blocking(pool, move |conn| {
- CommunityModeratorView::for_community(&conn, id)
+ CommunityModeratorView::for_community(conn, id)
})
.await??;
let moderators: Vec<Url> = moderators
// otherwise parse and insert, assuring that it comes from the right domain
else {
let to_form = ToForm::from_apub(
- &from,
+ from,
context,
expected_domain,
request_counter,
.set_attributed_to(creator.actor_id.into_inner());
if let Some(body) = &self.body {
- set_content_and_source(&mut page, &body)?;
+ set_content_and_source(&mut page, body)?;
}
if let Some(url) = &self.url {
{
let actor = activity.actor()?;
let person_uri = actor.as_single_xsd_any_uri().context(location_info!())?;
- get_or_fetch_and_upsert_person(&person_uri, context, request_counter).await
+ get_or_fetch_and_upsert_person(person_uri, context, request_counter).await
}
/// Ensure that the ID of an incoming activity comes from the same domain as the actor. Optionally
let private_message =
PrivateMessage::from_apub(¬e, context, expected_domain, request_counter, false).await?;
- let message = blocking(&context.pool(), move |conn| {
+ let message = blocking(context.pool(), move |conn| {
PrivateMessageView::read(conn, private_message.id)
})
.await??;
PrivateMessage::from_apub(¬e, context, expected_domain, request_counter, false).await?;
let private_message_id = private_message.id;
- let message = blocking(&context.pool(), move |conn| {
+ let message = blocking(context.pool(), move |conn| {
PrivateMessageView::read(conn, private_message_id)
})
.await??;
})
.await??;
- let message = blocking(&context.pool(), move |conn| {
- PrivateMessageView::read(&conn, deleted_private_message.id)
+ let message = blocking(context.pool(), move |conn| {
+ PrivateMessageView::read(conn, deleted_private_message.id)
})
.await??;
})
.await??;
- let message = blocking(&context.pool(), move |conn| {
- PrivateMessageView::read(&conn, deleted_private_message.id)
+ let message = blocking(context.pool(), move |conn| {
+ PrivateMessageView::read(conn, deleted_private_message.id)
})
.await??;
.context(location_info!())?;
check_is_apub_id_valid(&person_id, false)?;
// check that the sender is a person, not a community
- get_or_fetch_and_upsert_person(&person_id, &context, request_counter).await?;
+ get_or_fetch_and_upsert_person(&person_id, context, request_counter).await?;
Ok(())
}
context: web::Data<LemmyContext>,
) -> Result<HttpResponse<Body>, LemmyError> {
let community = blocking(context.pool(), move |conn| {
- Community::read_from_name(&conn, &info.community_name)
+ Community::read_from_name(conn, &info.community_name)
})
.await??;
let community_id = community.id;
let community_followers = blocking(context.pool(), move |conn| {
- CommunityFollowerView::for_community(&conn, community_id)
+ CommunityFollowerView::for_community(conn, community_id)
})
.await??;
context: web::Data<LemmyContext>,
) -> Result<HttpResponse<Body>, LemmyError> {
let community = blocking(context.pool(), move |conn| {
- Community::read_from_name(&conn, &info.community_name)
+ Community::read_from_name(conn, &info.community_name)
})
.await??;
context: web::Data<LemmyContext>,
) -> Result<HttpResponse<Body>, LemmyError> {
let community = blocking(context.pool(), move |conn| {
- Community::read_from_name(&conn, &info.community_name)
+ Community::read_from_name(conn, &info.community_name)
})
.await??;
context: web::Data<LemmyContext>,
) -> Result<HttpResponse<Body>, LemmyError> {
let community = blocking(context.pool(), move |conn| {
- Community::read_from_name(&conn, &info.community_name)
+ Community::read_from_name(conn, &info.community_name)
})
.await??;
// ignore that for now
let cid = community.id;
let moderators = blocking(context.pool(), move |conn| {
- CommunityModeratorView::for_community(&conn, cid)
+ CommunityModeratorView::for_community(conn, cid)
})
.await??;
))?
.into();
let activity = blocking(context.pool(), move |conn| {
- Activity::read_from_apub_id(&conn, &activity_id)
+ Activity::read_from_apub_id(conn, &activity_id)
})
.await??;
context: web::Data<LemmyContext>,
) -> Result<HttpResponse<Body>, LemmyError> {
let person = blocking(context.pool(), move |conn| {
- Person::find_by_name(&conn, &info.user_name)
+ Person::find_by_name(conn, &info.user_name)
})
.await??;
// TODO: populate the person outbox
context: web::Data<LemmyContext>,
) -> Result<HttpResponse<Body>, LemmyError> {
let person = blocking(context.pool(), move |conn| {
- Person::find_by_name(&conn, &info.user_name)
+ Person::find_by_name(conn, &info.user_name)
})
.await??;
// Check if the activity is actually meant for us
let path = path.into_inner();
- let community = blocking(&context.pool(), move |conn| {
- Community::read_from_name(&conn, &path)
+ let community = blocking(context.pool(), move |conn| {
+ Community::read_from_name(conn, &path)
})
.await??;
let to_and_cc = get_activity_to_and_cc(&activity);
- if !to_and_cc.contains(&&community.actor_id()) {
+ if !to_and_cc.contains(&community.actor_id()) {
return Err(anyhow!("Activity delivered to wrong community").into());
}
// Only persons can send activities to the community, so we can get the actor as person
// unconditionally.
let actor_id = actor.actor_id();
- let person = blocking(&context.pool(), move |conn| {
- Person::read_from_apub_id(&conn, &actor_id.into())
+ let person = blocking(context.pool(), move |conn| {
+ Person::read_from_apub_id(conn, &actor_id.into())
})
.await??;
check_community_or_site_ban(&person, to_community.id, context.pool()).await?;
any_base.clone(),
person,
&to_community,
- &context,
+ context,
))
.await?;
false
};
// This will fail if they're already a follower, but ignore the error.
- blocking(&context.pool(), move |conn| {
- CommunityFollower::follow(&conn, &community_follower_form).ok()
+ blocking(context.pool(), move |conn| {
+ CommunityFollower::follow(conn, &community_follower_form).ok()
})
.await?;
.is_single_kind(&FollowType::Follow.to_string());
let any_base = activity.into_any_base()?;
if inner_kind {
- handle_undo_follow(any_base, actor_url, to_community, &context).await?;
+ handle_undo_follow(any_base, actor_url, to_community, context).await?;
Ok(false)
} else {
receive_undo_for_community(context, any_base, None, &actor_url, request_counter).await?;
let follow = Follow::from_any_base(object)?.context(location_info!())?;
verify_activity_domains_valid(&follow, &person_url, false)?;
- let person = blocking(&context.pool(), move |conn| {
- Person::read_from_apub_id(&conn, &person_url.into())
+ let person = blocking(context.pool(), move |conn| {
+ Person::read_from_apub_id(conn, &person_url.into())
})
.await??;
let community_follower_form = CommunityFollowerForm {
};
// This will fail if they aren't a follower, but ignore the error.
- blocking(&context.pool(), move |conn| {
- CommunityFollower::unfollow(&conn, &community_follower_form).ok()
+ blocking(context.pool(), move |conn| {
+ CommunityFollower::unfollow(conn, &community_follower_form).ok()
})
.await?;
) -> Result<bool, LemmyError> {
let activity_id = activity_id.to_owned().into();
let existing = blocking(pool, move |conn| {
- Activity::read_from_apub_id(&conn, &activity_id)
+ Activity::read_from_apub_id(conn, &activity_id)
})
.await?;
match existing {
.single_xsd_any_uri()
.context(location_info!())?;
check_is_apub_id_valid(&actor_id, false)?;
- let actor = get_or_fetch_and_upsert_actor(&actor_id, &context, request_counter).await?;
+ let actor = get_or_fetch_and_upsert_actor(&actor_id, context, request_counter).await?;
verify_signature(&request, actor.as_ref())?;
Ok(actor)
}
) -> Result<bool, LemmyError> {
for url in to_and_cc {
let url = url.to_owned();
- let person = blocking(&pool, move |conn| {
- Person::read_from_apub_id(&conn, &url.into())
+ let person = blocking(pool, move |conn| {
+ Person::read_from_apub_id(conn, &url.into())
})
.await?;
if let Ok(u) = person {
) -> Result<Option<Community>, LemmyError> {
for url in to_and_cc {
let url = url.to_owned().into();
- let community = blocking(&pool, move |conn| {
+ let community = blocking(pool, move |conn| {
// ignore errors here, because the current url might not actually be a followers url
- Community::read_from_followers_url(&conn, &url).ok()
+ Community::read_from_followers_url(conn, &url).ok()
})
.await?;
if let Some(c) = community {
// Check if the activity is actually meant for us
let username = path.into_inner();
- let person = blocking(&context.pool(), move |conn| {
- Person::find_by_name(&conn, &username)
+ let person = blocking(context.pool(), move |conn| {
+ Person::find_by_name(conn, &username)
})
.await??;
let to_and_cc = get_activity_to_and_cc(&activity);
// TODO: we should also accept activities that are sent to community followers
- if !to_and_cc.contains(&&person.actor_id()) {
+ if !to_and_cc.contains(&person.actor_id()) {
return Err(anyhow!("Activity delivered to wrong person").into());
}
match kind {
PersonValidTypes::Accept => {
receive_accept(
- &context,
+ context,
any_base,
actor,
to_person.expect("person provided"),
.await?;
}
PersonValidTypes::Announce => {
- Box::pin(receive_announce(&context, any_base, actor, request_counter)).await?
+ Box::pin(receive_announce(context, any_base, actor, request_counter)).await?
}
PersonValidTypes::Create => {
Box::pin(receive_create(
- &context,
+ context,
any_base,
actor_url,
request_counter,
}
PersonValidTypes::Update => {
Box::pin(receive_update(
- &context,
+ context,
any_base,
actor_url,
request_counter,
let community = is_addressed_to_community_followers(&to_and_cc, context.pool()).await?;
if let Some(c) = community {
let community_id = c.id;
- let has_local_followers = blocking(&context.pool(), move |conn| {
+ let has_local_followers = blocking(context.pool(), move |conn| {
CommunityFollower::has_local_followers(conn, community_id)
})
.await??;
let community_id = community.id;
let person_id = person.id;
// This will throw an error if no follow was requested
- blocking(&context.pool(), move |conn| {
+ blocking(context.pool(), move |conn| {
CommunityFollower::follow_accepted(conn, community_id, person_id)
})
.await??;
if verify_is_addressed_to_public(&create).is_ok() {
receive_create_comment(create, context, request_counter).await
} else {
- receive_create_private_message(&context, create, expected_domain, request_counter).await
+ receive_create_private_message(context, create, expected_domain, request_counter).await
}
}
if verify_is_addressed_to_public(&update).is_ok() {
receive_update_comment(update, context, request_counter).await
} else {
- receive_update_private_message(&context, update, expected_domain, request_counter).await
+ receive_update_private_message(context, update, expected_domain, request_counter).await
}
}
Community::read_from_apub_id(conn, &object_uri.into())
})
.await??;
- receive_remove_community(&context, community).await
+ receive_remove_community(context, community).await
}
async fn receive_undo(
request_counter: &mut i32,
) -> Result<(), LemmyError> {
let create = Create::from_any_base(activity)?.context(location_info!())?;
- verify_activity_domains_valid(&create, &expected_domain, true)?;
+ verify_activity_domains_valid(&create, expected_domain, true)?;
verify_is_addressed_to_public(&create)?;
let kind = create
request_counter: &mut i32,
) -> Result<(), LemmyError> {
let update = Update::from_any_base(activity.to_owned())?.context(location_info!())?;
- verify_activity_domains_valid(&update, &expected_domain, false)?;
+ verify_activity_domains_valid(&update, expected_domain, false)?;
verify_is_addressed_to_public(&update)?;
verify_modification_actor_instance(&update, &announce, context, request_counter).await?;
request_counter: &mut i32,
) -> Result<(), LemmyError> {
let like = Like::from_any_base(activity)?.context(location_info!())?;
- verify_activity_domains_valid(&like, &expected_domain, false)?;
+ verify_activity_domains_valid(&like, expected_domain, false)?;
verify_is_addressed_to_public(&like)?;
let object_id = like
.object()
.as_single_xsd_any_uri()
.context(location_info!())?;
- match fetch_post_or_comment_by_id(&object_id, context, request_counter).await? {
+ match fetch_post_or_comment_by_id(object_id, context, request_counter).await? {
PostOrComment::Post(post) => receive_like_post(like, *post, context, request_counter).await,
PostOrComment::Comment(comment) => {
receive_like_comment(like, *comment, context, request_counter).await
}
let dislike = Dislike::from_any_base(activity)?.context(location_info!())?;
- verify_activity_domains_valid(&dislike, &expected_domain, false)?;
+ verify_activity_domains_valid(&dislike, expected_domain, false)?;
verify_is_addressed_to_public(&dislike)?;
let object_id = dislike
.object()
.as_single_xsd_any_uri()
.context(location_info!())?;
- match fetch_post_or_comment_by_id(&object_id, context, request_counter).await? {
+ match fetch_post_or_comment_by_id(object_id, context, request_counter).await? {
PostOrComment::Post(post) => {
receive_dislike_post(dislike, *post, context, request_counter).await
}
match find_object_by_id(context, object).await {
Ok(Object::Post(p)) => {
- verify_activity_domains_valid(&delete, &expected_domain, true)?;
+ verify_activity_domains_valid(&delete, expected_domain, true)?;
receive_delete_post(context, *p).await
}
Ok(Object::Comment(c)) => {
- verify_activity_domains_valid(&delete, &expected_domain, true)?;
+ verify_activity_domains_valid(&delete, expected_domain, true)?;
receive_delete_comment(context, *c).await
}
Ok(Object::Community(c)) => {
.object()
.as_single_xsd_any_uri()
.context(location_info!())?;
- let remove_mod = get_or_fetch_and_upsert_person(&remove_mod, context, request_counter).await?;
+ let remove_mod = get_or_fetch_and_upsert_person(remove_mod, context, request_counter).await?;
let form = CommunityModeratorForm {
community_id: community.id,
person_id: remove_mod.id,
.context(location_info!())?;
match find_object_by_id(context, object).await {
Ok(Object::Post(p)) => {
- verify_activity_domains_valid(&delete, &expected_domain, true)?;
+ verify_activity_domains_valid(&delete, expected_domain, true)?;
receive_undo_delete_post(context, *p).await
}
Ok(Object::Comment(c)) => {
- verify_activity_domains_valid(&delete, &expected_domain, true)?;
+ verify_activity_domains_valid(&delete, expected_domain, true)?;
receive_undo_delete_comment(context, *c).await
}
Ok(Object::Community(c)) => {
) -> Result<(), LemmyError> {
let remove = Remove::from_any_base(undo.object().to_owned().one().context(location_info!())?)?
.context(location_info!())?;
- verify_activity_domains_valid(&remove, &expected_domain, false)?;
+ verify_activity_domains_valid(&remove, expected_domain, false)?;
verify_is_addressed_to_public(&remove)?;
verify_undo_remove_actor_instance(&undo, &remove, &announce, context).await?;
) -> Result<(), LemmyError> {
let like = Like::from_any_base(undo.object().to_owned().one().context(location_info!())?)?
.context(location_info!())?;
- verify_activity_domains_valid(&like, &expected_domain, false)?;
+ verify_activity_domains_valid(&like, expected_domain, false)?;
verify_is_addressed_to_public(&like)?;
let object_id = like
.object()
.as_single_xsd_any_uri()
.context(location_info!())?;
- match fetch_post_or_comment_by_id(&object_id, context, request_counter).await? {
+ match fetch_post_or_comment_by_id(object_id, context, request_counter).await? {
PostOrComment::Post(post) => {
receive_undo_like_post(&like, *post, context, request_counter).await
}
.object()
.as_single_xsd_any_uri()
.context(location_info!())?;
- let new_mod = get_or_fetch_and_upsert_person(&new_mod, context, request_counter).await?;
+ let new_mod = get_or_fetch_and_upsert_person(new_mod, context, request_counter).await?;
// If we had to refetch the community while parsing the activity, then the new mod has already
// been added. Skip it here as it would result in a duplicate key error.
) -> Result<(), LemmyError> {
let dislike = Dislike::from_any_base(undo.object().to_owned().one().context(location_info!())?)?
.context(location_info!())?;
- verify_activity_domains_valid(&dislike, &expected_domain, false)?;
+ verify_activity_domains_valid(&dislike, expected_domain, false)?;
verify_is_addressed_to_public(&dislike)?;
let object_id = dislike
.object()
.as_single_xsd_any_uri()
.context(location_info!())?;
- match fetch_post_or_comment_by_id(&object_id, context, request_counter).await? {
+ match fetch_post_or_comment_by_id(object_id, context, request_counter).await? {
PostOrComment::Post(post) => {
receive_undo_dislike_post(&dislike, *post, context, request_counter).await
}
.object()
.as_single_xsd_any_uri()
.context(location_info!())?;
- let blocked_user =
- get_or_fetch_and_upsert_person(&blocked_user, context, request_counter).await?;
+ let blocked_user = get_or_fetch_and_upsert_person(blocked_user, context, request_counter).await?;
let community_user_ban_form = CommunityPersonBanForm {
community_id: community.id,
let block = Block::from_any_base(object)?.context(location_info!())?;
let community = extract_community_from_cc(&block, context).await?;
- verify_activity_domains_valid(&block, &expected_domain, false)?;
+ verify_activity_domains_valid(&block, expected_domain, false)?;
verify_is_addressed_to_public(&block)?;
verify_undo_remove_actor_instance(&undo, &block, &announce, context).await?;
.object()
.as_single_xsd_any_uri()
.context(location_info!())?;
- let blocked_user =
- get_or_fetch_and_upsert_person(&blocked_user, context, request_counter).await?;
+ let blocked_user = get_or_fetch_and_upsert_person(blocked_user, context, request_counter).await?;
let community_user_ban_form = CommunityPersonBanForm {
community_id: community.id,
.flatten()
.context(location_info!())?;
let community_id: DbUrl = community_id.to_owned().into();
- let community = blocking(&context.pool(), move |conn| {
- Community::read_from_apub_id(&conn, &community_id)
+ let community = blocking(context.pool(), move |conn| {
+ Community::read_from_apub_id(conn, &community_id)
})
.await??;
Ok(community)
.as_single_xsd_any_uri()
.context(location_info!())?
.to_owned();
- let actor = blocking(&context.pool(), move |conn| {
- Person::read_from_apub_id(&conn, &actor.into())
+ let actor = blocking(context.pool(), move |conn| {
+ Person::read_from_apub_id(conn, &actor.into())
})
.await??;
) -> Result<Option<Community>, LemmyError> {
for url in to_and_cc {
let url = url.to_owned();
- let community = blocking(&pool, move |conn| {
- Community::read_from_apub_id(&conn, &url.into())
+ let community = blocking(pool, move |conn| {
+ Community::read_from_apub_id(conn, &url.into())
})
.await?;
if let Ok(c) = community {
let example_url = "https://example.com";
assert!(matches!(
diesel_option_overwrite_to_url(&Some(example_url.to_string())),
- Ok(Some(Some(url))) if url == Url::parse(&example_url).unwrap().into()
+ Ok(Some(Some(url))) if url == Url::parse(example_url).unwrap().into()
));
}
}
sensitive,
updated: None,
};
- let result = Activity::create(&conn, &activity_form);
+ let result = Activity::create(conn, &activity_form);
match result {
Ok(s) => Ok(s),
Err(e) => Err(IoError::new(
hash(&form.password_encrypted, DEFAULT_COST).expect("Couldn't hash password");
edited_user.password_encrypted = password_hash;
- Self::create(&conn, &edited_user)
+ Self::create(conn, &edited_user)
}
fn update_password(
token_encrypted: token_hash,
};
- Self::create(&conn, &form)
+ Self::create(conn, &form)
}
fn read_from_token(conn: &PgConnection, token: &str) -> Result<PasswordResetRequest, Error> {
let mut hasher = Sha256::new();
listing_type: ListingType,
sort_type: SortType,
) -> Result<HttpResponse, LemmyError> {
- let site_view = blocking(context.pool(), move |conn| SiteView::read(&conn)).await??;
+ let site_view = blocking(context.pool(), move |conn| SiteView::read(conn)).await??;
let posts = blocking(context.pool(), move |conn| {
- PostQueryBuilder::create(&conn)
+ PostQueryBuilder::create(conn)
.listing_type(listing_type)
.sort(sort_type)
.list()
sort_type: &SortType,
user_name: String,
) -> Result<ChannelBuilder, LemmyError> {
- let site_view = SiteView::read(&conn)?;
- let person = Person::find_by_name(&conn, &user_name)?;
+ let site_view = SiteView::read(conn)?;
+ let person = Person::find_by_name(conn, &user_name)?;
- let posts = PostQueryBuilder::create(&conn)
+ let posts = PostQueryBuilder::create(conn)
.listing_type(ListingType::All)
.sort(*sort_type)
.creator_id(person.id)
sort_type: &SortType,
community_name: String,
) -> Result<ChannelBuilder, LemmyError> {
- let site_view = SiteView::read(&conn)?;
- let community = Community::read_from_name(&conn, &community_name)?;
+ let site_view = SiteView::read(conn)?;
+ let community = Community::read_from_name(conn, &community_name)?;
- let posts = PostQueryBuilder::create(&conn)
+ let posts = PostQueryBuilder::create(conn)
.listing_type(ListingType::All)
.sort(*sort_type)
.community_id(community.id)
sort_type: &SortType,
jwt: String,
) -> Result<ChannelBuilder, LemmyError> {
- let site_view = SiteView::read(&conn)?;
+ let site_view = SiteView::read(conn)?;
let local_user_id = LocalUserId(Claims::decode(&jwt)?.claims.sub);
- let local_user = LocalUser::read(&conn, local_user_id)?;
+ let local_user = LocalUser::read(conn, local_user_id)?;
let person_id = local_user.person_id;
let show_bot_accounts = local_user.show_bot_accounts;
let show_read_posts = local_user.show_read_posts;
- let posts = PostQueryBuilder::create(&conn)
+ let posts = PostQueryBuilder::create(conn)
.listing_type(ListingType::Subscribed)
.my_person_id(person_id)
.show_bot_accounts(show_bot_accounts)
}
fn get_feed_inbox(conn: &PgConnection, jwt: String) -> Result<ChannelBuilder, LemmyError> {
- let site_view = SiteView::read(&conn)?;
+ let site_view = SiteView::read(conn)?;
let local_user_id = LocalUserId(Claims::decode(&jwt)?.claims.sub);
- let local_user = LocalUser::read(&conn, local_user_id)?;
+ let local_user = LocalUser::read(conn, local_user_id)?;
let person_id = local_user.person_id;
let show_bot_accounts = local_user.show_bot_accounts;
let sort = SortType::New;
- let replies = CommentQueryBuilder::create(&conn)
+ let replies = CommentQueryBuilder::create(conn)
.recipient_id(person_id)
.my_person_id(person_id)
.show_bot_accounts(show_bot_accounts)
.sort(sort)
.list()?;
- let mentions = PersonMentionQueryBuilder::create(&conn)
+ let mentions = PersonMentionQueryBuilder::create(conn)
.recipient_id(person_id)
.my_person_id(person_id)
.sort(sort)
percent-encoding = "2.1.0"
serde = { version = "1.0.123", features = ["derive"] }
serde_json = { version = "1.0.61", features = ["preserve_order"] }
-thiserror = "1.0.23"
+thiserror = "1.0.26"
comrak = { version = "0.9.0", default-features = false }
lazy_static = "1.4.0"
openssl = "0.10.32"
..Validation::default()
};
decode::<Claims>(
- &jwt,
+ jwt,
&DecodingKey::from_secret(Settings::get().jwt_secret().as_ref()),
&v,
)
}
},
// Try to generate a small thumbnail if iframely is not supported
- None => match fetch_pictrs(client, &url).await {
+ None => match fetch_pictrs(client, url).await {
Ok(res) => Some(res.files[0].file.to_owned()),
Err(e) => {
error!("pictrs err: {}", e);
"faggot test kike tranny cocksucker retardeds. Capitalized Niggerz. This is a bunch of other safe text.";
let slur_free = "No slurs here";
assert_eq!(
- remove_slurs(&test),
+ remove_slurs(test),
"*removed* test *removed* *removed* *removed* *removed*. Capitalized *removed*. This is a bunch of other safe text."
.to_string()
);
slurs.push('|');
slurs.push_str(&additional_slurs);
};
- RegexBuilder::new(&&slurs).case_insensitive(true).build().expect("compile regex")
+ RegexBuilder::new(&slurs).case_insensitive(true).build().expect("compile regex")
};
message: "Unknown op type".to_string(),
})?;
- if let Ok(user_operation_crud) = UserOperationCrud::from_str(&op) {
+ if let Ok(user_operation_crud) = UserOperationCrud::from_str(op) {
let fut = (message_handler_crud)(context, msg.id, user_operation_crud.clone(), data);
match user_operation_crud {
UserOperationCrud::Register => rate_limiter.register().wrap(ip, fut).await,
_ => rate_limiter.message().wrap(ip, fut).await,
}
} else {
- let user_operation = UserOperation::from_str(&op)?;
+ let user_operation = UserOperation::from_str(op)?;
let fut = (message_handler)(context, msg.id, user_operation.clone(), data);
rate_limiter.message().wrap(ip, fut).await
}
use log::info;
pub fn run_advanced_migrations(conn: &PgConnection) -> Result<(), LemmyError> {
- user_updates_2020_04_02(&conn)?;
- community_updates_2020_04_02(&conn)?;
- post_updates_2020_04_03(&conn)?;
- comment_updates_2020_04_03(&conn)?;
- private_message_updates_2020_05_05(&conn)?;
- post_thumbnail_url_updates_2020_07_27(&conn)?;
- apub_columns_2021_02_02(&conn)?;
+ user_updates_2020_04_02(conn)?;
+ community_updates_2020_04_02(conn)?;
+ post_updates_2020_04_03(conn)?;
+ comment_updates_2020_04_03(conn)?;
+ private_message_updates_2020_05_05(conn)?;
+ post_thumbnail_url_updates_2020_07_27(conn)?;
+ apub_columns_2021_02_02(conn)?;
Ok(())
}
..PersonForm::default()
};
- Person::update(&conn, cperson.id, &form)?;
+ Person::update(conn, cperson.id, &form)?;
}
info!("{} person rows updated.", incorrect_persons.len());
shared_inbox_url: None,
};
- Community::update(&conn, ccommunity.id, &form)?;
+ Community::update(conn, ccommunity.id, &form)?;
}
info!("{} community rows updated.", incorrect_communities.len());
for cpost in &incorrect_posts {
let apub_id = generate_apub_endpoint(EndpointType::Post, &cpost.id.to_string())?;
- Post::update_ap_id(&conn, cpost.id, apub_id)?;
+ Post::update_ap_id(conn, cpost.id, apub_id)?;
}
info!("{} post rows updated.", incorrect_posts.len());
for ccomment in &incorrect_comments {
let apub_id = generate_apub_endpoint(EndpointType::Comment, &ccomment.id.to_string())?;
- Comment::update_ap_id(&conn, ccomment.id, apub_id)?;
+ Comment::update_ap_id(conn, ccomment.id, apub_id)?;
}
info!("{} comment rows updated.", incorrect_comments.len());
for cpm in &incorrect_pms {
let apub_id = generate_apub_endpoint(EndpointType::PrivateMessage, &cpm.id.to_string())?;
- PrivateMessage::update_ap_id(&conn, cpm.id, apub_id)?;
+ PrivateMessage::update_ap_id(conn, cpm.id, apub_id)?;
}
info!("{} private message rows updated.", incorrect_pms.len());
"comment_aggregates",
"community_aggregates",
] {
- reindex_table(&conn, &table_name);
+ reindex_table(conn, table_name);
}
}
/// Clear old activities (this table gets very large)
fn clear_old_activities(conn: &PgConnection) {
info!("Clearing old activities...");
- Activity::delete_olds(&conn).expect("clear old activities");
+ Activity::delete_olds(conn).expect("clear old activities");
info!("Done.");
}