mirror of
https://github.com/LemmyNet/activitypub-federation-rust.git
synced 2025-05-20 01:18:52 +00:00
fmt
This commit is contained in:
parent
62b7543299
commit
d0f37c699f
17 changed files with 26 additions and 27 deletions
|
@ -11,6 +11,7 @@ use crate::{
|
||||||
|
|
||||||
use futures_core::Future;
|
use futures_core::Future;
|
||||||
|
|
||||||
|
use crate::url::Url;
|
||||||
use reqwest_middleware::ClientWithMiddleware;
|
use reqwest_middleware::ClientWithMiddleware;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use std::{
|
use std::{
|
||||||
|
@ -26,7 +27,6 @@ use tokio::{
|
||||||
task::{JoinHandle, JoinSet},
|
task::{JoinHandle, JoinSet},
|
||||||
};
|
};
|
||||||
use tracing::{info, warn};
|
use tracing::{info, warn};
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// Send a new activity to the given inboxes with automatic retry on failure. Alternatively you
|
/// Send a new activity to the given inboxes with automatic retry on failure. Alternatively you
|
||||||
/// can implement your own queue and then send activities using [[crate::activity_sending::SendActivityTask]].
|
/// can implement your own queue and then send activities using [[crate::activity_sending::SendActivityTask]].
|
||||||
|
|
|
@ -8,6 +8,7 @@ use crate::{
|
||||||
http_signatures::sign_request,
|
http_signatures::sign_request,
|
||||||
reqwest_shim::ResponseExt,
|
reqwest_shim::ResponseExt,
|
||||||
traits::{ActivityHandler, Actor},
|
traits::{ActivityHandler, Actor},
|
||||||
|
url::Url,
|
||||||
FEDERATION_CONTENT_TYPE,
|
FEDERATION_CONTENT_TYPE,
|
||||||
};
|
};
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
|
@ -27,7 +28,6 @@ use std::{
|
||||||
time::{Duration, SystemTime},
|
time::{Duration, SystemTime},
|
||||||
};
|
};
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
/// All info needed to sign and send one activity to one inbox. You should generally use
|
/// All info needed to sign and send one activity to one inbox. You should generally use
|
||||||
|
|
|
@ -54,12 +54,12 @@ mod test {
|
||||||
fetch::object_id::ObjectId,
|
fetch::object_id::ObjectId,
|
||||||
http_signatures::sign_request,
|
http_signatures::sign_request,
|
||||||
traits::tests::{DbConnection, DbUser, Follow, DB_USER_KEYPAIR},
|
traits::tests::{DbConnection, DbUser, Follow, DB_USER_KEYPAIR},
|
||||||
|
url::Url,
|
||||||
};
|
};
|
||||||
use actix_web::test::TestRequest;
|
use actix_web::test::TestRequest;
|
||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use reqwest_middleware::ClientWithMiddleware;
|
use reqwest_middleware::ClientWithMiddleware;
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_receive_activity() {
|
async fn test_receive_activity() {
|
||||||
|
|
|
@ -19,6 +19,7 @@ use crate::{
|
||||||
error::Error,
|
error::Error,
|
||||||
protocol::verification::verify_domains_match,
|
protocol::verification::verify_domains_match,
|
||||||
traits::{ActivityHandler, Actor},
|
traits::{ActivityHandler, Actor},
|
||||||
|
url::Url,
|
||||||
};
|
};
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use derive_builder::Builder;
|
use derive_builder::Builder;
|
||||||
|
@ -35,7 +36,6 @@ use std::{
|
||||||
},
|
},
|
||||||
time::Duration,
|
time::Duration,
|
||||||
};
|
};
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// Configuration for this library, with various federation related settings
|
/// Configuration for this library, with various federation related settings
|
||||||
#[derive(Builder, Clone)]
|
#[derive(Builder, Clone)]
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
//! Error messages returned by this library
|
//! Error messages returned by this library
|
||||||
|
|
||||||
use crate::fetch::webfinger::WebFingerError;
|
use crate::{fetch::webfinger::WebFingerError, url::Url};
|
||||||
use http_signature_normalization_reqwest::SignError;
|
use http_signature_normalization_reqwest::SignError;
|
||||||
use rsa::{
|
use rsa::{
|
||||||
errors::Error as RsaError,
|
errors::Error as RsaError,
|
||||||
|
@ -8,7 +8,6 @@ use rsa::{
|
||||||
};
|
};
|
||||||
use std::string::FromUtf8Error;
|
use std::string::FromUtf8Error;
|
||||||
use tokio::task::JoinError;
|
use tokio::task::JoinError;
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// Error messages returned by this library
|
/// Error messages returned by this library
|
||||||
#[derive(thiserror::Error, Debug)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use crate::{config::Data, error::Error, fetch::fetch_object_http, traits::Collection};
|
use crate::{config::Data, error::Error, fetch::fetch_object_http, traits::Collection, url::Url};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::{
|
use std::{
|
||||||
fmt::{Debug, Display, Formatter},
|
fmt::{Debug, Display, Formatter},
|
||||||
marker::PhantomData, str::FromStr,
|
marker::PhantomData,
|
||||||
|
str::FromStr,
|
||||||
};
|
};
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// Typed wrapper for Activitypub Collection ID which helps with dereferencing.
|
/// Typed wrapper for Activitypub Collection ID which helps with dereferencing.
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
|
|
|
@ -8,6 +8,7 @@ use crate::{
|
||||||
extract_id,
|
extract_id,
|
||||||
http_signatures::sign_request,
|
http_signatures::sign_request,
|
||||||
reqwest_shim::ResponseExt,
|
reqwest_shim::ResponseExt,
|
||||||
|
url::Url,
|
||||||
FEDERATION_CONTENT_TYPE,
|
FEDERATION_CONTENT_TYPE,
|
||||||
};
|
};
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
|
@ -15,7 +16,6 @@ use http::{HeaderValue, StatusCode};
|
||||||
use serde::de::DeserializeOwned;
|
use serde::de::DeserializeOwned;
|
||||||
use std::sync::atomic::Ordering;
|
use std::sync::atomic::Ordering;
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// Typed wrapper for collection IDs
|
/// Typed wrapper for collection IDs
|
||||||
pub mod collection_id;
|
pub mod collection_id;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::{config::Data, error::Error, fetch::fetch_object_http, traits::Object};
|
use crate::{config::Data, error::Error, fetch::fetch_object_http, traits::Object, url::Url};
|
||||||
use chrono::{DateTime, Duration as ChronoDuration, Utc};
|
use chrono::{DateTime, Duration as ChronoDuration, Utc};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::{
|
use std::{
|
||||||
|
@ -6,7 +6,6 @@ use std::{
|
||||||
marker::PhantomData,
|
marker::PhantomData,
|
||||||
str::FromStr,
|
str::FromStr,
|
||||||
};
|
};
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
impl<T> FromStr for ObjectId<T>
|
impl<T> FromStr for ObjectId<T>
|
||||||
where
|
where
|
||||||
|
|
|
@ -3,6 +3,7 @@ use crate::{
|
||||||
error::Error,
|
error::Error,
|
||||||
fetch::{fetch_object_http_with_accept, object_id::ObjectId},
|
fetch::{fetch_object_http_with_accept, object_id::ObjectId},
|
||||||
traits::{Actor, Object},
|
traits::{Actor, Object},
|
||||||
|
url::Url,
|
||||||
FEDERATION_CONTENT_TYPE,
|
FEDERATION_CONTENT_TYPE,
|
||||||
};
|
};
|
||||||
use http::HeaderValue;
|
use http::HeaderValue;
|
||||||
|
@ -12,7 +13,6 @@ use regex::Regex;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::{collections::HashMap, fmt::Display, str::FromStr};
|
use std::{collections::HashMap, fmt::Display, str::FromStr};
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// Errors relative to webfinger handling
|
/// Errors relative to webfinger handling
|
||||||
#[derive(thiserror::Error, Debug)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
|
|
|
@ -11,6 +11,7 @@ use crate::{
|
||||||
fetch::object_id::ObjectId,
|
fetch::object_id::ObjectId,
|
||||||
protocol::public_key::main_key_id,
|
protocol::public_key::main_key_id,
|
||||||
traits::{Actor, Object},
|
traits::{Actor, Object},
|
||||||
|
url::Url,
|
||||||
};
|
};
|
||||||
use base64::{engine::general_purpose::STANDARD as Base64, Engine};
|
use base64::{engine::general_purpose::STANDARD as Base64, Engine};
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
|
@ -32,7 +33,6 @@ use serde::Deserialize;
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
use std::{collections::BTreeMap, fmt::Debug, str::FromStr, time::Duration};
|
use std::{collections::BTreeMap, fmt::Debug, str::FromStr, time::Duration};
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// A private/public key pair used for HTTP signatures
|
/// A private/public key pair used for HTTP signatures
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
@ -287,7 +287,8 @@ pub mod test {
|
||||||
use rsa::{pkcs1::DecodeRsaPrivateKey, pkcs8::DecodePrivateKey};
|
use rsa::{pkcs1::DecodeRsaPrivateKey, pkcs8::DecodePrivateKey};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
static ACTOR_ID: Lazy<Url> = Lazy::new(|| Url::from_str("https://example.com/u/alice").unwrap());
|
static ACTOR_ID: Lazy<Url> =
|
||||||
|
Lazy::new(|| Url::from_str("https://example.com/u/alice").unwrap());
|
||||||
static INBOX_URL: Lazy<Url> =
|
static INBOX_URL: Lazy<Url> =
|
||||||
Lazy::new(|| Url::from_str("https://example.com/u/alice/inbox").unwrap());
|
Lazy::new(|| Url::from_str("https://example.com/u/alice/inbox").unwrap());
|
||||||
|
|
||||||
|
|
|
@ -33,8 +33,8 @@ use crate::{
|
||||||
};
|
};
|
||||||
pub use activitystreams_kinds as kinds;
|
pub use activitystreams_kinds as kinds;
|
||||||
|
|
||||||
use serde::{de::DeserializeOwned, Deserialize};
|
|
||||||
use crate::url::Url;
|
use crate::url::Url;
|
||||||
|
use serde::{de::DeserializeOwned, Deserialize};
|
||||||
|
|
||||||
/// Mime type for Activitypub data, used for `Accept` and `Content-Type` HTTP headers
|
/// Mime type for Activitypub data, used for `Accept` and `Content-Type` HTTP headers
|
||||||
pub const FEDERATION_CONTENT_TYPE: &str = "application/activity+json";
|
pub const FEDERATION_CONTENT_TYPE: &str = "application/activity+json";
|
||||||
|
|
|
@ -19,10 +19,9 @@
|
||||||
//! Ok::<(), serde_json::error::Error>(())
|
//! Ok::<(), serde_json::error::Error>(())
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use crate::{config::Data, traits::ActivityHandler};
|
use crate::{config::Data, traits::ActivityHandler, url::Url};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// Default context used in Activitypub
|
/// Default context used in Activitypub
|
||||||
const DEFAULT_CONTEXT: &str = "https://www.w3.org/ns/activitystreams";
|
const DEFAULT_CONTEXT: &str = "https://www.w3.org/ns/activitystreams";
|
||||||
|
|
|
@ -120,8 +120,7 @@ where
|
||||||
mod tests {
|
mod tests {
|
||||||
#[test]
|
#[test]
|
||||||
fn deserialize_one_multiple_values() {
|
fn deserialize_one_multiple_values() {
|
||||||
use crate::protocol::helpers::deserialize_one;
|
use crate::{protocol::helpers::deserialize_one, url::Url};
|
||||||
use crate::url::Url;
|
|
||||||
#[derive(serde::Deserialize)]
|
#[derive(serde::Deserialize)]
|
||||||
struct Note {
|
struct Note {
|
||||||
#[serde(deserialize_with = "deserialize_one")]
|
#[serde(deserialize_with = "deserialize_one")]
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
//! Struct which is used to federate actor key for HTTP signatures
|
//! Struct which is used to federate actor key for HTTP signatures
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
use crate::url::Url;
|
use crate::url::Url;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
/// Public key of actors which is used for HTTP signatures.
|
/// Public key of actors which is used for HTTP signatures.
|
||||||
///
|
///
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
//! Verify that received data is valid
|
//! Verify that received data is valid
|
||||||
|
|
||||||
use crate::error::Error;
|
use crate::{error::Error, url::Url};
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// Check that both urls have the same domain. If not, return UrlVerificationError.
|
/// Check that both urls have the same domain. If not, return UrlVerificationError.
|
||||||
///
|
///
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
//! Traits which need to be implemented for federated data types
|
//! Traits which need to be implemented for federated data types
|
||||||
|
|
||||||
use crate::{config::Data, protocol::public_key::PublicKey};
|
use crate::{config::Data, protocol::public_key::PublicKey, url::Url};
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use chrono::{DateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::{fmt::Debug, ops::Deref};
|
use std::{fmt::Debug, ops::Deref};
|
||||||
use crate::url::Url;
|
|
||||||
|
|
||||||
/// Helper for converting between database structs and federated protocol structs.
|
/// Helper for converting between database structs and federated protocol structs.
|
||||||
///
|
///
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
//! Wrapper for `url::Url` type.
|
//! Wrapper for `url::Url` type.
|
||||||
|
|
||||||
use std::{fmt::{Display, Formatter}, ops::Deref, str::FromStr};
|
use std::{
|
||||||
|
fmt::{Display, Formatter},
|
||||||
|
ops::Deref,
|
||||||
|
str::FromStr,
|
||||||
|
};
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
@ -43,4 +47,4 @@ impl FromStr for Url {
|
||||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||||
Ok(url::Url::from_str(s).map(Url).unwrap())
|
Ok(url::Url::from_str(s).map(Url).unwrap())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue