@@ -19,9 +19,19 @@ pub struct ZoomTriggerConfig {
1919 pub events : Vec < String > ,
2020}
2121
22+ /// n8n node type when installed as a community package (`nodes/node_modules/...`).
23+ pub const ZOOM_TRIGGER_NODE_TYPE : & str = "n8n-nodes-unihook-zoom-trigger.zoomTrigger" ;
24+
25+ /// n8n node type when loaded via custom extensions (`.n8n/custom` / `N8N_CUSTOM_EXTENSIONS`).
26+ pub const ZOOM_TRIGGER_CUSTOM_NODE_TYPE : & str = "CUSTOM.zoomTrigger" ;
27+
28+ fn is_zoom_trigger_node ( node_type : & str ) -> bool {
29+ node_type == ZOOM_TRIGGER_NODE_TYPE || node_type == ZOOM_TRIGGER_CUSTOM_NODE_TYPE
30+ }
31+
2232/// Parse Zoom Trigger configuration from a workflow node
2333pub fn parse_zoom_trigger ( workflow : & Workflow , node : & WorkflowNode ) -> Option < ZoomTriggerConfig > {
24- if node. node_type != "n8n-nodes-unihook-zoom-trigger.zoomTrigger" {
34+ if ! is_zoom_trigger_node ( & node. node_type ) {
2535 return None ;
2636 }
2737
@@ -64,11 +74,12 @@ mod tests {
6474 }
6575
6676 fn create_zoom_trigger_node (
77+ node_type : & str ,
6778 webhook_id : Option < & str > ,
6879 params : serde_json:: Value ,
6980 ) -> WorkflowNode {
7081 WorkflowNode {
71- node_type : "n8n-nodes-unihook-zoom-trigger.zoomTrigger" . to_string ( ) ,
82+ node_type : node_type . to_string ( ) ,
7283 name : "Zoom Trigger" . to_string ( ) ,
7384 parameters : params,
7485 webhook_id : webhook_id. map ( |s| s. to_string ( ) ) ,
@@ -77,8 +88,11 @@ mod tests {
7788
7889 #[ test]
7990 fn test_parse_zoom_trigger_basic ( ) {
80- let node =
81- create_zoom_trigger_node ( Some ( "webhook-z1" ) , json ! ( { "event" : [ "meeting.started" ] } ) ) ;
91+ let node = create_zoom_trigger_node (
92+ ZOOM_TRIGGER_NODE_TYPE ,
93+ Some ( "webhook-z1" ) ,
94+ json ! ( { "event" : [ "meeting.started" ] } ) ,
95+ ) ;
8296 let workflow = create_workflow ( "wf1" , "Zoom Workflow" , vec ! [ node. clone( ) ] ) ;
8397
8498 let config = parse_zoom_trigger ( & workflow, & node) . unwrap ( ) ;
@@ -90,6 +104,7 @@ mod tests {
90104 #[ test]
91105 fn test_parse_zoom_trigger_multiple_events ( ) {
92106 let node = create_zoom_trigger_node (
107+ ZOOM_TRIGGER_NODE_TYPE ,
93108 Some ( "webhook-z2" ) ,
94109 json ! ( { "event" : [ "meeting.started" , "meeting.ended" ] } ) ,
95110 ) ;
@@ -102,14 +117,33 @@ mod tests {
102117
103118 #[ test]
104119 fn test_parse_zoom_trigger_wildcard ( ) {
105- let node = create_zoom_trigger_node ( Some ( "webhook-z3" ) , json ! ( { "event" : [ "*" ] } ) ) ;
120+ let node = create_zoom_trigger_node (
121+ ZOOM_TRIGGER_NODE_TYPE ,
122+ Some ( "webhook-z3" ) ,
123+ json ! ( { "event" : [ "*" ] } ) ,
124+ ) ;
106125 let workflow = create_workflow ( "wf3" , "Wildcard" , vec ! [ node. clone( ) ] ) ;
107126
108127 let config = parse_zoom_trigger ( & workflow, & node) . unwrap ( ) ;
109128
110129 assert_eq ! ( config. events, vec![ "*" ] ) ;
111130 }
112131
132+ #[ test]
133+ fn test_parse_zoom_trigger_custom_node_type ( ) {
134+ let node = create_zoom_trigger_node (
135+ ZOOM_TRIGGER_CUSTOM_NODE_TYPE ,
136+ Some ( "webhook-z4" ) ,
137+ json ! ( { "event" : [ "meeting.started" , "meeting.ended" ] } ) ,
138+ ) ;
139+ let workflow = create_workflow ( "wf4" , "Custom Loader" , vec ! [ node. clone( ) ] ) ;
140+
141+ let config = parse_zoom_trigger ( & workflow, & node) . unwrap ( ) ;
142+
143+ assert_eq ! ( config. webhook_id, "webhook-z4" ) ;
144+ assert_eq ! ( config. events, vec![ "meeting.started" , "meeting.ended" ] ) ;
145+ }
146+
113147 #[ test]
114148 fn test_parse_non_zoom_node_returns_none ( ) {
115149 let node = WorkflowNode {
@@ -125,7 +159,11 @@ mod tests {
125159
126160 #[ test]
127161 fn test_parse_node_without_webhook_id ( ) {
128- let node = create_zoom_trigger_node ( None , json ! ( { "event" : [ "meeting.started" ] } ) ) ;
162+ let node = create_zoom_trigger_node (
163+ ZOOM_TRIGGER_NODE_TYPE ,
164+ None ,
165+ json ! ( { "event" : [ "meeting.started" ] } ) ,
166+ ) ;
129167 let workflow = create_workflow ( "wf1" , "Workflow" , vec ! [ node. clone( ) ] ) ;
130168
131169 assert ! ( parse_zoom_trigger( & workflow, & node) . is_none( ) ) ;
0 commit comments