From 452ca7214a641c13c6ffeff7167de1f96c23ea7f Mon Sep 17 00:00:00 2001 From: Devyn Cairns Date: Wed, 31 Jan 2024 01:24:21 -0800 Subject: [PATCH] support for binary input --- src/convert.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/convert.rs b/src/convert.rs index 8c1a650..2e3ba28 100644 --- a/src/convert.rs +++ b/src/convert.rs @@ -141,6 +141,16 @@ pub fn to_message_item(value: &Value, expected_type: Option<&DbusType>) (Value::String { val, .. }, Some(DbusType::Double)) => Ok(MessageItem::Double(try_convert!(f64::from_str(&val[..])))), + // Binary + (Value::Binary { val, .. }, Some(r#type @ DbusType::Array(content_type))) + if matches!(**content_type, DbusType::Byte) => + { + // FIXME: this is likely pretty inefficient for a bunch of bytes + let sig = Signature::from(r#type.stringify()); + let items = val.iter().cloned().map(MessageItem::Byte).collect::>(); + Ok(MessageItem::Array(MessageItemArray::new(items, sig).unwrap())) + }, + // List/array (Value::List { vals, .. }, Some(r#type @ DbusType::Array(content_type))) => { let sig = Signature::from(r#type.stringify()); -- 2.51.2