Sun, 27 Jan 2019 17:41:59 +0400
Signed-off-by: Valentin Popov <info@valentineus.link>
This commit is contained in:
		
							
								
								
									
										22
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								src/main.rs
									
									
									
									
									
								
							@@ -15,17 +15,17 @@ mod parser;
 | 
				
			|||||||
use parser::*;
 | 
					use parser::*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn main() {
 | 
					fn main() {
 | 
				
			||||||
	let yaml = load_yaml!("cli/en.yml");
 | 
					    let yaml = load_yaml!("cli/en.yml");
 | 
				
			||||||
	let matches = App::from_yaml(yaml).get_matches();
 | 
					    let matches = App::from_yaml(yaml).get_matches();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	let path = matches.value_of("FILE").unwrap();
 | 
					    let path = matches.value_of("FILE").unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	match Path::new(path).exists() {
 | 
					    match Path::new(path).exists() {
 | 
				
			||||||
		true => {
 | 
					        true => {
 | 
				
			||||||
			let file: File = File::open(path).unwrap();
 | 
					            let file: File = File::open(path).unwrap();
 | 
				
			||||||
			let data: ParserResult = parser(BufReader::new(file));
 | 
					            let data: ParserResult = parser(BufReader::new(file));
 | 
				
			||||||
			println!("{}", serde_json::to_string_pretty(&data).unwrap());
 | 
					            println!("{}", serde_json::to_string_pretty(&data).unwrap());
 | 
				
			||||||
		}
 | 
					        }
 | 
				
			||||||
		_ => panic!("File {:#?} does not exist or is not available.", path),
 | 
					        _ => panic!("File {:#?} does not exist or is not available.", path),
 | 
				
			||||||
	};
 | 
					    };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,52 +6,52 @@ use xml::reader::{EventReader, XmlEvent};
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#[derive(Serialize)]
 | 
					#[derive(Serialize)]
 | 
				
			||||||
pub struct ParserResult {
 | 
					pub struct ParserResult {
 | 
				
			||||||
	pub external_id: String,
 | 
					    pub external_id: String,
 | 
				
			||||||
	pub meeting_id: String,
 | 
					    pub meeting_id: String,
 | 
				
			||||||
	pub meeting_name: String,
 | 
					    pub meeting_name: String,
 | 
				
			||||||
	pub context: Value,
 | 
					    pub context: Value,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub fn parser(content: BufReader<File>) -> ParserResult {
 | 
					pub fn parser(content: BufReader<File>) -> ParserResult {
 | 
				
			||||||
	let mut data = ParserResult {
 | 
					    let mut data = ParserResult {
 | 
				
			||||||
		context: serde_json::from_str("{}").unwrap(),
 | 
					        context: serde_json::from_str("{}").unwrap(),
 | 
				
			||||||
		external_id: "".to_string(),
 | 
					        external_id: "".to_string(),
 | 
				
			||||||
		meeting_id: "".to_string(),
 | 
					        meeting_id: "".to_string(),
 | 
				
			||||||
		meeting_name: "".to_string(),
 | 
					        meeting_name: "".to_string(),
 | 
				
			||||||
	};
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for element in EventReader::new(content) {
 | 
					    for element in EventReader::new(content) {
 | 
				
			||||||
		match element {
 | 
					        match element {
 | 
				
			||||||
			Ok(XmlEvent::StartElement {
 | 
					            Ok(XmlEvent::StartElement {
 | 
				
			||||||
				name, attributes, ..
 | 
					                name, attributes, ..
 | 
				
			||||||
			}) => {
 | 
					            }) => {
 | 
				
			||||||
				let el_name = name.local_name.to_string();
 | 
					                let el_name = name.local_name.to_string();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				for attribute in attributes {
 | 
					                for attribute in attributes {
 | 
				
			||||||
					let attr_name: String = attribute.name.local_name.to_string();
 | 
					                    let attr_name: String = attribute.name.local_name.to_string();
 | 
				
			||||||
					let attr_value: String = attribute.value.to_string();
 | 
					                    let attr_value: String = attribute.value.to_string();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					if el_name == "meeting" && attr_name == "id" {
 | 
					                    if el_name == "meeting" && attr_name == "id" {
 | 
				
			||||||
						data.meeting_id = attr_value.clone();
 | 
					                        data.meeting_id = attr_value.clone();
 | 
				
			||||||
					}
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					if el_name == "meeting" && attr_name == "externalId" {
 | 
					                    if el_name == "meeting" && attr_name == "externalId" {
 | 
				
			||||||
						data.external_id = attr_value.clone();
 | 
					                        data.external_id = attr_value.clone();
 | 
				
			||||||
					}
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					if el_name == "meeting" && attr_name == "name" {
 | 
					                    if el_name == "meeting" && attr_name == "name" {
 | 
				
			||||||
						data.meeting_name = attr_value.clone();
 | 
					                        data.meeting_name = attr_value.clone();
 | 
				
			||||||
					}
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					if el_name == "metadata" && attr_name == "bn-recording-status" {
 | 
					                    if el_name == "metadata" && attr_name == "bn-recording-status" {
 | 
				
			||||||
						data.context = serde_json::from_str(&attr_value).unwrap();
 | 
					                        data.context = serde_json::from_str(&attr_value).unwrap();
 | 
				
			||||||
					}
 | 
					                    }
 | 
				
			||||||
				}
 | 
					                }
 | 
				
			||||||
			}
 | 
					            }
 | 
				
			||||||
			Err(error) => panic!(error),
 | 
					            Err(error) => panic!(error),
 | 
				
			||||||
			_ => {}
 | 
					            _ => {}
 | 
				
			||||||
		}
 | 
					        }
 | 
				
			||||||
	}
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return data;
 | 
					    return data;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user