cave: move more activitypub struct from buzzback
This commit is contained in:
parent
1cb80c01e7
commit
d3a2f9e017
|
@ -1,48 +0,0 @@
|
|||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Actor {
|
||||
#[serde(rename = "@context")]
|
||||
pub jsonld_context: serde_json::Value,
|
||||
#[serde(rename = "type")]
|
||||
pub actor_type: String,
|
||||
pub id: String,
|
||||
pub name: Option<String>,
|
||||
pub icon: Option<Media>,
|
||||
pub inbox: String,
|
||||
pub outbox: String,
|
||||
#[serde(rename = "publicKey")]
|
||||
pub public_key: ActorPublicKey,
|
||||
#[serde(rename = "preferredUsername")]
|
||||
pub preferred_username: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct ActorPublicKey {
|
||||
pub id: String,
|
||||
pub owner: Option<String>,
|
||||
#[serde(rename = "publicKeyPem")]
|
||||
pub pem: String,
|
||||
}
|
||||
|
||||
/// `ActivityPub` "activity"
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Action<O> {
|
||||
#[serde(rename = "@context")]
|
||||
pub jsonld_context: serde_json::Value,
|
||||
#[serde(rename = "type")]
|
||||
pub action_type: String,
|
||||
pub id: String,
|
||||
pub actor: String,
|
||||
pub to: Option<serde_json::Value>,
|
||||
pub object: Option<O>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Media {
|
||||
#[serde(rename = "type")]
|
||||
pub media_type: String,
|
||||
#[serde(rename = "mediaType")]
|
||||
pub content_type: String,
|
||||
pub url: String,
|
||||
}
|
|
@ -1,7 +1,5 @@
|
|||
#[derive(Debug, thiserror::Error)]
|
||||
pub enum Error {
|
||||
#[error("HTTP Digest generation error")]
|
||||
Digest,
|
||||
#[error("JSON encoding error")]
|
||||
Json(#[from] serde_json::Error),
|
||||
#[error("Signature error")]
|
||||
|
@ -10,8 +8,4 @@ pub enum Error {
|
|||
HttpReq(#[from] http::Error),
|
||||
#[error("HTTP client error")]
|
||||
Http(#[from] reqwest::Error),
|
||||
#[error("Invalid URI")]
|
||||
InvalidUri,
|
||||
#[error("Error response from remote")]
|
||||
Response(String),
|
||||
}
|
||||
|
|
|
@ -2,12 +2,11 @@ use sigh::PrivateKey;
|
|||
use std::{sync::Arc, time::Duration};
|
||||
use std::{panic, process};
|
||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||
use cave::activitypub::send;
|
||||
use cave::activitypub;
|
||||
|
||||
mod error;
|
||||
mod config;
|
||||
mod db;
|
||||
mod activitypub;
|
||||
|
||||
async fn follow_back(
|
||||
client: &reqwest::Client, hostname: &str,
|
||||
|
@ -29,7 +28,7 @@ async fn follow_back(
|
|||
object: Some(&follow.id),
|
||||
};
|
||||
let key_id = format!("{}#key", follow.actor);
|
||||
let result = send::send(
|
||||
let result = activitypub::send::send(
|
||||
client, &follow.inbox,
|
||||
&key_id, &priv_key,
|
||||
&action,
|
||||
|
|
|
@ -23,7 +23,7 @@ where
|
|||
.header("host", &host)
|
||||
.header("content-type", "application/activity+json")
|
||||
.header("date", httpdate::fmt_http_date(SystemTime::now()))
|
||||
.header("accept", "application/activity+json")
|
||||
.header("accept", "application/activity+json, application/ld+json")
|
||||
.header("digest", digest_header)
|
||||
.body(vec![])?;
|
||||
SigningConfig::new(RsaSha256, private_key, key_id)
|
||||
|
|
|
@ -3,3 +3,52 @@ pub mod send;
|
|||
pub mod fetch;
|
||||
mod error;
|
||||
pub use error::Error;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Actor {
|
||||
#[serde(rename = "@context")]
|
||||
pub jsonld_context: serde_json::Value,
|
||||
#[serde(rename = "type")]
|
||||
pub actor_type: String,
|
||||
pub id: String,
|
||||
pub name: Option<String>,
|
||||
pub icon: Option<Media>,
|
||||
pub inbox: String,
|
||||
pub outbox: String,
|
||||
#[serde(rename = "publicKey")]
|
||||
pub public_key: ActorPublicKey,
|
||||
#[serde(rename = "preferredUsername")]
|
||||
pub preferred_username: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct ActorPublicKey {
|
||||
pub id: String,
|
||||
pub owner: Option<String>,
|
||||
#[serde(rename = "publicKeyPem")]
|
||||
pub pem: String,
|
||||
}
|
||||
|
||||
/// `ActivityPub` "activity"
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Action<O> {
|
||||
#[serde(rename = "@context")]
|
||||
pub jsonld_context: serde_json::Value,
|
||||
#[serde(rename = "type")]
|
||||
pub action_type: String,
|
||||
pub id: String,
|
||||
pub actor: String,
|
||||
pub to: Option<serde_json::Value>,
|
||||
pub object: Option<O>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct Media {
|
||||
#[serde(rename = "type")]
|
||||
pub media_type: String,
|
||||
#[serde(rename = "mediaType")]
|
||||
pub content_type: String,
|
||||
pub url: String,
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue