Implemented data structures for SYNC, QUERY, and EXECUTE
This commit is contained in:
@@ -1,43 +1,24 @@
|
||||
pub mod sync;
|
||||
pub mod query;
|
||||
pub mod execute;
|
||||
|
||||
use serde::Deserialize;
|
||||
use uuid::Uuid;
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Deserialize)]
|
||||
#[serde(tag = "intent")]
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(tag = "intent", content = "payload")]
|
||||
enum Intent {
|
||||
#[serde(rename = "action.devices.SYNC")]
|
||||
Sync,
|
||||
#[serde(rename = "action.devices.QUERY")]
|
||||
Query(query::Payload),
|
||||
#[serde(rename = "action.devices.EXECUTE")]
|
||||
Execute(execute::Payload),
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct Request {
|
||||
request_id: Uuid,
|
||||
inputs: Vec<Intent>,
|
||||
pub request_id: Uuid,
|
||||
pub inputs: Vec<Intent>,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::str::FromStr;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn deserialize_sync_request() {
|
||||
|
||||
let json = r#"{
|
||||
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
|
||||
"inputs": [
|
||||
{
|
||||
"intent": "action.devices.SYNC"
|
||||
}
|
||||
]
|
||||
}"#;
|
||||
|
||||
let req: Request = serde_json::from_str(json).unwrap();
|
||||
|
||||
assert_eq!(req.request_id, Uuid::from_str("ff36a3cc-ec34-11e6-b1a0-64510650abcf").unwrap());
|
||||
assert_eq!(req.inputs.len(), 1);
|
||||
assert_eq!(req.inputs[0], Intent::Sync);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user