diff --git a/Cargo.lock b/Cargo.lock index 8d2d49a..5343ae8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,7 +4,7 @@ version = 3 [[package]] name = "activitypub_federation" -version = "0.3.2" +version = "0.3.3" dependencies = [ "activitystreams-kinds", "actix-rt", @@ -21,6 +21,7 @@ dependencies = [ "http", "http-signature-normalization-actix", "http-signature-normalization-reqwest", + "httpdate", "itertools", "once_cell", "openssl", @@ -281,16 +282,15 @@ dependencies = [ [[package]] name = "background-jobs-actix" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8660626a2d8781b50cbe0e3b63d8e2a7e08a90e80fa2bca8e8cc19deff72ebf4" +checksum = "47263ad9c5679419347dae655c2fa2cba078b0eaa51ac758d4f0e9690c06910b" dependencies = [ "actix-rt", "anyhow", "async-mutex", "async-trait", "background-jobs-core", - "num_cpus", "serde", "serde_json", "thiserror", @@ -438,9 +438,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97abf9f0eca9e52b7f81b945524e76710e6cb2366aead23b7d4fbf72e281f888" +checksum = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453" dependencies = [ "cc", "cxxbridge-flags", @@ -450,9 +450,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc32cc5fea1d894b77d269ddb9f192110069a8a9c1f1d441195fba90553dea3" +checksum = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0" dependencies = [ "cc", "codespan-reporting", @@ -465,15 +465,15 @@ dependencies = [ [[package]] name = "cxxbridge-flags" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca220e4794c934dc6b1207c3b42856ad4c302f2df1712e9f8d2eec5afaacf1f" +checksum = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71" [[package]] name = "cxxbridge-macro" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b846f081361125bfc8dc9d3940c84e1fd83ba54bbca7b17cd29483c828be0704" +checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470" dependencies = [ "proc-macro2", "quote", @@ -668,21 +668,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "futures" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" version = "0.3.25" @@ -690,7 +675,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" dependencies = [ "futures-core", - "futures-sink", ] [[package]] @@ -699,34 +683,6 @@ version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" -[[package]] -name = "futures-executor" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" - -[[package]] -name = "futures-macro" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "futures-sink" version = "0.3.25" @@ -745,16 +701,10 @@ version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" dependencies = [ - "futures-channel", "futures-core", - "futures-io", - "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", - "slab", ] [[package]] @@ -865,14 +815,13 @@ dependencies = [ [[package]] name = "http-signature-normalization-reqwest" -version = "0.6.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630652b9b1f4c18064199c57cce4ad0352d1ec6ec8ad8ffcb0c71dea41ac6b79" +checksum = "e309145e63e70307ab1f521fb6e354158f0255e572da21c9fd56940c5bd5d854" dependencies = [ "base64", - "bytes", - "http", "http-signature-normalization", + "httpdate", "reqwest", "reqwest-middleware", "sha2", @@ -1416,13 +1365,12 @@ dependencies = [ [[package]] name = "reqwest-middleware" -version = "0.1.6" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69539cea4148dce683bec9dc95be3f0397a9bb2c248a49c8296a9d21659a8cdd" +checksum = "4a1c03e9011a8c59716ad13115550469e081e2e9892656b0ba6a47c907921894" dependencies = [ "anyhow", "async-trait", - "futures", "http", "reqwest", "serde", diff --git a/Cargo.toml b/Cargo.toml index fded523..6584f2c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ url = { version = "2.3.1", features = ["serde"] } serde_json = { version = "1.0.87", features = ["preserve_order"] } anyhow = "1.0.66" reqwest = { version = "0.11.12", features = ["json"] } -reqwest-middleware = "0.1.6" +reqwest-middleware = "0.2.0" tracing = "0.1.37" base64 = "0.13.1" openssl = "0.10.42" @@ -24,13 +24,14 @@ http = "0.2.8" sha2 = "0.10.6" actix-web = { version = "4.2.1", default-features = false } http-signature-normalization-actix = { version = "0.6.1", default-features = false, features = ["server", "sha-2"] } -http-signature-normalization-reqwest = { version = "0.6.0", default-features = false, features = ["sha-2", "middleware"] } +http-signature-normalization-reqwest = { version = "0.7.1", default-features = false, features = ["sha-2", "middleware"] } background-jobs = "0.13.0" thiserror = "1.0.37" derive_builder = "0.11.2" itertools = "0.10.5" dyn-clone = "1.0.9" enum_delegate = "0.2.0" +httpdate = "1.0.2" [dev-dependencies] activitystreams-kinds = "0.2.1" diff --git a/src/core/activity_queue.rs b/src/core/activity_queue.rs index 8ff3df5..698f561 100644 --- a/src/core/activity_queue.rs +++ b/src/core/activity_queue.rs @@ -16,12 +16,17 @@ use background_jobs::{ MaxRetries, WorkerConfig, }; -use chrono::Utc; use http::{header::HeaderName, HeaderMap, HeaderValue}; +use httpdate::fmt_http_date; use itertools::Itertools; use reqwest_middleware::ClientWithMiddleware; use serde::{Deserialize, Serialize}; -use std::{fmt::Debug, future::Future, pin::Pin, time::Duration}; +use std::{ + fmt::Debug, + future::Future, + pin::Pin, + time::{Duration, SystemTime}, +}; use tracing::{info, log::debug, warn}; use url::Url; @@ -198,7 +203,7 @@ fn generate_request_headers(inbox_url: &Url) -> HeaderMap { ); headers.insert( "date", - HeaderValue::from_str(&Utc::now().to_rfc2822()).expect("Hostname is valid"), + HeaderValue::from_str(&fmt_http_date(SystemTime::now())).expect("Date is valid"), ); headers }