diff options
Diffstat (limited to 'server/src/apub/mod.rs')
-rw-r--r-- | server/src/apub/mod.rs | 64 |
1 files changed, 58 insertions, 6 deletions
diff --git a/server/src/apub/mod.rs b/server/src/apub/mod.rs index 84645897..08fd9756 100644 --- a/server/src/apub/mod.rs +++ b/server/src/apub/mod.rs @@ -6,14 +6,66 @@ pub mod post; pub mod signatures; pub mod user; pub mod user_inbox; -use crate::apub::signatures::PublicKeyExtension; -use crate::Settings; -use activitystreams::actor::{properties::ApActorProperties, Group, Person}; -use activitystreams::ext::Ext; + +use activitystreams::{ + context, public, BaseBox, + actor::{ + Actor, + Person, + Group, + properties::ApActorProperties, + }, + activity::{Accept, Create, Follow, Update}, + object::{ + Page, + properties::ObjectProperties, + }, + ext::{ + Ext, + Extensible, + Extension, + }, + collection::{ + UnorderedCollection, + OrderedCollection, + }, +}; use actix_web::body::Body; -use actix_web::HttpResponse; -use serde::ser::Serialize; +use actix_web::{web, Result, HttpRequest, HttpResponse}; +use actix_web::web::Path; use url::Url; +use failure::Error; +use failure::_core::fmt::Debug; +use log::debug; +use isahc::prelude::*; +use diesel::result::Error::NotFound; +use diesel::PgConnection; +use http::request::Builder; +use http_signature_normalization::Config; +use openssl::hash::MessageDigest; +use openssl::sign::{Signer, Verifier}; +use openssl::{pkey::PKey, rsa::Rsa}; +use serde::{Deserialize, Serialize}; +use std::collections::BTreeMap; +use std::time::Duration; + +use crate::routes::{DbPoolParam, ChatServerParam}; +use crate::routes::nodeinfo::{NodeInfo, NodeInfoWellKnown}; +use crate::{convert_datetime, naive_now, Settings}; +use crate::db::community::{Community, CommunityForm, CommunityFollower, CommunityFollowerForm}; +use crate::db::community_view::{CommunityFollowerView, CommunityView}; +use crate::db::post::{Post, PostForm}; +use crate::db::post_view::PostView; +use crate::db::user::{UserForm, User_}; +use crate::db::user_view::UserView; +// TODO check on unpooled connection +use crate::db::{Crud, Followable, SearchType, establish_unpooled_connection}; +use crate::api::site::SearchResponse; + +use signatures::{PublicKey, PublicKeyExtension, sign}; +use activities::accept_follow; +use signatures::verify; +use fetcher::{fetch_remote_object, get_or_fetch_and_upsert_remote_user, get_or_fetch_and_upsert_remote_community}; type GroupExt = Ext<Ext<Group, ApActorProperties>, PublicKeyExtension>; type PersonExt = Ext<Ext<Person, ApActorProperties>, PublicKeyExtension>; |