rusty_cdk_core/sns/
dto.rs1use 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
7#[derive(Debug, Serialize, Deserialize)]
8pub(crate) enum TopicType {
9 #[serde(rename = "AWS::SNS::Topic")]
10 TopicType
11}
12
13ref_struct_with_id_methods!(TopicRef);
14
15#[derive(Debug, Serialize, Deserialize)]
16pub struct Topic {
17 #[serde(skip)]
18 pub(super) id: Id,
19 #[serde(skip)]
20 pub(super) resource_id: String,
21 #[serde(rename = "Type")]
22 pub(super) r#type: TopicType,
23 #[serde(rename = "Properties")]
24 pub(crate) properties: TopicProperties,
25}
26dto_methods!(Topic);
27
28#[derive(Debug, Serialize, Deserialize)]
29pub struct TopicProperties {
30 #[serde(rename = "ArchivePolicy", skip_serializing_if = "Option::is_none")]
31 pub(crate) archive_policy: Option<Value>,
32 #[serde(rename = "ContentBasedDeduplication", skip_serializing_if = "Option::is_none")]
33 pub(super) content_based_deduplication: Option<bool>,
34 #[serde(rename = "DeliveryStatusLogging", skip_serializing_if = "Option::is_none")]
35 pub(super) delivery_status_logging: Option<LoggingConfig>,
36 #[serde(rename = "DisplayName", skip_serializing_if = "Option::is_none")]
37 pub(super) display_name: Option<String>,
38 #[serde(rename = "FifoTopic", skip_serializing_if = "Option::is_none")]
39 pub(super) fifo_topic: Option<bool>,
40 #[serde(rename = "FifoThroughputScope", skip_serializing_if = "Option::is_none")]
41 pub(super) fifo_throughput_scope: Option<String>,
42 #[serde(rename = "KmsMasterKeyId", skip_serializing_if = "Option::is_none")]
43 pub(super) kms_master_key_id: Option<Value>,
44 #[serde(rename = "TopicName", skip_serializing_if = "Option::is_none")]
45 pub(super) topic_name: Option<String>,
46 #[serde(rename = "TracingConfig", skip_serializing_if = "Option::is_none")]
47 pub(super) tracing_config: Option<String>,
48 }
50
51ref_struct_with_id_methods!(TopicPolicyRef);
52
53#[derive(Debug, Serialize, Deserialize)]
54pub struct LoggingConfig {
55 #[serde(rename = "FailureFeedbackRoleArn", skip_serializing_if = "Option::is_none")]
56 pub(super) failure_feedback_role_arn: Option<Value>,
57 #[serde(rename = "Protocol")]
58 pub(super) protocol: String,
59 #[serde(rename = "SuccessFeedbackRoleArn", skip_serializing_if = "Option::is_none")]
60 pub(super) success_feedback_role_arn: Option<Value>,
61 #[serde(rename = "SuccessFeedbackSampleRate", skip_serializing_if = "Option::is_none")]
62 pub(super) success_feedback_sample_rate: Option<u8>,
63}
64
65#[derive(Debug, Serialize, Deserialize)]
66pub(crate) enum TopicPolicyType {
67 #[serde(rename = "AWS::SNS::TopicPolicy")]
68 TopicPolicyType
69}
70
71#[derive(Debug, Serialize, Deserialize)]
72pub struct TopicPolicy {
73 #[serde(skip)]
74 pub(super) id: Id,
75 #[serde(skip)]
76 pub(super) resource_id: String,
77 #[serde(rename = "Type")]
78 pub(super) r#type: TopicPolicyType,
79 #[serde(rename = "Properties")]
80 pub(crate) properties: TopicPolicyProperties,
81}
82dto_methods!(TopicPolicy);
83
84#[derive(Debug, Serialize, Deserialize)]
85pub struct TopicPolicyProperties {
86 #[serde(rename = "PolicyDocument")]
87 pub(crate) doc: PolicyDocument,
88 #[serde(rename = "Topics")]
89 pub(super) topics: Vec<Value>,
90}
91
92#[derive(Debug, Serialize, Deserialize)]
93pub(crate) enum SubscriptionDtoType {
94 #[serde(rename = "AWS::SNS::Subscription")]
95 SubscriptionType
96}
97
98#[derive(Debug, Serialize, Deserialize)]
99pub struct Subscription {
100 #[serde(skip)]
101 pub(super) id: Id,
102 #[serde(skip)]
103 pub(super) resource_id: String,
104 #[serde(rename = "Type")]
105 pub(super) r#type: SubscriptionDtoType,
106 #[serde(rename = "Properties")]
107 pub(super) properties: SnsSubscriptionProperties,
108}
109dto_methods!(Subscription);
110
111#[derive(Debug, Serialize, Deserialize)]
112pub struct SnsSubscriptionProperties {
113 #[serde(rename = "Endpoint")]
114 pub(super) endpoint: Value,
115 #[serde(rename = "Protocol")]
116 pub(super) protocol: String,
117 #[serde(rename = "TopicArn")]
118 pub(super) topic_arn: Value
119}