cloudillo_action/native_hooks/
mod.rs1pub mod aprv;
20pub mod cmnt;
21pub mod conn;
22pub mod conv;
23pub mod fllw;
24pub mod fshr;
25pub mod idp;
26pub mod invt;
27pub mod prinvt;
28pub mod react;
29pub mod subs;
30
31use crate::hooks::{ActionTypeHooks, HookRegistry};
32use crate::prelude::*;
33use cloudillo_core::app::App;
34use std::sync::Arc;
35
36pub async fn register_native_hooks(app: &App) -> ClResult<()> {
38 let hook_registry = app.ext::<Arc<tokio::sync::RwLock<HookRegistry>>>()?;
39 let mut registry = hook_registry.write().await;
40
41 {
43 let conn_hooks = ActionTypeHooks {
44 on_create: Some(Arc::new(|app, ctx| Box::pin(conn::on_create(app, ctx)))),
45 on_receive: Some(Arc::new(|app, ctx| Box::pin(conn::on_receive(app, ctx)))),
46 on_accept: Some(Arc::new(|app, ctx| Box::pin(conn::on_accept(app, ctx)))),
47 on_reject: Some(Arc::new(|app, ctx| Box::pin(conn::on_reject(app, ctx)))),
48 };
49
50 registry.register_type("CONN", conn_hooks);
51 tracing::info!("Registered native hooks for CONN action type");
52 }
53
54 {
56 let fllw_hooks = ActionTypeHooks {
57 on_create: Some(Arc::new(|app, ctx| Box::pin(fllw::on_create(app, ctx)))),
58 on_receive: Some(Arc::new(|app, ctx| Box::pin(fllw::on_receive(app, ctx)))),
59 on_accept: None,
60 on_reject: None,
61 };
62
63 registry.register_type("FLLW", fllw_hooks);
64 tracing::info!("Registered native hooks for FLLW action type");
65 }
66
67 {
69 let idp_reg_hooks = ActionTypeHooks {
70 on_create: None,
71 on_receive: Some(Arc::new(|app, ctx| Box::pin(idp::idp_reg_on_receive(app, ctx)))),
72 on_accept: None,
73 on_reject: None,
74 };
75
76 registry.register_type("IDP:REG", idp_reg_hooks);
77 tracing::info!("Registered native hooks for IDP:REG action type");
78 }
79
80 {
82 let fshr_hooks = ActionTypeHooks {
83 on_create: None,
84 on_receive: Some(Arc::new(|app, ctx| Box::pin(fshr::on_receive(app, ctx)))),
85 on_accept: Some(Arc::new(|app, ctx| Box::pin(fshr::on_accept(app, ctx)))),
86 on_reject: None,
87 };
88
89 registry.register_type("FSHR", fshr_hooks);
90 tracing::info!("Registered native hooks for FSHR action type");
91 }
92
93 {
95 let react_hooks = ActionTypeHooks {
96 on_create: Some(Arc::new(|app, ctx| Box::pin(react::on_create(app, ctx)))),
97 on_receive: Some(Arc::new(|app, ctx| Box::pin(react::on_receive(app, ctx)))),
98 on_accept: None,
99 on_reject: None,
100 };
101
102 registry.register_type("REACT", react_hooks);
103 tracing::info!("Registered native hooks for REACT action type");
104 }
105
106 {
108 let cmnt_hooks = ActionTypeHooks {
109 on_create: Some(Arc::new(|app, ctx| Box::pin(cmnt::on_create(app, ctx)))),
110 on_receive: Some(Arc::new(|app, ctx| Box::pin(cmnt::on_receive(app, ctx)))),
111 on_accept: None,
112 on_reject: None,
113 };
114
115 registry.register_type("CMNT", cmnt_hooks);
116 tracing::info!("Registered native hooks for CMNT action type");
117 }
118
119 {
121 let aprv_hooks = ActionTypeHooks {
122 on_create: None,
123 on_receive: Some(Arc::new(|app, ctx| Box::pin(aprv::on_receive(app, ctx)))),
124 on_accept: None,
125 on_reject: None,
126 };
127
128 registry.register_type("APRV", aprv_hooks);
129 tracing::info!("Registered native hooks for APRV action type");
130 }
131
132 {
134 let subs_hooks = ActionTypeHooks {
135 on_create: Some(Arc::new(|app, ctx| Box::pin(subs::on_create(app, ctx)))),
136 on_receive: Some(Arc::new(|app, ctx| Box::pin(subs::on_receive(app, ctx)))),
137 on_accept: None,
138 on_reject: None,
139 };
140
141 registry.register_type("SUBS", subs_hooks);
142 tracing::info!("Registered native hooks for SUBS action type");
143 }
144
145 {
147 let conv_hooks = ActionTypeHooks {
148 on_create: Some(Arc::new(|app, ctx| Box::pin(conv::on_create(app, ctx)))),
149 on_receive: Some(Arc::new(|app, ctx| Box::pin(conv::on_receive(app, ctx)))),
150 on_accept: None,
151 on_reject: None,
152 };
153
154 registry.register_type("CONV", conv_hooks);
155 tracing::info!("Registered native hooks for CONV action type");
156 }
157
158 {
160 let invt_hooks = ActionTypeHooks {
161 on_create: Some(Arc::new(|app, ctx| Box::pin(invt::on_create(app, ctx)))),
162 on_receive: Some(Arc::new(|app, ctx| Box::pin(invt::on_receive(app, ctx)))),
163 on_accept: Some(Arc::new(|app, ctx| Box::pin(invt::on_accept(app, ctx)))),
164 on_reject: None,
165 };
166
167 registry.register_type("INVT", invt_hooks);
168 tracing::info!("Registered native hooks for INVT action type");
169 }
170
171 {
173 let prinvt_hooks = ActionTypeHooks {
174 on_create: None,
175 on_receive: Some(Arc::new(|app, ctx| Box::pin(prinvt::on_receive(app, ctx)))),
176 on_accept: None,
177 on_reject: None,
178 };
179
180 registry.register_type("PRINVT", prinvt_hooks);
181 tracing::info!("Registered native hooks for PRINVT action type");
182 }
183
184 Ok(())
185}
186
187#[cfg(test)]
188mod tests {
189 use super::*;
190
191 #[test]
192 fn test_hook_functions_exist() {
193 let _ = aprv::on_receive;
195 let _ = cmnt::on_create;
196 let _ = cmnt::on_receive;
197 let _ = conn::on_create;
198 let _ = conn::on_receive;
199 let _ = conn::on_accept;
200 let _ = conn::on_reject;
201 let _ = fllw::on_create;
202 let _ = fllw::on_receive;
203 let _ = idp::idp_reg_on_receive;
204 let _ = fshr::on_receive;
205 let _ = fshr::on_accept;
206 let _ = react::on_create;
207 let _ = react::on_receive;
208 let _ = subs::on_create;
209 let _ = subs::on_receive;
210 let _ = conv::on_create;
211 let _ = conv::on_receive;
212 let _ = invt::on_create;
213 let _ = invt::on_receive;
214 let _ = invt::on_accept;
215 let _ = prinvt::on_receive;
216 }
217}
218
219