diff --git a/src/admin/appservice/commands.rs b/src/admin/appservice/commands.rs index 7d6378f3..6d661308 100644 --- a/src/admin/appservice/commands.rs +++ b/src/admin/appservice/commands.rs @@ -11,19 +11,25 @@ pub(super) async fn register(&self) -> Result { )); } - let appservice_config = self.body[1..self.body.len().checked_sub(1).unwrap()].join("\n"); - let parsed_config = serde_yaml::from_str::(&appservice_config); + let appservice_config_body = self.body[1..self.body.len().checked_sub(1).unwrap()].join("\n"); + let parsed_config = serde_yaml::from_str::(&appservice_config_body); match parsed_config { - Ok(yaml) => match self.services.appservice.register_appservice(yaml).await { - Ok(id) => Ok(RoomMessageEventContent::text_plain(format!( - "Appservice registered with ID: {id}." + Ok(registration) => match self + .services + .appservice + .register_appservice(®istration, &appservice_config_body) + .await + { + Ok(()) => Ok(RoomMessageEventContent::text_plain(format!( + "Appservice registered with ID: {}", + registration.id ))), Err(e) => Ok(RoomMessageEventContent::text_plain(format!( "Failed to register appservice: {e}" ))), }, Err(e) => Ok(RoomMessageEventContent::text_plain(format!( - "Could not parse appservice config: {e}" + "Could not parse appservice config as YAML: {e}" ))), } } diff --git a/src/service/appservice/mod.rs b/src/service/appservice/mod.rs index 4a20b130..a55d6534 100644 --- a/src/service/appservice/mod.rs +++ b/src/service/appservice/mod.rs @@ -61,18 +61,18 @@ impl crate::Service for Service { impl Service { /// Registers an appservice and returns the ID to the caller - pub async fn register_appservice(&self, yaml: Registration) -> Result { + pub async fn register_appservice(&self, registration: &Registration, appservice_config_body: &str) -> Result { //TODO: Check for collisions between exclusive appservice namespaces self.registration_info .write() .await - .insert(yaml.id.clone(), yaml.clone().try_into()?); + .insert(registration.id.clone(), registration.clone().try_into()?); - let id = yaml.id.as_str(); - let yaml = serde_yaml::to_string(&yaml)?; - self.db.id_appserviceregistrations.insert(id, yaml); + self.db + .id_appserviceregistrations + .insert(®istration.id, appservice_config_body); - Ok(id.to_owned()) + Ok(()) } /// Remove an appservice registration