Shared inbox endpoint
This commit is contained in:
parent
91b19bccb5
commit
dfab0290e4
@ -12,7 +12,7 @@ use models::likes::*;
|
|||||||
use models::posts::*;
|
use models::posts::*;
|
||||||
use models::users::User;
|
use models::users::User;
|
||||||
|
|
||||||
pub trait Inbox: Actor + Sized {
|
pub trait Inbox {
|
||||||
fn received(&self, conn: &PgConnection, act: serde_json::Value);
|
fn received(&self, conn: &PgConnection, act: serde_json::Value);
|
||||||
|
|
||||||
fn save(&self, conn: &PgConnection, act: serde_json::Value) {
|
fn save(&self, conn: &PgConnection, act: serde_json::Value) {
|
||||||
|
@ -67,6 +67,7 @@ fn main() {
|
|||||||
routes::instance::index,
|
routes::instance::index,
|
||||||
routes::instance::configure,
|
routes::instance::configure,
|
||||||
routes::instance::post_config,
|
routes::instance::post_config,
|
||||||
|
routes::instance::shared_inbox,
|
||||||
|
|
||||||
routes::notifications::notifications,
|
routes::notifications::notifications,
|
||||||
|
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
use chrono::NaiveDateTime;
|
use chrono::NaiveDateTime;
|
||||||
use diesel::{self, QueryDsl, RunQueryDsl, ExpressionMethods, PgConnection};
|
use diesel::{self, QueryDsl, RunQueryDsl, ExpressionMethods, PgConnection};
|
||||||
|
use serde_json;
|
||||||
use std::iter::Iterator;
|
use std::iter::Iterator;
|
||||||
|
|
||||||
|
use activity_pub::inbox::Inbox;
|
||||||
use models::users::User;
|
use models::users::User;
|
||||||
use schema::{instances, users};
|
use schema::{instances, users};
|
||||||
|
|
||||||
@ -81,3 +83,11 @@ impl Instance {
|
|||||||
.len() > 0
|
.len() > 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Inbox for Instance {
|
||||||
|
fn received(&self, conn: &PgConnection, act: serde_json::Value) {
|
||||||
|
self.save(conn, act.clone());
|
||||||
|
|
||||||
|
// TODO: add to stream, or whatever needs to be done
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -4,6 +4,7 @@ use rocket_contrib::Template;
|
|||||||
use serde_json;
|
use serde_json;
|
||||||
|
|
||||||
use BASE_URL;
|
use BASE_URL;
|
||||||
|
use activity_pub::inbox::Inbox;
|
||||||
use db_conn::DbConn;
|
use db_conn::DbConn;
|
||||||
use models::posts::Post;
|
use models::posts::Post;
|
||||||
use models::users::User;
|
use models::users::User;
|
||||||
@ -65,3 +66,11 @@ fn post_config(conn: DbConn, data: Form<NewInstanceForm>) -> Redirect {
|
|||||||
Redirect::to("/users/new")
|
Redirect::to("/users/new")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[post("/inbox", data = "<data>")]
|
||||||
|
fn shared_inbox(conn: DbConn, data: String) -> String {
|
||||||
|
let act: serde_json::Value = serde_json::from_str(&data[..]).unwrap();
|
||||||
|
let instance = Instance::get_local(&*conn).unwrap();
|
||||||
|
instance.received(&*conn, act);
|
||||||
|
String::from("")
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user