Skip to main content

parse/
parse.rs

1use std::io::prelude::*;
2use std::{env, fs, process};
3
4fn main() -> process::ExitCode {
5    let mut args = env::args();
6    let _ = args.next().unwrap();
7    let Some(file) = args.next() else {
8        eprintln!("Usage: parse [file.sdp]");
9        return process::ExitCode::FAILURE;
10    };
11
12    let mut file = match fs::File::open(file) {
13        Ok(file) => file,
14        Err(err) => {
15            eprintln!("Failed to open file: {err}");
16            return process::ExitCode::FAILURE;
17        }
18    };
19
20    let mut content = Vec::new();
21    match file.read_to_end(&mut content) {
22        Ok(_) => {}
23        Err(err) => {
24            eprintln!("Failed to read file: {err}");
25            return process::ExitCode::FAILURE;
26        }
27    };
28
29    let sdp = match sdp_types::Session::parse(&content) {
30        Ok(sdp) => sdp,
31        Err(err) => {
32            eprintln!("Failed to parse SDP: {err}");
33            return process::ExitCode::FAILURE;
34        }
35    };
36
37    println!("{sdp:#?}");
38
39    process::ExitCode::SUCCESS
40}