1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
#![no_std] //! # Introduction //! //! Library for parsing/editing/constructing SIP requests and responses. //! //! This is the very first version where only simple parsing is support. //! //! ## Example //! ```rust //! //! let invite_msg_buf = "INVITE sip:bob@biloxi.com SIP/2.0\r\n\ //! Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKkjshdyff\r\n\ //! To: Bob <sip:bob@biloxi.com>\r\n\ //! From: Alice <sip:alice@atlanta.com>;tag=88sja8x\r\n\ //! Max-Forwards: 70\r\n\ //! Call-ID: 987asjd97y7atg\r\n\ //! CSeq: 986759 INVITE\r\n\r\nbody_stuff" //! .as_bytes(); //! //! // First parameter not realized yet. //! // It should consist be residue if Content-Length is less then actual body length. //! let (_, request) = sipmsg::Request::parse(invite_msg_buf).unwrap(); //! assert_eq!(request.rl.method, sipmsg::request::Method::INVITE); //! //! // Via Header //! assert_eq!(request.headers[0].name, "Via"); //! assert_eq!(request.headers[0].value, "SIP/2.0/UDP pc33.atlanta.com"); //! //! assert_eq!( //! request.headers[0].params().unwrap().get(&"branch"), //! Some(&"z9hG4bKkjshdyff") //! ); //! //! assert_eq!( //! request.headers[0].params().unwrap().get(&"notExistParam"), //! None //! ); //! //! // Body //! assert_eq!(request.body.unwrap(), "body_stuff".as_bytes()); //! ``` //! extern crate alloc; extern crate nom; pub mod header; pub use header::parse_headers; pub use header::Header; mod parameters; pub mod message; pub use message::get_message_type; pub use message::MessageType; pub use message::SipVersion; pub mod request; pub use request::Request; pub use request::RequestLine; pub mod response; pub use response::Response; pub use response::StatusCode; pub use response::StatusLine;