camel_language_js/
engine.rs1use std::collections::HashMap;
4
5use serde_json::Value;
6
7use crate::error::JsLanguageError;
8
9#[derive(Debug, Clone, Default)]
11pub struct JsExchange {
12 pub headers: HashMap<String, Value>,
13 pub body: Value,
14 pub properties: HashMap<String, Value>,
15}
16
17impl JsExchange {
18 pub fn from_headers_body_properties(
19 headers: HashMap<String, Value>,
20 body: Value,
21 properties: HashMap<String, Value>,
22 ) -> Self {
23 Self {
24 headers,
25 body,
26 properties,
27 }
28 }
29}
30
31#[derive(Debug, Clone)]
33pub struct JsEvalResult {
34 pub return_value: Value,
36 pub headers: HashMap<String, Value>,
38 pub body: Value,
40 pub properties: HashMap<String, Value>,
42}
43
44pub trait JsEngine: Send + Sync + 'static {
47 fn eval(&self, source: &str, exchange: JsExchange) -> Result<JsEvalResult, JsLanguageError>;
51
52 fn validate(&self, source: &str) -> Result<(), JsLanguageError>;
54}