Skip to main content

camel_processor/data_format/
mod.rs

1mod csv;
2mod json;
3mod xml;
4mod zip;
5
6pub use csv::{CAMEL_CSV_HEADER_RECORD, CsvConfig, CsvDataFormat, QuoteMode, RecordSeparator};
7pub use json::JsonDataFormat;
8pub use xml::XmlDataFormat;
9pub use zip::ZipDataFormat;
10
11use camel_api::DataFormat;
12use std::sync::Arc;
13
14pub fn builtin_data_format(name: &str) -> Option<Arc<dyn DataFormat>> {
15    match name {
16        "csv" => Some(Arc::new(CsvDataFormat::default())),
17        "json" => Some(Arc::new(JsonDataFormat)),
18        "xml" => Some(Arc::new(XmlDataFormat)),
19        "zip" => Some(Arc::new(ZipDataFormat::default())),
20        _ => None,
21    }
22}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27
28    #[test]
29    fn test_builtin_json() {
30        let df = builtin_data_format("json").unwrap();
31        assert_eq!(df.name(), "json");
32    }
33
34    #[test]
35    fn test_builtin_xml() {
36        let df = builtin_data_format("xml").unwrap();
37        assert_eq!(df.name(), "xml");
38    }
39
40    #[test]
41    fn test_builtin_csv() {
42        let csv_df = builtin_data_format("csv").unwrap();
43        assert_eq!(csv_df.name(), "csv");
44    }
45
46    #[test]
47    fn test_builtin_unknown_returns_none() {
48        assert!(builtin_data_format("protobuf").is_none());
49        assert!(builtin_data_format("").is_none());
50    }
51}