Skip to main content

fakecloud_cloudfront/
extras.rs

1//! Data types for CloudFront Batch 6a: VPC Origins, Anycast IP Lists,
2//! Trust Stores, Resource Policies.
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// ─── VPC Origin ───────────────────────────────────────────────────────
12
13#[derive(Debug, Clone, Serialize, Deserialize, Default)]
14#[serde(rename_all = "PascalCase")]
15pub struct VpcOriginEndpointConfig {
16    pub name: String,
17    pub arn: String,
18    #[serde(rename = "HTTPPort")]
19    pub http_port: i32,
20    #[serde(rename = "HTTPSPort")]
21    pub https_port: i32,
22    pub origin_protocol_policy: String,
23    #[serde(default, skip_serializing_if = "skip_if_none")]
24    pub origin_ssl_protocols: Option<OriginSslProtocols>,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize, Default)]
28#[serde(rename_all = "PascalCase")]
29pub struct OriginSslProtocols {
30    pub quantity: i32,
31    pub items: SslProtocolItems,
32}
33
34#[derive(Debug, Clone, Serialize, Deserialize, Default)]
35#[serde(rename_all = "PascalCase")]
36pub struct SslProtocolItems {
37    #[serde(default, rename = "SslProtocol")]
38    pub ssl_protocol: Vec<String>,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize, Default)]
42#[serde(rename_all = "PascalCase")]
43pub struct CreateVpcOriginRequest {
44    pub vpc_origin_endpoint_config: VpcOriginEndpointConfig,
45    #[serde(default, skip_serializing_if = "skip_if_none")]
46    pub tags: Option<crate::model::Tags>,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct StoredVpcOrigin {
51    pub id: String,
52    pub arn: String,
53    pub status: String,
54    pub etag: String,
55    pub created_time: DateTime<Utc>,
56    pub last_modified_time: DateTime<Utc>,
57    pub config: VpcOriginEndpointConfig,
58}
59
60// ─── Anycast IP List ──────────────────────────────────────────────────
61
62#[derive(Debug, Clone, Serialize, Deserialize, Default)]
63#[serde(rename_all = "PascalCase")]
64pub struct CreateAnycastIpListRequest {
65    pub name: String,
66    pub ip_count: i32,
67    #[serde(default, skip_serializing_if = "skip_if_none")]
68    pub ip_address_type: Option<String>,
69    #[serde(default, skip_serializing_if = "skip_if_none")]
70    pub ipam_cidr_configs: Option<IpamCidrConfigList>,
71    #[serde(default, skip_serializing_if = "skip_if_none")]
72    pub tags: Option<crate::model::Tags>,
73}
74
75#[derive(Debug, Clone, Serialize, Deserialize, Default)]
76#[serde(rename_all = "PascalCase")]
77pub struct UpdateAnycastIpListRequest {
78    #[serde(default, skip_serializing_if = "skip_if_none")]
79    pub ip_address_type: Option<String>,
80    #[serde(default, skip_serializing_if = "skip_if_none")]
81    pub ipam_cidr_configs: Option<IpamCidrConfigList>,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize, Default)]
85#[serde(rename_all = "PascalCase")]
86pub struct IpamCidrConfigList {
87    #[serde(default, rename = "IpamCidrConfig")]
88    pub ipam_cidr_config: Vec<IpamCidrConfig>,
89}
90
91#[derive(Debug, Clone, Serialize, Deserialize, Default)]
92#[serde(rename_all = "PascalCase")]
93pub struct IpamCidrConfig {
94    pub cidr: String,
95    pub ipam_pool_arn: String,
96    #[serde(default, skip_serializing_if = "skip_if_none")]
97    pub anycast_ip: Option<String>,
98    #[serde(default, skip_serializing_if = "skip_if_none")]
99    pub status: Option<String>,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct StoredAnycastIpList {
104    pub id: String,
105    pub name: String,
106    pub status: String,
107    pub arn: String,
108    pub ip_count: i32,
109    pub ip_address_type: Option<String>,
110    pub anycast_ips: Vec<String>,
111    pub last_modified_time: DateTime<Utc>,
112    pub etag: String,
113    /// The create-time IPAM CIDR configuration, retained so GetAnycastIpList
114    /// echoes it back as `IpamConfig`. `None` when the list was created without
115    /// bring-your-own-IP IPAM configs.
116    #[serde(default)]
117    pub ipam_cidr_configs: Vec<IpamCidrConfig>,
118}
119
120// ─── Trust Store ──────────────────────────────────────────────────────
121
122#[derive(Debug, Clone, Serialize, Deserialize, Default)]
123#[serde(rename_all = "PascalCase")]
124pub struct CreateTrustStoreRequest {
125    pub name: String,
126    pub ca_certificates_bundle_source: CaCertificatesBundleSource,
127    #[serde(
128        rename = "UseClientCertificateOCSPEndpoint",
129        default,
130        skip_serializing_if = "skip_if_none"
131    )]
132    pub use_client_certificate_ocsp_endpoint: Option<bool>,
133    #[serde(default, skip_serializing_if = "skip_if_none")]
134    pub tags: Option<crate::model::Tags>,
135}
136
137#[derive(Debug, Clone, Serialize, Deserialize, Default)]
138#[serde(rename_all = "PascalCase")]
139pub struct CaCertificatesBundleSource {
140    #[serde(default, skip_serializing_if = "skip_if_none")]
141    pub ca_certificates_bundle_s3_location: Option<CaCertificatesBundleS3Location>,
142}
143
144#[derive(Debug, Clone, Serialize, Deserialize, Default)]
145#[serde(rename_all = "PascalCase")]
146pub struct CaCertificatesBundleS3Location {
147    pub bucket: String,
148    pub key: String,
149    pub region: String,
150    #[serde(default, skip_serializing_if = "skip_if_none")]
151    pub version: Option<String>,
152}
153
154#[derive(Debug, Clone, Serialize, Deserialize)]
155pub struct StoredTrustStore {
156    pub id: String,
157    pub arn: String,
158    pub name: String,
159    pub etag: String,
160    pub last_modified_time: DateTime<Utc>,
161    pub ca_certificates_bundle_source: CaCertificatesBundleSource,
162    /// Whether OCSP revocation checking of client certificates is enabled,
163    /// supplied at CreateTrustStore and echoed by GetTrustStore. Previously
164    /// dropped (bug-hunt).
165    #[serde(default)]
166    pub use_client_certificate_ocsp_endpoint: Option<bool>,
167}
168
169// ─── Resource Policy ──────────────────────────────────────────────────
170
171#[derive(Debug, Clone, Serialize, Deserialize, Default)]
172#[serde(rename_all = "PascalCase")]
173pub struct ResourcePolicyRequest {
174    pub resource_arn: String,
175    #[serde(default, skip_serializing_if = "skip_if_none")]
176    pub policy_document: Option<String>,
177}
178
179#[derive(Debug, Clone, Serialize, Deserialize)]
180pub struct StoredResourcePolicy {
181    pub resource_arn: String,
182    pub policy_document: String,
183}