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}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct StoredVpcOrigin {
49    pub id: String,
50    pub arn: String,
51    pub status: String,
52    pub etag: String,
53    pub created_time: DateTime<Utc>,
54    pub last_modified_time: DateTime<Utc>,
55    pub config: VpcOriginEndpointConfig,
56}
57
58// ─── Anycast IP List ──────────────────────────────────────────────────
59
60#[derive(Debug, Clone, Serialize, Deserialize, Default)]
61#[serde(rename_all = "PascalCase")]
62pub struct CreateAnycastIpListRequest {
63    pub name: String,
64    pub ip_count: i32,
65    #[serde(default, skip_serializing_if = "skip_if_none")]
66    pub ip_address_type: Option<String>,
67    #[serde(default, skip_serializing_if = "skip_if_none")]
68    pub ipam_cidr_configs: Option<IpamCidrConfigList>,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize, Default)]
72#[serde(rename_all = "PascalCase")]
73pub struct UpdateAnycastIpListRequest {
74    #[serde(default, skip_serializing_if = "skip_if_none")]
75    pub ip_address_type: Option<String>,
76    #[serde(default, skip_serializing_if = "skip_if_none")]
77    pub ipam_cidr_configs: Option<IpamCidrConfigList>,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize, Default)]
81#[serde(rename_all = "PascalCase")]
82pub struct IpamCidrConfigList {
83    #[serde(default, rename = "IpamCidrConfig")]
84    pub ipam_cidr_config: Vec<IpamCidrConfig>,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize, Default)]
88#[serde(rename_all = "PascalCase")]
89pub struct IpamCidrConfig {
90    pub ipv4_pool_id: String,
91    pub allocation_size: i32,
92}
93
94#[derive(Debug, Clone, Serialize, Deserialize)]
95pub struct StoredAnycastIpList {
96    pub id: String,
97    pub name: String,
98    pub status: String,
99    pub arn: String,
100    pub ip_count: i32,
101    pub ip_address_type: Option<String>,
102    pub anycast_ips: Vec<String>,
103    pub last_modified_time: DateTime<Utc>,
104    pub etag: String,
105}
106
107// ─── Trust Store ──────────────────────────────────────────────────────
108
109#[derive(Debug, Clone, Serialize, Deserialize, Default)]
110#[serde(rename_all = "PascalCase")]
111pub struct CreateTrustStoreRequest {
112    pub name: String,
113    pub ca_certificates_bundle_source: CaCertificatesBundleSource,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize, Default)]
117#[serde(rename_all = "PascalCase")]
118pub struct CaCertificatesBundleSource {
119    #[serde(default, skip_serializing_if = "skip_if_none")]
120    pub ca_certificates_bundle_s3_location: Option<CaCertificatesBundleS3Location>,
121}
122
123#[derive(Debug, Clone, Serialize, Deserialize, Default)]
124#[serde(rename_all = "PascalCase")]
125pub struct CaCertificatesBundleS3Location {
126    pub bucket: String,
127    pub key: String,
128    pub region: String,
129    #[serde(default, skip_serializing_if = "skip_if_none")]
130    pub version: Option<String>,
131}
132
133#[derive(Debug, Clone, Serialize, Deserialize)]
134pub struct StoredTrustStore {
135    pub id: String,
136    pub arn: String,
137    pub name: String,
138    pub etag: String,
139    pub last_modified_time: DateTime<Utc>,
140    pub ca_certificates_bundle_source: CaCertificatesBundleSource,
141}
142
143// ─── Resource Policy ──────────────────────────────────────────────────
144
145#[derive(Debug, Clone, Serialize, Deserialize, Default)]
146#[serde(rename_all = "PascalCase")]
147pub struct ResourcePolicyRequest {
148    pub resource_arn: String,
149    #[serde(default, skip_serializing_if = "skip_if_none")]
150    pub policy_document: Option<String>,
151}
152
153#[derive(Debug, Clone, Serialize, Deserialize)]
154pub struct StoredResourcePolicy {
155    pub resource_arn: String,
156    pub policy_document: String,
157}