camel_processor/data_format/
mod.rs1mod 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}