Skip to main content

rusty_cdk_core/appsync/
dto.rs

1use serde_json::Value;
2use serde::{Deserialize, Serialize};
3use crate::{dto_methods, ref_struct};
4use crate::shared::Id;
5
6#[derive(Debug, Serialize, Deserialize)]
7pub(crate) enum AppSyncApiType {
8    #[serde(rename = "AWS::AppSync::Api")]
9    AppSyncApiType
10}
11
12ref_struct!(AppSyncApiRef);
13
14#[derive(Debug, Serialize, Deserialize)]
15pub struct AppSyncApi {
16    #[serde(skip)]
17    pub(crate) id: Id,
18    #[serde(skip)]
19    pub(crate) resource_id: String,
20    #[serde(rename = "Type")]
21    pub(crate) r#type: AppSyncApiType,
22    #[serde(rename = "Properties")]
23    pub(crate) properties: AppSyncApiProperties,
24}
25dto_methods!(AppSyncApi);
26
27#[derive(Debug, Serialize, Deserialize)]
28pub struct AppSyncApiProperties {
29    #[serde(rename = "Name")]
30    pub(crate) name: String,
31    #[serde(rename = "EventConfig", skip_serializing_if = "Option::is_none")]
32    pub(crate) event_config: Option<EventConfig>,
33}
34
35#[derive(Debug, Serialize, Deserialize)]
36pub struct EventConfig {
37    #[serde(rename = "AuthProviders")]
38    pub(crate) auth_providers: Vec<AuthProvider>,
39    #[serde(rename = "ConnectionAuthModes")]
40    pub(crate) connection_auth_modes: Vec<AppSyncAuthMode>,
41    #[serde(rename = "DefaultPublishAuthModes")]
42    pub(crate) default_auth_modes: Vec<AppSyncAuthMode>,
43    #[serde(rename = "DefaultSubscribeAuthModes")]
44    pub(crate) default_subscribe_auth_modes: Vec<AppSyncAuthMode>,
45    #[serde(rename = "LogConfig", skip_serializing_if = "Option::is_none")]
46    pub(crate) log_config: Option<EventLogConfig>,
47}
48
49#[derive(Debug, Serialize, Deserialize)]
50pub struct AuthProvider {
51    #[serde(rename = "AuthType")]
52    pub(crate) auth_type: String,
53    #[serde(rename = "CognitoConfig", skip_serializing_if = "Option::is_none")]
54    pub(crate) cognito_config: Option<CognitoConfig>,
55    #[serde(rename = "LambdaAuthorizerConfig", skip_serializing_if = "Option::is_none")]
56    pub(crate) lambda_auth_config: Option<LambdaAuthorizerConfig>,
57    #[serde(rename = "OpenIDConnectConfig", skip_serializing_if = "Option::is_none")]
58    pub(crate) open_id_connect_config: Option<OpenIDConnectConfig>,
59}
60
61#[derive(Debug, Serialize, Deserialize)]
62pub struct CognitoConfig {
63    #[serde(rename = "AwsRegion")]
64    pub(crate) aws_region: String,
65    #[serde(rename = "UserPoolId")]
66    pub(crate) user_pool_id: String,
67    // AppIdClientRegex: String
68}
69
70#[derive(Debug, Serialize, Deserialize)]
71pub struct LambdaAuthorizerConfig {
72    #[serde(rename = "AuthorizerResultTtlInSeconds", skip_serializing_if = "Option::is_none")]
73    pub(crate) authorizer_result_ttl_seconds: Option<u16>,
74    #[serde(rename = "AuthorizerUri")]
75    pub(crate) authorizer_uri: String,
76    // IdentityValidationExpression: String
77}
78
79#[derive(Debug, Serialize, Deserialize)]
80pub struct OpenIDConnectConfig {
81    #[serde(rename = "AuthTTL", skip_serializing_if = "Option::is_none")]
82    pub(crate) auth_ttl_millis: Option<u32>,
83    #[serde(rename = "ClientId", skip_serializing_if = "Option::is_none")]
84    pub(crate) client_id: Option<String>,
85    #[serde(rename = "IatTTL", skip_serializing_if = "Option::is_none")]
86    pub(crate) iat_ttl_millis: Option<u32>,
87    #[serde(rename = "Issuer")]
88    pub(crate) issuer: String
89}
90
91#[derive(Debug, Serialize, Deserialize)]
92pub struct AppSyncAuthMode {
93    #[serde(rename = "AuthType", skip_serializing_if = "Option::is_none")]
94    pub(crate) auth_type: Option<String>
95}
96
97#[derive(Debug, Serialize, Deserialize)]
98pub struct EventLogConfig {
99    #[serde(rename = "CloudWatchLogsRoleArn")]
100    pub(crate) cloudwatch_logs_role_arn: String,
101    #[serde(rename = "LogLevel")]
102    pub(crate) log_level: String
103}
104
105#[derive(Debug, Serialize, Deserialize)]
106pub(crate) enum ChannelNamespaceType {
107    #[serde(rename = "AWS::AppSync::ChannelNamespace")]
108    ChannelNamespaceType
109}
110
111ref_struct!(ChannelNamespaceRef);
112
113#[derive(Debug, Serialize, Deserialize)]
114pub struct ChannelNamespace {
115    #[serde(skip)]
116    pub(crate) id: Id,
117    #[serde(skip)]
118    pub(crate) resource_id: String,
119    #[serde(rename = "Type")]
120    pub(crate) r#type: ChannelNamespaceType,
121    #[serde(rename = "Properties")]
122    pub(crate) properties: ChannelNamespaceProperties,
123}
124dto_methods!(ChannelNamespace);
125
126#[derive(Debug, Serialize, Deserialize)]
127pub struct ChannelNamespaceProperties {
128    #[serde(rename = "ApiId")]
129    pub(crate) api_id: Value,
130    #[serde(rename = "Name")]
131    pub(crate) name: String,
132    #[serde(rename = "PublishAuthModes", skip_serializing_if = "Option::is_none")]
133    pub(crate) publish_auth_modes: Option<Vec<AppSyncAuthMode>>,
134    #[serde(rename = "SubscribeAuthModes", skip_serializing_if = "Option::is_none")]
135    pub(crate) subscribe_auth_modes: Option<Vec<AppSyncAuthMode>>,
136    // CodeHandlers: String
137    // CodeS3Location: String
138    // HandlerConfigs
139}