mirror of
https://github.com/versia-pub/activitypub.git
synced 2025-12-06 06:38:20 +01:00
feat: Update dependencies and add async-recursion crate
This commit is contained in:
parent
1588b2e46c
commit
9e148fe77f
12
Cargo.lock
generated
12
Cargo.lock
generated
|
|
@ -409,6 +409,17 @@ dependencies = [
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "async-recursion"
|
||||||
|
version = "1.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.58",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-stream"
|
name = "async-stream"
|
||||||
version = "0.3.5"
|
version = "0.3.5"
|
||||||
|
|
@ -1910,6 +1921,7 @@ dependencies = [
|
||||||
"actix-web",
|
"actix-web",
|
||||||
"actix-web-prom",
|
"actix-web-prom",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"async-recursion",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"async_once",
|
"async_once",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ reqwest = { version = "0.12.4", features = ["blocking", "json", "multipart"] }
|
||||||
time = { version = "0.3.36", features = ["serde"] }
|
time = { version = "0.3.36", features = ["serde"] }
|
||||||
serde_derive = "1.0.201"
|
serde_derive = "1.0.201"
|
||||||
dotenv = "0.15.0"
|
dotenv = "0.15.0"
|
||||||
|
async-recursion = "1.1.1"
|
||||||
|
|
||||||
[dependencies.sea-orm]
|
[dependencies.sea-orm]
|
||||||
version = "0.12.0"
|
version = "0.12.0"
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ use chrono::{DateTime, TimeZone, Utc};
|
||||||
use sea_orm::{ActiveModelTrait, ColumnTrait, EntityTrait, QueryFilter, Set};
|
use sea_orm::{ActiveModelTrait, ColumnTrait, EntityTrait, QueryFilter, Set};
|
||||||
use anyhow::{anyhow, Ok};
|
use anyhow::{anyhow, Ok};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
use async_recursion::async_recursion;
|
||||||
|
|
||||||
use crate::{database::State, entities::{self, post, prelude, user}, objects::post::Mention, utils::{generate_object_id, generate_user_id}, API_DOMAIN, DB, FEDERATION_CONFIG, LYSAND_DOMAIN};
|
use crate::{database::State, entities::{self, post, prelude, user}, objects::post::Mention, utils::{generate_object_id, generate_user_id}, API_DOMAIN, DB, FEDERATION_CONFIG, LYSAND_DOMAIN};
|
||||||
|
|
||||||
|
|
@ -22,7 +23,7 @@ pub async fn option_content_format_text(opt: Option<ContentFormat>) -> Option<St
|
||||||
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
#[async_recursion]
|
||||||
pub async fn db_post_from_url(url: Url) -> anyhow::Result<entities::post::Model> {
|
pub async fn db_post_from_url(url: Url) -> anyhow::Result<entities::post::Model> {
|
||||||
if !url.domain().eq(&Some(LYSAND_DOMAIN.as_str())) {
|
if !url.domain().eq(&Some(LYSAND_DOMAIN.as_str())) {
|
||||||
return Err(anyhow!("not lysands domain"));
|
return Err(anyhow!("not lysands domain"));
|
||||||
|
|
@ -80,7 +81,7 @@ pub async fn fetch_note_from_url(url: Url) -> anyhow::Result<super::objects::Not
|
||||||
let request = req_client.get(url).send().await?;
|
let request = req_client.get(url).send().await?;
|
||||||
Ok(request.json::<super::objects::Note>().await?)
|
Ok(request.json::<super::objects::Note>().await?)
|
||||||
}
|
}
|
||||||
|
#[async_recursion]
|
||||||
pub async fn receive_lysand_note(note: Note, db_id: String) -> anyhow::Result<crate::objects::post::Note> {
|
pub async fn receive_lysand_note(note: Note, db_id: String) -> anyhow::Result<crate::objects::post::Note> {
|
||||||
let lysand_author: entities::user::Model = db_user_from_url(note.author.clone()).await?;
|
let lysand_author: entities::user::Model = db_user_from_url(note.author.clone()).await?;
|
||||||
let user_res = prelude::User::find_by_id(db_id).one(DB.get().unwrap()).await;
|
let user_res = prelude::User::find_by_id(db_id).one(DB.get().unwrap()).await;
|
||||||
|
|
@ -131,7 +132,7 @@ pub async fn receive_lysand_note(note: Note, db_id: String) -> anyhow::Result<cr
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let reply_string: Option<String> = if let Some(rep) = note.replies_to {
|
let reply_string: Option<String> = if let Some(rep) = note.replies_to.clone() {
|
||||||
let note = fetch_note_from_url(rep).await?;
|
let note = fetch_note_from_url(rep).await?;
|
||||||
let fake_rep_url = Url::parse(&format!(
|
let fake_rep_url = Url::parse(&format!(
|
||||||
"https://{}/apbridge/object/{}",
|
"https://{}/apbridge/object/{}",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue