Skip to content

Commit 7478bd4

Browse files
committed
fix(brp): allow params and id to be undefined
1 parent a66cedd commit 7478bd4

1 file changed

Lines changed: 39 additions & 2 deletions

File tree

crates/bevy_remote/src/lib.rs

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,8 +1126,8 @@ impl<'de> Deserialize<'de> for BrpRequest {
11261126
return Err(de::Error::missing_field("jsonrpc"));
11271127
}
11281128
let method = method.ok_or_else(|| de::Error::missing_field("method"))?;
1129-
let id = id.ok_or_else(|| de::Error::missing_field("id"))?;
1130-
let params = params.ok_or_else(|| de::Error::missing_field("params"))?;
1129+
let id = id.flatten();
1130+
let params = params.flatten();
11311131
Ok(BrpRequest { method, id, params })
11321132
}
11331133
}
@@ -1449,3 +1449,40 @@ fn remove_closed_watching_requests(mut requests: ResMut<RemoteWatchingRequests>)
14491449
}
14501450
}
14511451
}
1452+
1453+
mod tests {
1454+
use crate::BrpRequest;
1455+
use serde_json::json;
1456+
1457+
#[test]
1458+
fn deserialize_brp_request_params_optional() {
1459+
let request_json: &str = r#"{
1460+
"jsonrpc": "2.0",
1461+
"method": "world.list_components",
1462+
"id": 1
1463+
}"#;
1464+
1465+
let request: BrpRequest = serde_json::from_str(request_json).unwrap();
1466+
1467+
assert_eq!(request.method, "world.list_components");
1468+
assert_eq!(request.id, Some(json!(1)));
1469+
assert_eq!(request.params, None);
1470+
}
1471+
1472+
#[test]
1473+
fn deserialize_brp_request_id_optional() {
1474+
let request_json: &str = r#"{
1475+
"jsonrpc": "2.0",
1476+
"method": "world.list_components",
1477+
"params": {
1478+
"number": 5
1479+
}
1480+
}"#;
1481+
1482+
let request: BrpRequest = serde_json::from_str(request_json).unwrap();
1483+
1484+
assert_eq!(request.method, "world.list_components");
1485+
assert_eq!(request.id, None);
1486+
assert_eq!(request.params, Some(json!({ "number": 5 })));
1487+
}
1488+
}

0 commit comments

Comments
 (0)