mkit_server/indexed/
classify.rs1use crate::ServerError;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum UploadType {
8 Pack,
10 Packlist,
12}
13
14pub fn classify(prefix: &[u8]) -> Result<UploadType, ServerError> {
16 match prefix.get(..4) {
17 Some(b"MKIT") => Ok(UploadType::Pack),
18 Some(b"MKPL") => Ok(UploadType::Packlist),
19 _ => Err(ServerError::invalid_argument("unknown upload type")),
20 }
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26 #[test]
27 fn exact_magic_and_short_input() {
28 assert_eq!(classify(b"MKITx").unwrap(), UploadType::Pack);
29 assert_eq!(classify(b"MKPLx").unwrap(), UploadType::Packlist);
30 for bytes in [b"MKI".as_slice(), b"", b"NOPE", b"mkit"] {
31 assert_eq!(
32 classify(bytes).unwrap_err().public_message(),
33 "unknown upload type"
34 );
35 }
36 }
37}