four/iam/property/
action.rs

1use dyn_clone::DynClone;
2
3pub trait Action: erased_serde::Serialize + DynClone + std::fmt::Debug {}
4
5erased_serde::serialize_trait_object!(Action);
6dyn_clone::clone_trait_object!(Action);
7
8macro_rules! impl_action {
9    ( $service:ident, $action:ident, [$($t:ident),*] ) => {
10        pub mod $service {
11            use serde::Serialize;
12
13            pub trait $action: super::Action {}
14            erased_serde::serialize_trait_object!($action);
15            dyn_clone::clone_trait_object!($action);
16
17            $(
18            #[derive(Debug, Clone, Copy)]
19            pub struct $t;
20
21            impl super::Action for $t {}
22            impl $action for $t {}
23
24            impl Serialize for $t {
25                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
26                where
27                    S: serde::Serializer,
28                {
29                    let s = format!("{}:{}", stringify!($service), stringify!($t));
30                    serializer.serialize_str(&s)
31                }
32            })*
33        }
34    };
35}
36
37impl_action!(sts, StsAction, [AssumeRole]);
38impl_action!(
39    lambda,
40    LambdaAction,
41    [
42        AddLayerVersionPermission,
43        AddPermission,
44        CreateAlias,
45        CreateCodeSigningConfig,
46        CreateEventSourceMapping,
47        CreateFunction,
48        CreateFunctionUrlConfig,
49        DeleteAlias,
50        DeleteCodeSigningConfig,
51        DeleteEventSourceMapping,
52        DeleteFunction,
53        DeleteFunctionCodeSigningConfig,
54        DeleteFunctionConcurrency,
55        DeleteFunctionEventInvokeConfig,
56        DeleteFunctionUrlConfig,
57        DeleteLayerVersion,
58        DeleteProvisionedConcurrencyConfig,
59        DisableReplication,
60        EnableReplication,
61        GetAccountSettings,
62        GetAlias,
63        GetCodeSigningConfig,
64        GetEventSourceMapping,
65        GetFunction,
66        GetFunctionCodeSigningConfig,
67        GetFunctionConcurrency,
68        GetFunctionConfiguration,
69        GetFunctionEventInvokeConfig,
70        GetFunctionUrlConfig,
71        GetLayerVersion,
72        GetLayerVersionPolicy,
73        GetPolicy,
74        GetProvisionedConcurrencyConfig,
75        GetRuntimeManagementConfig,
76        InvokeAsync,
77        InvokeFunction,
78        InvokeFunctionUrl,
79        ListAliases,
80        ListCodeSigningConfigs,
81        ListEventSourceMappings,
82        ListFuctionEventInvokeConfigs,
83        ListFunctionUrlConfigs,
84        ListFunctions,
85        ListFunctionsByCodeSigningConfig,
86        ListLayerVersions,
87        ListLayers,
88        ListProvisionedConcurrencyConfigs,
89        ListTags,
90        ListVersionsByFunction,
91        PublishLayerVersion,
92        PutFunctionCodeSigningConfig,
93        PutFunctionConcurrency,
94        PutFunctionEventInvokeConfig,
95        PutProvisionedConcurrencyConfig,
96        PutRuntimeManagementConfig,
97        RemoveLayerVersionPermission,
98        RemovePermission,
99        TagResource,
100        UntagResource,
101        UpdateAlias,
102        UpdateCodeSigningConfig,
103        UpdateEventSourceMapping,
104        UpdateFunctionCode,
105        UpdateFunctionCodeSigningConfig,
106        UpdateFunctionConfiguration,
107        UpdateFunctionEventInvokeConfig,
108        UpdateFunctionUrlConfig
109    ]
110);