rusty_cdk_core/sns/
dto.rs1use serde::Serialize;
2use serde_json::Value;
3use crate::{dto_methods, ref_struct};
4use crate::iam::PolicyDocument;
5use crate::intrinsic::{get_arn, get_att, get_ref};
6use crate::shared::Id;
7
8ref_struct!(TopicRef);
9
10#[derive(Debug, Serialize)]
11pub struct Topic {
12 #[serde(skip)]
13 pub(super) id: Id,
14 #[serde(skip)]
15 pub(super) resource_id: String,
16 #[serde(rename = "Type")]
17 pub(super) r#type: String,
18 #[serde(rename = "Properties")]
19 pub(super) properties: TopicProperties,
20}
21dto_methods!(Topic);
22
23#[derive(Debug, Serialize)]
24pub struct TopicProperties {
25 #[serde(rename = "TopicName", skip_serializing_if = "Option::is_none")]
26 pub(super) topic_name: Option<String>,
27 #[serde(rename = "FifoTopic", skip_serializing_if = "Option::is_none")]
28 pub(super) fifo_topic: Option<bool>,
29 #[serde(rename = "ContentBasedDeduplication", skip_serializing_if = "Option::is_none")]
30 pub(super) content_based_deduplication: Option<bool>,
31 #[serde(rename = "FifoThroughputScope", skip_serializing_if = "Option::is_none")]
32 pub(super) fifo_throughput_scope: Option<String>,
33}
34
35pub struct TopicPolicyRef {
36 id: Id,
37 resource_id: String,
38}
39
40impl TopicPolicyRef {
41 pub fn new(id: Id, resource_id: String) -> Self {
42 Self {
43 id,
44 resource_id
45 }
46 }
47
48 pub fn get_id(&self) -> Id {
49 self.id.clone()
50 }
51
52 pub fn get_resource_id(&self) -> &str {
53 self.resource_id.as_str()
54 }
55
56 pub fn get_ref(&self) -> Value {
57 get_ref(self.get_resource_id())
58 }
59
60 pub fn get_arn(&self) -> Value {
61 get_arn(self.get_resource_id())
62 }
63
64 pub fn get_att(&self, id: &str) -> Value {
65 get_att(self.get_resource_id(), id)
66 }
67}
68
69#[derive(Debug, Serialize)]
70pub struct TopicPolicy {
71 #[serde(skip)]
72 pub(super) id: Id,
73 #[serde(skip)]
74 pub(super) resource_id: String,
75 #[serde(rename = "Type")]
76 pub(super) r#type: String,
77 #[serde(rename = "Properties")]
78 pub(super) properties: TopicPolicyProperties,
79}
80dto_methods!(TopicPolicy);
81
82#[derive(Debug, Serialize)]
83pub struct TopicPolicyProperties {
84 #[serde(rename = "PolicyDocument")]
85 pub(super) doc: PolicyDocument,
86 #[serde(rename = "Topics")]
87 pub(super) topics: Vec<Value>,
88}
89
90#[derive(Debug, Serialize)]
91pub struct Subscription {
92 #[serde(skip)]
93 pub(super) id: Id,
94 #[serde(skip)]
95 pub(super) resource_id: String,
96 #[serde(rename = "Type")]
97 pub(super) r#type: String,
98 #[serde(rename = "Properties")]
99 pub(super) properties: SnsSubscriptionProperties,
100}
101dto_methods!(Subscription);
102
103#[derive(Debug, Serialize)]
104pub struct SnsSubscriptionProperties {
105 #[serde(rename = "Protocol")]
106 pub(super) protocol: String,
107 #[serde(rename = "Endpoint")]
108 pub(super) endpoint: Value,
109 #[serde(rename = "TopicArn")]
110 pub(super) topic_arn: Value
111}