mainsail 0.1.0

Batteries-included ActivityPub Library
Documentation
use hyper::body::Bytes;
use crate::activitypub::objects::activities::GenericActivity;
use crate::activitypub::objects::actor::Actor;
use crate::server::ap_request::{AuthedApRequest, UnverifiedApRequest};
use crate::tests;

pub fn create_unverified_get(url: &str, name: &str) -> UnverifiedApRequest {
    let request = hyper::Request::builder()
        .method("GET")
        .uri(url)
        .header("Content-Type", "activity/json")
        .body(Bytes::new())
        .unwrap();

    let db = tests::get_named_memory_db(name);
    let domain = "example.com".to_string();

    UnverifiedApRequest { request, db, domain, actor: crate::server::ap_request::NoAuth }
}

pub fn create_authed_post(url: &str, body_content: &str, name: &str, sender: &Actor) -> AuthedApRequest {
    let body = Bytes::copy_from_slice(body_content.as_bytes());
    let request = hyper::Request::builder()
        .method("POST")
        .uri(url)
        .header("Accept", "activity/json")
        .body(body)
        .unwrap();

    let db = tests::get_named_memory_db(name);
    let domain = "example.com".to_string();

    AuthedApRequest { request, db, domain, actor: sender.clone() }
}

pub fn create_authed_inbox_post(body_content: String, db_name: &str, sender: &Actor) -> AuthedApRequest {
    let req = create_authed_post("/inbox", &body_content, db_name, sender);

    let activity: GenericActivity = serde_json::from_slice(body_content.as_bytes()).unwrap();
    let mut stmt = req.db.prepare("INSERT OR IGNORE INTO received_activities (activity_id, actor_id, object) VALUES (?1, ?2, ?3)").unwrap();

    stmt.execute([activity.id.as_str(), &activity.actor, &body_content]).unwrap();
    drop(stmt);

    req
}