mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-11-23 04:41:19 +00:00
Implement webmention support (fixes #1395)
This commit is contained in:
parent
329a282aac
commit
f86a99b336
3 changed files with 1229 additions and 131 deletions
1349
Cargo.lock
generated
1349
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -44,3 +44,4 @@ anyhow = "1.0.43"
|
|||
thiserror = "1.0.26"
|
||||
background-jobs = "0.9.0"
|
||||
reqwest = { version = "0.11.4", features = ["json"] }
|
||||
webmention = {version = "0.1.3", features = ["hyper"], default-features = false }
|
||||
|
|
|
@ -21,12 +21,15 @@ use lemmy_db_queries::{source::post::Post_, Crud, Likeable};
|
|||
use lemmy_db_schema::source::post::*;
|
||||
use lemmy_utils::{
|
||||
request::fetch_site_data,
|
||||
settings::structs::Settings,
|
||||
utils::{check_slurs, check_slurs_opt, clean_url_params, is_valid_post_title},
|
||||
ApiError,
|
||||
ConnectionId,
|
||||
LemmyError,
|
||||
};
|
||||
use lemmy_websocket::{send::send_post_ws_message, LemmyContext, UserOperationCrud};
|
||||
use url::Url;
|
||||
use webmention::Webmention;
|
||||
|
||||
#[async_trait::async_trait(?Send)]
|
||||
impl PerformCrud for CreatePost {
|
||||
|
@ -125,6 +128,7 @@ impl PerformCrud for CreatePost {
|
|||
// Mark the post as read
|
||||
mark_post_as_read(person_id, post_id, context.pool()).await?;
|
||||
|
||||
let updated_post_url = updated_post.url.clone();
|
||||
let object = PostOrComment::Post(Box::new(updated_post));
|
||||
Vote::send(
|
||||
&object,
|
||||
|
@ -135,6 +139,12 @@ impl PerformCrud for CreatePost {
|
|||
)
|
||||
.await?;
|
||||
|
||||
if let Some(url) = updated_post_url {
|
||||
let hostname = Url::parse(&Settings::get().get_protocol_and_hostname())?;
|
||||
let mut webmention: Webmention = (hostname, url.clone().into_inner()).into();
|
||||
webmention.send().await?;
|
||||
}
|
||||
|
||||
send_post_ws_message(
|
||||
inserted_post.id,
|
||||
UserOperationCrud::CreatePost,
|
||||
|
|
Loading…
Reference in a new issue