lambda_microvm_hook_server/
request.rs1use serde::{Deserialize, Deserializer};
2use std::collections::BTreeMap;
3
4#[derive(Debug, Deserialize)]
5#[serde(rename_all = "camelCase", deny_unknown_fields)]
6pub struct RunHookRequest {
7 pub microvm_id: String,
8 #[serde(deserialize_with = "deserialize_run_hook_payload")]
9 pub run_hook_payload: RunHookPayload,
10}
11
12#[derive(Debug, Deserialize)]
13#[serde(rename_all = "camelCase", deny_unknown_fields)]
14pub struct RunHookPayload {
15 pub command: String,
16 #[serde(default)]
17 pub args: Vec<String>,
18 #[serde(default)]
19 pub environment: BTreeMap<String, String>,
20}
21
22fn deserialize_run_hook_payload<'a, T: Deserializer<'a>>(deserializer: T) -> Result<RunHookPayload, T::Error> {
23 let encoded = String::deserialize(deserializer)?;
24 serde_json::from_str(&encoded).map_err(serde::de::Error::custom)
25}