aboutsummaryrefslogtreecommitdiff
path: root/src/app/api/integrations.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-05-21 20:19:54 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-05-21 20:22:57 +0300
commit866aaf740e10fcfce169aaf81380ea0257fbe272 (patch)
treef815392b7c6b24a7c0de14e655bd635656383813 /src/app/api/integrations.rs
parentca579c402d5668560ca13059f82c03178be18b2a (diff)
refactor: separate server client boundaries
Diffstat (limited to 'src/app/api/integrations.rs')
-rw-r--r--src/app/api/integrations.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/app/api/integrations.rs b/src/app/api/integrations.rs
new file mode 100644
index 00000000..0cca8cba
--- /dev/null
+++ b/src/app/api/integrations.rs
@@ -0,0 +1,46 @@
+use crate::api::schema::{IntegrationInstallResult, IntegrationUninstallResult, ResponseResult};
+use crate::app::App;
+
+use super::responses::{encode_error, encode_success};
+
+impl App {
+ pub(super) fn handle_integration_install(
+ &mut self,
+ id: String,
+ params: crate::api::schema::IntegrationInstallParams,
+ ) -> String {
+ let target = params.target;
+ let messages = match crate::integration::install_target(target) {
+ Ok(messages) => messages,
+ Err(err) => return encode_error(id, "integration_install_failed", err.to_string()),
+ };
+
+ encode_success(
+ id,
+ ResponseResult::IntegrationInstall {
+ target,
+ details: IntegrationInstallResult { messages },
+ },
+ )
+ }
+
+ pub(super) fn handle_integration_uninstall(
+ &mut self,
+ id: String,
+ params: crate::api::schema::IntegrationUninstallParams,
+ ) -> String {
+ let target = params.target;
+ let messages = match crate::integration::uninstall_target(target) {
+ Ok(messages) => messages,
+ Err(err) => return encode_error(id, "integration_uninstall_failed", err.to_string()),
+ };
+
+ encode_success(
+ id,
+ ResponseResult::IntegrationUninstall {
+ target,
+ details: IntegrationUninstallResult { messages },
+ },
+ )
+ }
+}