Skip to main content

fakecloud_cloudfront/
fle.rs

1//! Data types for CloudFront Batch 5 resources: Field-Level Encryption
2//! configs + profiles, and Realtime Log Configs.
3
4use chrono::{DateTime, Utc};
5use serde::{Deserialize, Serialize};
6
7fn skip_if_none<T>(x: &Option<T>) -> bool {
8    x.is_none()
9}
10
11// ─── Field-Level Encryption Config ────────────────────────────────────
12
13#[derive(Debug, Clone, Serialize, Deserialize, Default)]
14#[serde(rename_all = "PascalCase")]
15pub struct FieldLevelEncryptionConfig {
16    pub caller_reference: String,
17    #[serde(default, skip_serializing_if = "skip_if_none")]
18    pub comment: Option<String>,
19    pub query_arg_profile_config: QueryArgProfileConfig,
20    pub content_type_profile_config: ContentTypeProfileConfig,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, Default)]
24#[serde(rename_all = "PascalCase")]
25pub struct QueryArgProfileConfig {
26    pub forward_when_query_arg_profile_is_unknown: bool,
27    #[serde(default, skip_serializing_if = "skip_if_none")]
28    pub query_arg_profiles: Option<QueryArgProfiles>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, Default)]
32#[serde(rename_all = "PascalCase")]
33pub struct QueryArgProfiles {
34    pub quantity: i32,
35    #[serde(default, skip_serializing_if = "skip_if_none")]
36    pub items: Option<QueryArgProfileItems>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize, Default)]
40#[serde(rename_all = "PascalCase")]
41pub struct QueryArgProfileItems {
42    #[serde(default, rename = "QueryArgProfile")]
43    pub query_arg_profile: Vec<QueryArgProfile>,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize, Default)]
47#[serde(rename_all = "PascalCase")]
48pub struct QueryArgProfile {
49    pub query_arg: String,
50    pub profile_id: String,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize, Default)]
54#[serde(rename_all = "PascalCase")]
55pub struct ContentTypeProfileConfig {
56    pub forward_when_content_type_is_unknown: bool,
57    #[serde(default, skip_serializing_if = "skip_if_none")]
58    pub content_type_profiles: Option<ContentTypeProfiles>,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize, Default)]
62#[serde(rename_all = "PascalCase")]
63pub struct ContentTypeProfiles {
64    pub quantity: i32,
65    #[serde(default, skip_serializing_if = "skip_if_none")]
66    pub items: Option<ContentTypeProfileItems>,
67}
68
69#[derive(Debug, Clone, Serialize, Deserialize, Default)]
70#[serde(rename_all = "PascalCase")]
71pub struct ContentTypeProfileItems {
72    #[serde(default, rename = "ContentTypeProfile")]
73    pub content_type_profile: Vec<ContentTypeProfile>,
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize, Default)]
77#[serde(rename_all = "PascalCase")]
78pub struct ContentTypeProfile {
79    pub format: String,
80    #[serde(default, skip_serializing_if = "skip_if_none")]
81    pub profile_id: Option<String>,
82    pub content_type: String,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct StoredFieldLevelEncryption {
87    pub id: String,
88    pub etag: String,
89    pub last_modified_time: DateTime<Utc>,
90    pub config: FieldLevelEncryptionConfig,
91}
92
93// ─── Field-Level Encryption Profile ───────────────────────────────────
94
95#[derive(Debug, Clone, Serialize, Deserialize, Default)]
96#[serde(rename_all = "PascalCase")]
97pub struct FieldLevelEncryptionProfileConfig {
98    pub name: String,
99    pub caller_reference: String,
100    #[serde(default, skip_serializing_if = "skip_if_none")]
101    pub comment: Option<String>,
102    pub encryption_entities: EncryptionEntities,
103}
104
105#[derive(Debug, Clone, Serialize, Deserialize, Default)]
106#[serde(rename_all = "PascalCase")]
107pub struct EncryptionEntities {
108    pub quantity: i32,
109    #[serde(default, skip_serializing_if = "skip_if_none")]
110    pub items: Option<EncryptionEntityItems>,
111}
112
113#[derive(Debug, Clone, Serialize, Deserialize, Default)]
114#[serde(rename_all = "PascalCase")]
115pub struct EncryptionEntityItems {
116    #[serde(default, rename = "EncryptionEntity")]
117    pub encryption_entity: Vec<EncryptionEntity>,
118}
119
120#[derive(Debug, Clone, Serialize, Deserialize, Default)]
121#[serde(rename_all = "PascalCase")]
122pub struct EncryptionEntity {
123    pub public_key_id: String,
124    pub provider_id: String,
125    pub field_patterns: FieldPatterns,
126}
127
128#[derive(Debug, Clone, Serialize, Deserialize, Default)]
129#[serde(rename_all = "PascalCase")]
130pub struct FieldPatterns {
131    pub quantity: i32,
132    #[serde(default, skip_serializing_if = "skip_if_none")]
133    pub items: Option<FieldPatternItems>,
134}
135
136#[derive(Debug, Clone, Serialize, Deserialize, Default)]
137#[serde(rename_all = "PascalCase")]
138pub struct FieldPatternItems {
139    #[serde(default, rename = "FieldPattern")]
140    pub field_pattern: Vec<String>,
141}
142
143#[derive(Debug, Clone, Serialize, Deserialize)]
144pub struct StoredFieldLevelEncryptionProfile {
145    pub id: String,
146    pub etag: String,
147    pub last_modified_time: DateTime<Utc>,
148    pub config: FieldLevelEncryptionProfileConfig,
149}
150
151// ─── Realtime Log Config ──────────────────────────────────────────────
152
153#[derive(Debug, Clone, Serialize, Deserialize, Default)]
154#[serde(rename_all = "PascalCase")]
155pub struct CreateRealtimeLogConfigRequest {
156    pub end_points: EndPoints,
157    pub fields: FieldsList,
158    pub name: String,
159    pub sampling_rate: i64,
160}
161
162#[derive(Debug, Clone, Serialize, Deserialize, Default)]
163#[serde(rename_all = "PascalCase")]
164pub struct UpdateRealtimeLogConfigRequest {
165    pub end_points: EndPoints,
166    pub fields: FieldsList,
167    pub name: String,
168    #[serde(rename = "ARN")]
169    pub arn: String,
170    pub sampling_rate: i64,
171}
172
173#[derive(Debug, Clone, Serialize, Deserialize, Default)]
174#[serde(rename_all = "PascalCase")]
175pub struct GetOrDeleteRealtimeLogConfigRequest {
176    #[serde(default, skip_serializing_if = "skip_if_none")]
177    pub name: Option<String>,
178    #[serde(default, skip_serializing_if = "skip_if_none", rename = "ARN")]
179    pub arn: Option<String>,
180}
181
182#[derive(Debug, Clone, Serialize, Deserialize, Default)]
183#[serde(rename_all = "PascalCase")]
184pub struct EndPoints {
185    #[serde(default, rename = "member")]
186    pub member: Vec<EndPoint>,
187}
188
189#[derive(Debug, Clone, Serialize, Deserialize, Default)]
190#[serde(rename_all = "PascalCase")]
191pub struct EndPoint {
192    pub stream_type: String,
193    pub kinesis_stream_config: KinesisStreamConfig,
194}
195
196#[derive(Debug, Clone, Serialize, Deserialize, Default)]
197#[serde(rename_all = "PascalCase")]
198pub struct KinesisStreamConfig {
199    #[serde(rename = "RoleARN")]
200    pub role_arn: String,
201    #[serde(rename = "StreamARN")]
202    pub stream_arn: String,
203}
204
205#[derive(Debug, Clone, Serialize, Deserialize, Default)]
206#[serde(rename_all = "PascalCase")]
207pub struct FieldsList {
208    #[serde(default, rename = "Field")]
209    pub field: Vec<String>,
210}
211
212#[derive(Debug, Clone, Serialize, Deserialize)]
213pub struct StoredRealtimeLogConfig {
214    pub arn: String,
215    pub name: String,
216    pub sampling_rate: i64,
217    pub end_points: EndPoints,
218    pub fields: FieldsList,
219}