fakecloud_cloudfront/
streaming.rs1use chrono::{DateTime, Utc};
9use serde::{Deserialize, Serialize};
10
11fn skip_if_none<T>(x: &Option<T>) -> bool {
12 x.is_none()
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize, Default)]
18#[serde(rename_all = "PascalCase")]
19pub struct StreamingDistributionConfig {
20 pub caller_reference: String,
21 pub s3_origin: S3Origin,
22 #[serde(default, skip_serializing_if = "skip_if_none")]
23 pub aliases: Option<StreamingAliases>,
24 pub comment: String,
25 #[serde(default, skip_serializing_if = "skip_if_none")]
26 pub logging: Option<StreamingLoggingConfig>,
27 pub trusted_signers: TrustedSigners,
28 pub price_class: String,
29 pub enabled: bool,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, Default)]
33#[serde(rename_all = "PascalCase")]
34pub struct S3Origin {
35 pub domain_name: String,
36 pub origin_access_identity: String,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize, Default)]
40#[serde(rename_all = "PascalCase")]
41pub struct StreamingAliases {
42 pub quantity: i32,
43 #[serde(default, skip_serializing_if = "skip_if_none")]
44 pub items: Option<AliasItems>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize, Default)]
48#[serde(rename_all = "PascalCase")]
49pub struct AliasItems {
50 #[serde(default, rename = "CNAME")]
51 pub cname: Vec<String>,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize, Default)]
55#[serde(rename_all = "PascalCase")]
56pub struct StreamingLoggingConfig {
57 pub enabled: bool,
58 pub bucket: String,
59 pub prefix: String,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize, Default)]
63#[serde(rename_all = "PascalCase")]
64pub struct TrustedSigners {
65 pub enabled: bool,
66 pub quantity: i32,
67 #[serde(default, skip_serializing_if = "skip_if_none")]
68 pub items: Option<AwsAccountItems>,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize, Default)]
72#[serde(rename_all = "PascalCase")]
73pub struct AwsAccountItems {
74 #[serde(default, rename = "AwsAccountNumber")]
75 pub aws_account_number: Vec<String>,
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize, Default)]
79#[serde(rename_all = "PascalCase")]
80pub struct StreamingDistributionConfigWithTags {
81 pub streaming_distribution_config: StreamingDistributionConfig,
82 pub tags: crate::model::Tags,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct StoredStreamingDistribution {
87 pub id: String,
88 pub arn: String,
89 pub status: String,
90 pub last_modified_time: DateTime<Utc>,
91 pub domain_name: String,
92 pub etag: String,
93 pub config: StreamingDistributionConfig,
94}