aws_sdk_verifiedpermissions/operation/create_policy_template/builders.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_policy_template::_create_policy_template_output::CreatePolicyTemplateOutputBuilder;
3
4pub use crate::operation::create_policy_template::_create_policy_template_input::CreatePolicyTemplateInputBuilder;
5
6impl crate::operation::create_policy_template::builders::CreatePolicyTemplateInputBuilder {
7 /// Sends a request with this input using the given client.
8 pub async fn send_with(
9 self,
10 client: &crate::Client,
11 ) -> ::std::result::Result<
12 crate::operation::create_policy_template::CreatePolicyTemplateOutput,
13 ::aws_smithy_runtime_api::client::result::SdkError<
14 crate::operation::create_policy_template::CreatePolicyTemplateError,
15 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16 >,
17 > {
18 let mut fluent_builder = client.create_policy_template();
19 fluent_builder.inner = self;
20 fluent_builder.send().await
21 }
22}
23/// Fluent builder constructing a request to `CreatePolicyTemplate`.
24///
25/// <p>Creates a policy template. A template can use placeholders for the principal and resource. A template must be instantiated into a policy by associating it with specific principals and resources to use for the placeholders. That instantiated policy can then be considered in authorization decisions. The instantiated policy works identically to any other policy, except that it is dynamically linked to the template. If the template changes, then any policies that are linked to that template are immediately updated as well.</p><note>
26/// <p>Verified Permissions is <i> <a href="https://wikipedia.org/wiki/Eventual_consistency">eventually consistent</a> </i>. It can take a few seconds for a new or changed element to propagate through the service and be visible in the results of other Verified Permissions operations.</p>
27/// </note>
28#[derive(::std::clone::Clone, ::std::fmt::Debug)]
29pub struct CreatePolicyTemplateFluentBuilder {
30 handle: ::std::sync::Arc<crate::client::Handle>,
31 inner: crate::operation::create_policy_template::builders::CreatePolicyTemplateInputBuilder,
32 config_override: ::std::option::Option<crate::config::Builder>,
33}
34impl
35 crate::client::customize::internal::CustomizableSend<
36 crate::operation::create_policy_template::CreatePolicyTemplateOutput,
37 crate::operation::create_policy_template::CreatePolicyTemplateError,
38 > for CreatePolicyTemplateFluentBuilder
39{
40 fn send(
41 self,
42 config_override: crate::config::Builder,
43 ) -> crate::client::customize::internal::BoxFuture<
44 crate::client::customize::internal::SendResult<
45 crate::operation::create_policy_template::CreatePolicyTemplateOutput,
46 crate::operation::create_policy_template::CreatePolicyTemplateError,
47 >,
48 > {
49 ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
50 }
51}
52impl CreatePolicyTemplateFluentBuilder {
53 /// Creates a new `CreatePolicyTemplateFluentBuilder`.
54 pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
55 Self {
56 handle,
57 inner: ::std::default::Default::default(),
58 config_override: ::std::option::Option::None,
59 }
60 }
61 /// Access the CreatePolicyTemplate as a reference.
62 pub fn as_input(&self) -> &crate::operation::create_policy_template::builders::CreatePolicyTemplateInputBuilder {
63 &self.inner
64 }
65 /// Sends the request and returns the response.
66 ///
67 /// If an error occurs, an `SdkError` will be returned with additional details that
68 /// can be matched against.
69 ///
70 /// By default, any retryable failures will be retried twice. Retry behavior
71 /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
72 /// set when configuring the client.
73 pub async fn send(
74 self,
75 ) -> ::std::result::Result<
76 crate::operation::create_policy_template::CreatePolicyTemplateOutput,
77 ::aws_smithy_runtime_api::client::result::SdkError<
78 crate::operation::create_policy_template::CreatePolicyTemplateError,
79 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
80 >,
81 > {
82 let input = self
83 .inner
84 .build()
85 .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
86 let runtime_plugins = crate::operation::create_policy_template::CreatePolicyTemplate::operation_runtime_plugins(
87 self.handle.runtime_plugins.clone(),
88 &self.handle.conf,
89 self.config_override,
90 );
91 crate::operation::create_policy_template::CreatePolicyTemplate::orchestrate(&runtime_plugins, input).await
92 }
93
94 /// Consumes this builder, creating a customizable operation that can be modified before being sent.
95 pub fn customize(
96 self,
97 ) -> crate::client::customize::CustomizableOperation<
98 crate::operation::create_policy_template::CreatePolicyTemplateOutput,
99 crate::operation::create_policy_template::CreatePolicyTemplateError,
100 Self,
101 > {
102 crate::client::customize::CustomizableOperation::new(self)
103 }
104 pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
105 self.set_config_override(::std::option::Option::Some(config_override.into()));
106 self
107 }
108
109 pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
110 self.config_override = config_override;
111 self
112 }
113 /// <p>Specifies a unique, case-sensitive ID that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time. Passing the same value to a later call to an operation requires that you also pass the same value for all other parameters. We recommend that you use a <a href="https://wikipedia.org/wiki/Universally_unique_identifier">UUID type of value.</a>.</p>
114 /// <p>If you don't provide this value, then Amazon Web Services generates a random one for you.</p>
115 /// <p>If you retry the operation with the same <code>ClientToken</code>, but with different parameters, the retry fails with an <code>ConflictException</code> error.</p>
116 /// <p>Verified Permissions recognizes a <code>ClientToken</code> for eight hours. After eight hours, the next request with the same parameters performs the operation again regardless of the value of <code>ClientToken</code>.</p>
117 pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
118 self.inner = self.inner.client_token(input.into());
119 self
120 }
121 /// <p>Specifies a unique, case-sensitive ID that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time. Passing the same value to a later call to an operation requires that you also pass the same value for all other parameters. We recommend that you use a <a href="https://wikipedia.org/wiki/Universally_unique_identifier">UUID type of value.</a>.</p>
122 /// <p>If you don't provide this value, then Amazon Web Services generates a random one for you.</p>
123 /// <p>If you retry the operation with the same <code>ClientToken</code>, but with different parameters, the retry fails with an <code>ConflictException</code> error.</p>
124 /// <p>Verified Permissions recognizes a <code>ClientToken</code> for eight hours. After eight hours, the next request with the same parameters performs the operation again regardless of the value of <code>ClientToken</code>.</p>
125 pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
126 self.inner = self.inner.set_client_token(input);
127 self
128 }
129 /// <p>Specifies a unique, case-sensitive ID that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time. Passing the same value to a later call to an operation requires that you also pass the same value for all other parameters. We recommend that you use a <a href="https://wikipedia.org/wiki/Universally_unique_identifier">UUID type of value.</a>.</p>
130 /// <p>If you don't provide this value, then Amazon Web Services generates a random one for you.</p>
131 /// <p>If you retry the operation with the same <code>ClientToken</code>, but with different parameters, the retry fails with an <code>ConflictException</code> error.</p>
132 /// <p>Verified Permissions recognizes a <code>ClientToken</code> for eight hours. After eight hours, the next request with the same parameters performs the operation again regardless of the value of <code>ClientToken</code>.</p>
133 pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
134 self.inner.get_client_token()
135 }
136 /// <p>The ID of the policy store in which to create the policy template.</p>
137 pub fn policy_store_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
138 self.inner = self.inner.policy_store_id(input.into());
139 self
140 }
141 /// <p>The ID of the policy store in which to create the policy template.</p>
142 pub fn set_policy_store_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
143 self.inner = self.inner.set_policy_store_id(input);
144 self
145 }
146 /// <p>The ID of the policy store in which to create the policy template.</p>
147 pub fn get_policy_store_id(&self) -> &::std::option::Option<::std::string::String> {
148 self.inner.get_policy_store_id()
149 }
150 /// <p>Specifies a description for the policy template.</p>
151 pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
152 self.inner = self.inner.description(input.into());
153 self
154 }
155 /// <p>Specifies a description for the policy template.</p>
156 pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
157 self.inner = self.inner.set_description(input);
158 self
159 }
160 /// <p>Specifies a description for the policy template.</p>
161 pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
162 self.inner.get_description()
163 }
164 /// <p>Specifies the content that you want to use for the new policy template, written in the Cedar policy language.</p>
165 pub fn statement(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
166 self.inner = self.inner.statement(input.into());
167 self
168 }
169 /// <p>Specifies the content that you want to use for the new policy template, written in the Cedar policy language.</p>
170 pub fn set_statement(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
171 self.inner = self.inner.set_statement(input);
172 self
173 }
174 /// <p>Specifies the content that you want to use for the new policy template, written in the Cedar policy language.</p>
175 pub fn get_statement(&self) -> &::std::option::Option<::std::string::String> {
176 self.inner.get_statement()
177 }
178}