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}