Fix decode bug
This commit is contained in:
1 parent
206a0c7c82
commit
4c2cd7130b
1 file changed
+10
-5
+10
-5
@@ -7,7 +7,6 @@ use minicbor::data::Type;
|
||||
|
||||
enum Command {
|
||||
Unknown,
|
||||
Define(String, Box<dyn Display>),
|
||||
Set(String, Box<dyn Display>),
|
||||
Push(String, Box<dyn Display>),
|
||||
}
|
||||
@@ -41,6 +40,15 @@ fn parse_command(data: &[u8]) -> Result<Command, Error> {
|
||||
decoder.array()?;
|
||||
let id = decoder.str()?.to_string();
|
||||
let value = decode_value(&mut decoder)?;
|
||||
return Ok(Command::Set(id, value))
|
||||
}
|
||||
if data.starts_with(b"PUSH:") {
|
||||
let payload = &data[b"PUSH:".len()..];
|
||||
let mut decoder = Decoder::new(&payload);
|
||||
decoder.array()?;
|
||||
let id = decoder.str()?.to_string();
|
||||
let value = decode_value(&mut decoder)?;
|
||||
return Ok(Command::Push(id, value))
|
||||
}
|
||||
Ok(Command::Unknown)
|
||||
}
|
||||
@@ -77,10 +85,7 @@ fn decode_value(decoder: &mut Decoder) -> Result<Box<dyn Display>, Error> {
|
||||
}
|
||||
Box::new(Line::from(array))
|
||||
}
|
||||
// Type::Tag => {
|
||||
// let tag = decoder.tag()?;
|
||||
// }
|
||||
_ => Box::new(false)
|
||||
_ => { decoder.skip()?; Box::new(false)}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user