// Development driver: runs the analysis pipeline on a sample message.
///|
fn main {
let sample : Bytes = b"INVITE sip:user@example.com SIP/2.0\r\nTo: sip:j.user@example.com\r\nFrom: sip:caller@example.net;tag=134161461246\r\nMax-Forwards: 7\r\nCall-ID: demo.1\r\nCSeq: 8 INVITE\r\nVia: SIP/2.0/UDP 192.0.2.15;branch=z9hG4bKkdjuw\r\nContact: \r\nContent-Length: 0\r\n\r\n"
let a = @sipkit.analyze(sample)
println("verdict: \{a.verdict()}")
match a.syntax() {
Some(pair) => {
let (kind, at) = pair
println("syntax: \{kind} at byte \{at}")
}
None => println("syntax: ok")
}
println("diagnostics: \{a.diagnostics().length()}")
for d in a.diagnostics() {
println(" \{d}")
}
let c = @sipkit.Cursor::from_bytes(
b"sip:alice:secret@example.com:5060;transport=tcp;lr",
)
let r : Result[@sipkit.SipUri, @sipkit.SipError] = Ok(
@sipkit.parse_sip_uri(c),
) catch {
e => Err(e)
}
match r {
Ok(u) => println("uri: host=\{u.host()} port=\{u.port().unwrap()}")
Err(e) => println("uri err: \{e}")
}
}