aws_lambda_events/event/codedeploy/
mod.rs1#[cfg(feature = "builders")]
2use bon::Builder;
3use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5#[cfg(feature = "catch-all-fields")]
6use serde_json::Value;
7
8pub type CodeDeployDeploymentState = String;
9
10#[non_exhaustive]
13#[cfg_attr(feature = "builders", derive(Builder))]
14#[derive(Debug, Default, Clone, Eq, PartialEq, Deserialize, Serialize)]
15#[serde(rename_all = "camelCase")]
16pub struct CodeDeployEvent {
17 #[serde(default)]
19 #[serde(rename = "account")]
20 pub account_id: Option<String>,
21 #[serde(default)]
23 pub region: Option<String>,
24 #[serde(default)]
29 #[serde(rename = "detail-type")]
30 pub detail_type: Option<String>,
31 #[serde(default)]
33 pub source: Option<String>,
34 #[serde(default)]
36 pub version: Option<String>,
37 pub time: DateTime<Utc>,
39 #[serde(default)]
41 pub id: Option<String>,
42 pub resources: Vec<String>,
45 pub detail: CodeDeployEventDetail,
47 #[cfg(feature = "catch-all-fields")]
51 #[cfg_attr(docsrs, doc(cfg(feature = "catch-all-fields")))]
52 #[serde(flatten)]
53 #[cfg_attr(feature = "builders", builder(default))]
54 pub other: serde_json::Map<String, Value>,
55}
56
57#[non_exhaustive]
58#[cfg_attr(feature = "builders", derive(Builder))]
59#[derive(Debug, Default, Clone, Eq, PartialEq, Deserialize, Serialize)]
60#[serde(rename_all = "camelCase")]
61pub struct CodeDeployEventDetail {
62 #[serde(default)]
64 pub instance_group_id: Option<String>,
65 pub instance_id: Option<String>,
68 #[serde(default)]
70 pub region: Option<String>,
71 #[serde(default)]
73 pub application: Option<String>,
74 #[serde(default)]
76 pub deployment_id: Option<String>,
77 pub state: CodeDeployDeploymentState,
79 #[serde(default)]
81 pub deployment_group: Option<String>,
82 #[cfg(feature = "catch-all-fields")]
86 #[cfg_attr(docsrs, doc(cfg(feature = "catch-all-fields")))]
87 #[serde(flatten)]
88 #[cfg_attr(feature = "builders", builder(default))]
89 pub other: serde_json::Map<String, Value>,
90}
91
92#[non_exhaustive]
93#[cfg_attr(feature = "builders", derive(Builder))]
94#[derive(Debug, Default, Clone, Deserialize, Serialize, Eq, PartialEq)]
95#[serde(rename_all = "PascalCase")]
96pub struct CodeDeployLifecycleEvent {
97 pub deployment_id: String,
98 pub lifecycle_event_hook_execution_id: String,
99 #[cfg(feature = "catch-all-fields")]
103 #[cfg_attr(docsrs, doc(cfg(feature = "catch-all-fields")))]
104 #[serde(flatten)]
105 #[cfg_attr(feature = "builders", builder(default))]
106 pub other: serde_json::Map<String, Value>,
107}
108
109#[cfg(test)]
110mod test {
111 use super::*;
112
113 #[test]
114 #[cfg(feature = "codedeploy")]
115 fn example_codedeploy_lifecycle_event() {
116 let data = include_bytes!("../../fixtures/example-codedeploy-lifecycle-event.json");
117 let parsed: CodeDeployLifecycleEvent = serde_json::from_slice(data).unwrap();
118
119 assert_eq!(parsed.deployment_id, "d-deploymentId".to_string());
120 assert_eq!(parsed.lifecycle_event_hook_execution_id, "eyJlbmNyeXB0ZWREYXRhIjoiY3VHU2NjdkJXUTJQUENVd2dkYUNGRVg0dWlpME9UWVdHTVhZcDRXVW5LYUVKc21EaUFPMkNLNXMwMWFrNDlYVStlbXdRb29xS3NJTUNVQ3RYRGFZSXc1VTFwUllvMDhmMzdlbDZFeDVVdjZrNFc0eU5waGh6YTRvdkNWcmVveVR6OWdERlM2SmlIYW1TZz09IiwiaXZQYXJhbWV0ZXJTcGVjIjoiTm1ZNFR6RzZxQVhHamhhLyIsIm1hdGVyaWFsU2V0U2VyaWFsIjoxfQ==".to_string());
121
122 let output: String = serde_json::to_string(&parsed).unwrap();
123 let reparsed: CodeDeployLifecycleEvent = serde_json::from_slice(output.as_bytes()).unwrap();
124 assert_eq!(parsed, reparsed);
125 }
126
127 #[test]
128 #[cfg(feature = "codedeploy")]
129 fn example_codedeploy_deployment_event() {
130 let data = include_bytes!("../../fixtures/example-codedeploy-deployment-event.json");
131 let parsed: CodeDeployEvent = serde_json::from_slice(data).unwrap();
132 let output: String = serde_json::to_string(&parsed).unwrap();
133 let reparsed: CodeDeployEvent = serde_json::from_slice(output.as_bytes()).unwrap();
134 assert_eq!(parsed, reparsed);
135 }
136
137 #[test]
138 #[cfg(feature = "codedeploy")]
139 fn example_codedeploy_instance_event() {
140 let data = include_bytes!("../../fixtures/example-codedeploy-instance-event.json");
141 let parsed: CodeDeployEvent = serde_json::from_slice(data).unwrap();
142 let output: String = serde_json::to_string(&parsed).unwrap();
143 let reparsed: CodeDeployEvent = serde_json::from_slice(output.as_bytes()).unwrap();
144 assert_eq!(parsed, reparsed);
145 }
146}