four/iam/property/
policy_document.rs

1use crate::iam::property::statement::Statement;
2use derive_new::new;
3use serde::Serialize;
4
5#[non_exhaustive]
6#[derive(Debug, Clone, Serialize)]
7pub enum PolicyDocumentVersion {
8    #[serde(rename(serialize = "2012-10-17"))]
9    V2012_10_17,
10    #[serde(rename(serialize = "2008-10-17"))]
11    V2008_10_17,
12}
13
14impl PolicyDocumentVersion {
15    pub fn latest() -> PolicyDocumentVersion {
16        PolicyDocumentVersion::V2012_10_17
17    }
18}
19
20#[derive(Debug, Clone, Serialize, new)]
21#[serde(rename_all = "PascalCase")]
22pub struct PolicyDocument {
23    version: PolicyDocumentVersion,
24    statement: Vec<Statement>,
25}
26
27impl PolicyDocument {
28    pub fn latest(statement: Vec<Statement>) -> PolicyDocument {
29        PolicyDocument {
30            version: PolicyDocumentVersion::latest(),
31            statement,
32        }
33    }
34}