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