Move compute_box from Actor to Instance
This commit is contained in:
parent
606a3d12c7
commit
9a8472bdcc
@ -10,24 +10,19 @@ pub trait Actor: Sized {
|
|||||||
|
|
||||||
fn get_instance(&self, conn: &PgConnection) -> Instance;
|
fn get_instance(&self, conn: &PgConnection) -> Instance;
|
||||||
|
|
||||||
fn compute_outbox(&self, conn: &PgConnection) -> String {
|
// fn compute_outbox(&self, conn: &PgConnection) -> String {
|
||||||
self.compute_box(conn, "outbox")
|
// self.compute_box(conn, "outbox")
|
||||||
}
|
// }
|
||||||
|
|
||||||
fn compute_inbox(&self, conn: &PgConnection) -> String {
|
// fn compute_inbox(&self, conn: &PgConnection) -> String {
|
||||||
self.compute_box(conn, "inbox")
|
// self.compute_box(conn, "inbox")
|
||||||
}
|
// }
|
||||||
|
|
||||||
fn compute_box(&self, conn: &PgConnection, box_name: &str) -> String {
|
// fn compute_box(&self, conn: &PgConnection, box_name: &str) -> String {
|
||||||
format!("{id}/{name}", id = self.compute_id(conn), name = box_name)
|
// format!("{id}/{name}", id = self.compute_id(conn), name = box_name)
|
||||||
}
|
// }
|
||||||
|
|
||||||
fn compute_id(&self, conn: &PgConnection) -> String {
|
// fn compute_id(&self, conn: &PgConnection) -> String {
|
||||||
ap_url(format!(
|
// String::new()
|
||||||
"{instance}/{prefix}/{user}",
|
// }
|
||||||
instance = self.get_instance(conn).public_domain,
|
|
||||||
prefix = Self::get_box_prefix(),
|
|
||||||
user = self.get_actor_id()
|
|
||||||
))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -55,6 +55,8 @@ pub struct NewBlog {
|
|||||||
pub public_key: String
|
pub public_key: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const BLOG_PREFIX: &'static str = "~";
|
||||||
|
|
||||||
impl Blog {
|
impl Blog {
|
||||||
insert!(blogs, NewBlog);
|
insert!(blogs, NewBlog);
|
||||||
get!(blogs);
|
get!(blogs);
|
||||||
@ -142,21 +144,22 @@ impl Blog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_boxes(&self, conn: &PgConnection) {
|
pub fn update_boxes(&self, conn: &PgConnection) {
|
||||||
|
let instance = self.get_instance(conn);
|
||||||
if self.outbox_url.len() == 0 {
|
if self.outbox_url.len() == 0 {
|
||||||
diesel::update(self)
|
diesel::update(self)
|
||||||
.set(blogs::outbox_url.eq(self.compute_outbox(conn)))
|
.set(blogs::outbox_url.eq(instance.compute_box(BLOG_PREFIX, self.actor_id.clone(), "outbox")))
|
||||||
.get_result::<Blog>(conn).expect("Couldn't update outbox URL");
|
.get_result::<Blog>(conn).expect("Couldn't update outbox URL");
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.inbox_url.len() == 0 {
|
if self.inbox_url.len() == 0 {
|
||||||
diesel::update(self)
|
diesel::update(self)
|
||||||
.set(blogs::inbox_url.eq(self.compute_inbox(conn)))
|
.set(blogs::inbox_url.eq(instance.compute_box(BLOG_PREFIX, self.actor_id.clone(), "inbox")))
|
||||||
.get_result::<Blog>(conn).expect("Couldn't update inbox URL");
|
.get_result::<Blog>(conn).expect("Couldn't update inbox URL");
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.ap_url.len() == 0 {
|
if self.ap_url.len() == 0 {
|
||||||
diesel::update(self)
|
diesel::update(self)
|
||||||
.set(blogs::ap_url.eq(self.compute_id(conn)))
|
.set(blogs::ap_url.eq(instance.compute_box(BLOG_PREFIX, self.actor_id.clone(), "")))
|
||||||
.get_result::<Blog>(conn).expect("Couldn't update AP URL");
|
.get_result::<Blog>(conn).expect("Couldn't update AP URL");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -189,7 +192,7 @@ impl Blog {
|
|||||||
Link {
|
Link {
|
||||||
rel: String::from("http://schemas.google.com/g/2010#updates-from"),
|
rel: String::from("http://schemas.google.com/g/2010#updates-from"),
|
||||||
mime_type: Some(String::from("application/atom+xml")),
|
mime_type: Some(String::from("application/atom+xml")),
|
||||||
href: self.compute_box(conn, "feed.atom")
|
href: self.get_instance(conn).compute_box(BLOG_PREFIX, self.actor_id.clone(), "feed.atom")
|
||||||
},
|
},
|
||||||
Link {
|
Link {
|
||||||
rel: String::from("self"),
|
rel: String::from("self"),
|
||||||
|
@ -2,7 +2,7 @@ use chrono::NaiveDateTime;
|
|||||||
use diesel::{self, QueryDsl, RunQueryDsl, ExpressionMethods, PgConnection};
|
use diesel::{self, QueryDsl, RunQueryDsl, ExpressionMethods, PgConnection};
|
||||||
use std::iter::Iterator;
|
use std::iter::Iterator;
|
||||||
|
|
||||||
use activity_pub::inbox::Inbox;
|
use activity_pub::{ap_url, inbox::Inbox};
|
||||||
use models::users::User;
|
use models::users::User;
|
||||||
use schema::{instances, users};
|
use schema::{instances, users};
|
||||||
|
|
||||||
@ -58,6 +58,16 @@ impl Instance {
|
|||||||
.expect("Couldn't load admins")
|
.expect("Couldn't load admins")
|
||||||
.len() > 0
|
.len() > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn compute_box(&self, prefix: &'static str, name: String, box_name: &'static str) -> String {
|
||||||
|
ap_url(format!(
|
||||||
|
"{instance}/{prefix}/{name}/{box_name}",
|
||||||
|
instance = self.public_domain,
|
||||||
|
prefix = prefix,
|
||||||
|
name = name,
|
||||||
|
box_name = box_name
|
||||||
|
))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Inbox for Instance {}
|
impl Inbox for Instance {}
|
||||||
|
@ -83,6 +83,8 @@ pub struct NewUser {
|
|||||||
pub shared_inbox_url: Option<String>
|
pub shared_inbox_url: Option<String>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const USER_PREFIX: &'static str = "@";
|
||||||
|
|
||||||
impl User {
|
impl User {
|
||||||
insert!(users, NewUser);
|
insert!(users, NewUser);
|
||||||
get!(users);
|
get!(users);
|
||||||
@ -196,21 +198,22 @@ impl User {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_boxes(&self, conn: &PgConnection) {
|
pub fn update_boxes(&self, conn: &PgConnection) {
|
||||||
|
let instance = self.get_instance(conn);
|
||||||
if self.outbox_url.len() == 0 {
|
if self.outbox_url.len() == 0 {
|
||||||
diesel::update(self)
|
diesel::update(self)
|
||||||
.set(users::outbox_url.eq(self.compute_outbox(conn)))
|
.set(users::outbox_url.eq(instance.compute_box(USER_PREFIX, self.username.clone(), "outbox")))
|
||||||
.get_result::<User>(conn).expect("Couldn't update outbox URL");
|
.get_result::<User>(conn).expect("Couldn't update outbox URL");
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.inbox_url.len() == 0 {
|
if self.inbox_url.len() == 0 {
|
||||||
diesel::update(self)
|
diesel::update(self)
|
||||||
.set(users::inbox_url.eq(self.compute_inbox(conn)))
|
.set(users::inbox_url.eq(instance.compute_box(USER_PREFIX, self.username.clone(), "inbox")))
|
||||||
.get_result::<User>(conn).expect("Couldn't update inbox URL");
|
.get_result::<User>(conn).expect("Couldn't update inbox URL");
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.ap_url.len() == 0 {
|
if self.ap_url.len() == 0 {
|
||||||
diesel::update(self)
|
diesel::update(self)
|
||||||
.set(users::ap_url.eq(self.compute_id(conn)))
|
.set(users::ap_url.eq(instance.compute_box(USER_PREFIX, self.username.clone(), "")))
|
||||||
.get_result::<User>(conn).expect("Couldn't update AP URL");
|
.get_result::<User>(conn).expect("Couldn't update AP URL");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -340,7 +343,7 @@ impl User {
|
|||||||
Link {
|
Link {
|
||||||
rel: String::from("http://schemas.google.com/g/2010#updates-from"),
|
rel: String::from("http://schemas.google.com/g/2010#updates-from"),
|
||||||
mime_type: Some(String::from("application/atom+xml")),
|
mime_type: Some(String::from("application/atom+xml")),
|
||||||
href: self.compute_box(conn, "feed.atom")
|
href: self.get_instance(conn).compute_box(USER_PREFIX, self.username.clone(), "feed.atom")
|
||||||
},
|
},
|
||||||
Link {
|
Link {
|
||||||
rel: String::from("self"),
|
rel: String::from("self"),
|
||||||
|
Loading…
Reference in New Issue
Block a user