Skip to main content

rusty_cdk_core/sns/
dto.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use crate::{dto_methods, ref_struct_with_id_methods};
4use crate::iam::PolicyDocument;
5use crate::shared::Id;
6
7ref_struct_with_id_methods!(TopicRef);
8
9#[derive(Debug, Serialize, Deserialize)]
10pub struct Topic {
11    #[serde(skip)]
12    pub(super) id: Id,
13    #[serde(skip)]
14    pub(super) resource_id: String,
15    #[serde(rename = "Type")]
16    pub(super) r#type: String,
17    #[serde(rename = "Properties")]
18    pub(super) properties: TopicProperties,
19}
20dto_methods!(Topic);
21
22#[derive(Debug, Serialize, Deserialize)]
23pub struct TopicProperties {
24    #[serde(rename = "ArchivePolicy", skip_serializing_if = "Option::is_none")]
25    pub(super) archive_policy: Option<Value>,
26    #[serde(rename = "ContentBasedDeduplication", skip_serializing_if = "Option::is_none")]
27    pub(super) content_based_deduplication: Option<bool>,
28    #[serde(rename = "DeliveryStatusLogging", skip_serializing_if = "Option::is_none")]
29    pub(super) delivery_status_logging: Option<LoggingConfig>,
30    #[serde(rename = "DisplayName", skip_serializing_if = "Option::is_none")]
31    pub(super) display_name: Option<String>,
32    #[serde(rename = "FifoTopic", skip_serializing_if = "Option::is_none")]
33    pub(super) fifo_topic: Option<bool>,
34    #[serde(rename = "FifoThroughputScope", skip_serializing_if = "Option::is_none")]
35    pub(super) fifo_throughput_scope: Option<String>,
36    #[serde(rename = "KmsMasterKeyId", skip_serializing_if = "Option::is_none")]
37    pub(super) kms_master_key_id: Option<Value>,
38    #[serde(rename = "TopicName", skip_serializing_if = "Option::is_none")]
39    pub(super) topic_name: Option<String>,
40    #[serde(rename = "TracingConfig", skip_serializing_if = "Option::is_none")]
41    pub(super) tracing_config: Option<String>,
42    // DataProtectionPolicy
43}
44
45ref_struct_with_id_methods!(TopicPolicyRef);
46
47#[derive(Debug, Serialize, Deserialize)]
48pub struct LoggingConfig {
49    #[serde(rename = "FailureFeedbackRoleArn", skip_serializing_if = "Option::is_none")]
50    pub(super) failure_feedback_role_arn: Option<Value>,
51    #[serde(rename = "Protocol")]
52    pub(super) protocol: String,
53    #[serde(rename = "SuccessFeedbackRoleArn", skip_serializing_if = "Option::is_none")]
54    pub(super) success_feedback_role_arn: Option<Value>,
55    #[serde(rename = "SuccessFeedbackSampleRate", skip_serializing_if = "Option::is_none")]
56    pub(super) success_feedback_sample_rate: Option<u8>,
57}
58
59#[derive(Debug, Serialize, Deserialize)]
60pub struct TopicPolicy {
61    #[serde(skip)]
62    pub(super) id: Id,
63    #[serde(skip)]
64    pub(super) resource_id: String,
65    #[serde(rename = "Type")]
66    pub(super) r#type: String,
67    #[serde(rename = "Properties")]
68    pub(crate) properties: TopicPolicyProperties,
69}
70dto_methods!(TopicPolicy);
71
72#[derive(Debug, Serialize, Deserialize)]
73pub struct TopicPolicyProperties {
74    #[serde(rename = "PolicyDocument")]
75    pub(crate) doc: PolicyDocument,
76    #[serde(rename = "Topics")]
77    pub(super) topics: Vec<Value>,
78}
79
80#[derive(Debug, Serialize, Deserialize)]
81pub struct Subscription {
82    #[serde(skip)]
83    pub(super) id: Id,
84    #[serde(skip)]
85    pub(super) resource_id: String,
86    #[serde(rename = "Type")]
87    pub(super) r#type: String,
88    #[serde(rename = "Properties")]
89    pub(super) properties: SnsSubscriptionProperties,
90}
91dto_methods!(Subscription);
92
93#[derive(Debug, Serialize, Deserialize)]
94pub struct SnsSubscriptionProperties {
95    #[serde(rename = "Endpoint")]
96    pub(super) endpoint: Value,
97    #[serde(rename = "Protocol")]
98    pub(super) protocol: String,
99    #[serde(rename = "TopicArn")]
100    pub(super) topic_arn: Value
101}