onionwire/src/dispatch.rs

40 lines
811 B
Rust
Raw Normal View History

//! Classify decrypted application plaintext before it hits the message log.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Kind {
Chat,
Loc,
Profile,
Invoice,
Receipt,
Ping,
Drop,
}
pub fn classify(pt: &[u8]) -> Kind {
if pt.starts_with(b"loc ") {
return Kind::Loc;
}
if pt.starts_with(b"prf ") {
return Kind::Profile;
}
if pt.starts_with(b"inv ") {
return Kind::Invoice;
}
if pt.starts_with(b"rcp ") {
return Kind::Receipt;
}
if pt.starts_with(b"png ") {
return Kind::Ping;
}
if pt.len() >= 4
&& pt[0].is_ascii_lowercase()
&& pt[1].is_ascii_lowercase()
&& pt[2].is_ascii_lowercase()
&& pt[3] == b' '
{
return Kind::Drop;
}
Kind::Chat
}