From 43b51d79ce3d194fd9d435d15687a9788a512ae2 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Thu, 9 Jan 2025 11:44:59 +0100 Subject: [PATCH] Revert "Upgrade deps (#133)" This reverts commit 8910550663c980fbe0a3566307a61eefb41e97d2. --- Cargo.toml | 62 +++++++++++++------------- examples/local_federation/axum/http.rs | 4 +- src/actix_web/inbox.rs | 8 ++-- src/axum/inbox.rs | 2 + src/axum/middleware.rs | 3 +- src/error.rs | 9 +--- src/lib.rs | 4 +- 7 files changed, 45 insertions(+), 47 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e08c794..5ac2d79 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,70 +32,70 @@ redundant_closure_for_method_calls = "deny" unwrap_used = "deny" [dependencies] -chrono = { version = "0.4.39", features = ["clock"], default-features = false } -serde = { version = "1.0.217", features = ["derive"] } -async-trait = "0.1.84" -url = { version = "2.5.4", features = ["serde"] } -serde_json = { version = "1.0.134", features = ["preserve_order"] } -reqwest = { version = "0.12.12", default-features = false, features = [ +chrono = { version = "0.4.38", features = ["clock"], default-features = false } +serde = { version = "1.0.204", features = ["derive"] } +async-trait = "0.1.81" +url = { version = "2.5.2", features = ["serde"] } +serde_json = { version = "1.0.120", features = ["preserve_order"] } +reqwest = { version = "0.12.5", default-features = false, features = [ "json", "stream", "rustls-tls", ] } -reqwest-middleware = "0.4.0" -tracing = "0.1.41" +reqwest-middleware = "0.3.2" +tracing = "0.1.40" base64 = "0.22.1" rand = "0.8.5" -rsa = "0.9.7" -once_cell = "1.20.2" -http = "1.2.0" +rsa = "0.9.6" +once_cell = "1.19.0" +http = "1.1.0" sha2 = { version = "0.10.8", features = ["oid"] } -thiserror = "2.0.9" -derive_builder = "0.20.2" -itertools = "0.14.0" +thiserror = "1.0.62" +derive_builder = "0.20.0" +itertools = "0.13.0" dyn-clone = "1.0.17" enum_delegate = "0.2.0" httpdate = "1.0.3" -http-signature-normalization-reqwest = { version = "0.13.0", default-features = false, features = [ +http-signature-normalization-reqwest = { version = "0.12.0", default-features = false, features = [ "sha-2", "middleware", "default-spawner", ] } http-signature-normalization = "0.7.0" -bytes = "1.9.0" -futures-core = { version = "0.3.31", default-features = false } -pin-project-lite = "0.2.15" +bytes = "1.6.1" +futures-core = { version = "0.3.30", default-features = false } +pin-project-lite = "0.2.14" activitystreams-kinds = "0.3.0" -regex = { version = "1.11.1", default-features = false, features = [ +regex = { version = "1.10.5", default-features = false, features = [ "std", "unicode", ] } -tokio = { version = "1.42.0", features = [ +tokio = { version = "1.38.0", features = [ "sync", "rt", "rt-multi-thread", "time", ] } -diesel = { version = "2.2.6", features = [ +diesel = { version = "2.2.1", features = [ "postgres", ], default-features = false, optional = true } -futures = "0.3.31" -moka = { version = "0.12.9", features = ["future"] } +futures = "0.3.30" +moka = { version = "0.12.8", features = ["future"] } # Actix-web -actix-web = { version = "4.9.0", default-features = false, optional = true } +actix-web = { version = "4.8.0", default-features = false, optional = true } http02 = { package = "http", version = "0.2.12", optional = true } # Axum -axum = { version = "0.8.1", features = ["json"], default-features = false, optional = true } -tower = { version = "0.5.2", optional = true } +axum = { version = "0.7.5", features = ["json"], default-features = false, optional = true } +tower = { version = "0.4.13", optional = true } [dev-dependencies] -anyhow = "1.0.95" -axum = { version = "0.8.1", features = ["macros"] } -axum-extra = { version = "0.10.0", features = ["typed-header"] } -env_logger = "0.11.6" -tokio = { version = "1.42.0", features = ["full"] } +anyhow = "1.0.86" +axum = { version = "0.7.5", features = ["macros"] } +axum-extra = { version = "0.9.3", features = ["typed-header"] } +env_logger = "0.11.3" +tokio = { version = "1.38.0", features = ["full"] } [profile.dev] strip = "symbols" diff --git a/examples/local_federation/axum/http.rs b/examples/local_federation/axum/http.rs index e010a73..dd9d002 100644 --- a/examples/local_federation/axum/http.rs +++ b/examples/local_federation/axum/http.rs @@ -30,8 +30,8 @@ pub fn listen(config: &FederationConfig) -> Result<(), Error> { info!("Listening with axum on {hostname}"); let config = config.clone(); let app = Router::new() - .route("/{user}/inbox", post(http_post_user_inbox)) - .route("/{user}", get(http_get_user)) + .route("/:user/inbox", post(http_post_user_inbox)) + .route("/:user", get(http_get_user)) .route("/.well-known/webfinger", get(webfinger)) .layer(FederationMiddleware::new(config)); diff --git a/src/actix_web/inbox.rs b/src/actix_web/inbox.rs index 0912e72..9bce475 100644 --- a/src/actix_web/inbox.rs +++ b/src/actix_web/inbox.rs @@ -122,14 +122,14 @@ mod test { let (_, _, config) = setup_receive_test().await; let actor = Url::parse("http://ds9.lemmy.ml/u/lemmy_alpha").unwrap(); - let activity_id = "http://localhost:123/1"; + let id = "http://localhost:123/1"; let activity = json!({ "actor": actor.as_str(), "to": ["https://www.w3.org/ns/activitystreams#Public"], "object": "http://ds9.lemmy.ml/post/1", "cc": ["http://enterprise.lemmy.ml/c/main"], "type": "Delete", - "id": activity_id + "id": id } ); let body: Bytes = serde_json::to_vec(&activity).unwrap().into(); @@ -144,8 +144,8 @@ mod test { .await; match res { - Err(Error::ParseReceivedActivity { err: _, id }) => { - assert_eq!(activity_id, id.expect("has url").as_str()); + Err(Error::ParseReceivedActivity(_, url)) => { + assert_eq!(id, url.expect("has url").as_str()); } _ => unreachable!(), } diff --git a/src/axum/inbox.rs b/src/axum/inbox.rs index 84567e0..1767c10 100644 --- a/src/axum/inbox.rs +++ b/src/axum/inbox.rs @@ -10,6 +10,7 @@ use crate::{ traits::{ActivityHandler, Actor, Object}, }; use axum::{ + async_trait, body::Body, extract::FromRequest, http::{Request, StatusCode}, @@ -57,6 +58,7 @@ pub struct ActivityData { body: Vec, } +#[async_trait] impl FromRequest for ActivityData where S: Send + Sync, diff --git a/src/axum/middleware.rs b/src/axum/middleware.rs index 2f8b0e9..290dc94 100644 --- a/src/axum/middleware.rs +++ b/src/axum/middleware.rs @@ -1,5 +1,5 @@ use crate::config::{Data, FederationConfig, FederationMiddleware}; -use axum::{body::Body, extract::FromRequestParts, http::Request, response::Response}; +use axum::{async_trait, body::Body, extract::FromRequestParts, http::Request, response::Response}; use http::{request::Parts, StatusCode}; use std::task::{Context, Poll}; use tower::{Layer, Service}; @@ -43,6 +43,7 @@ where } } +#[async_trait] impl FromRequestParts for Data where S: Send + Sync, diff --git a/src/error.rs b/src/error.rs index 06c8085..1866e48 100644 --- a/src/error.rs +++ b/src/error.rs @@ -44,16 +44,11 @@ pub enum Error { #[error("Failed to parse object {1} with content {2}: {0}")] ParseFetchedObject(serde_json::Error, Url, String), /// Failed to parse an activity received from another instance - #[error("Failed to parse incoming activity {}: {0}", match .id { + #[error("Failed to parse incoming activity {}: {0}", match .1 { Some(t) => format!("with id {t}"), None => String::new(), })] - ParseReceivedActivity { - /// The parse error - err: serde_json::Error, - /// ID of the Activitypub object which caused this error - id: Option, - }, + ParseReceivedActivity(serde_json::Error, Option), /// Reqwest Middleware Error #[error(transparent)] ReqwestMiddleware(#[from] reqwest_middleware::Error), diff --git a/src/lib.rs b/src/lib.rs index b7fe013..0a44fc9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -52,10 +52,10 @@ where ::Error: From, Datatype: Clone, { - let activity: Activity = serde_json::from_slice(body).map_err(|err| { + let activity: Activity = serde_json::from_slice(body).map_err(|e| { // Attempt to include activity id in error message let id = extract_id(body).ok(); - Error::ParseReceivedActivity { err, id } + Error::ParseReceivedActivity(e, id) })?; data.config.verify_url_and_domain(&activity).await?; let actor = ObjectId::::from(activity.actor().clone())