aws_sdk_sns/operation/add_permission/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::add_permission::_add_permission_output::AddPermissionOutputBuilder;
3
4pub use crate::operation::add_permission::_add_permission_input::AddPermissionInputBuilder;
5
6impl crate::operation::add_permission::builders::AddPermissionInputBuilder {
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::add_permission::AddPermissionOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::add_permission::AddPermissionError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.add_permission();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `AddPermission`.
24///
25/// <p>Adds a statement to a topic's access control policy, granting access for the specified Amazon Web Services accounts to the specified actions.</p><note>
26/// <p>To remove the ability to change topic permissions, you must deny permissions to the <code>AddPermission</code>, <code>RemovePermission</code>, and <code>SetTopicAttributes</code> actions in your IAM policy.</p>
27/// </note>
28#[derive(::std::clone::Clone, ::std::fmt::Debug)]
29pub struct AddPermissionFluentBuilder {
30    handle: ::std::sync::Arc<crate::client::Handle>,
31    inner: crate::operation::add_permission::builders::AddPermissionInputBuilder,
32    config_override: ::std::option::Option<crate::config::Builder>,
33}
34impl
35    crate::client::customize::internal::CustomizableSend<
36        crate::operation::add_permission::AddPermissionOutput,
37        crate::operation::add_permission::AddPermissionError,
38    > for AddPermissionFluentBuilder
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::add_permission::AddPermissionOutput,
46            crate::operation::add_permission::AddPermissionError,
47        >,
48    > {
49        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
50    }
51}
52impl AddPermissionFluentBuilder {
53    /// Creates a new `AddPermissionFluentBuilder`.
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 AddPermission as a reference.
62    pub fn as_input(&self) -> &crate::operation::add_permission::builders::AddPermissionInputBuilder {
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::add_permission::AddPermissionOutput,
77        ::aws_smithy_runtime_api::client::result::SdkError<
78            crate::operation::add_permission::AddPermissionError,
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::add_permission::AddPermission::operation_runtime_plugins(
87            self.handle.runtime_plugins.clone(),
88            &self.handle.conf,
89            self.config_override,
90        );
91        crate::operation::add_permission::AddPermission::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::add_permission::AddPermissionOutput,
99        crate::operation::add_permission::AddPermissionError,
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>The ARN of the topic whose access control policy you wish to modify.</p>
114    pub fn topic_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
115        self.inner = self.inner.topic_arn(input.into());
116        self
117    }
118    /// <p>The ARN of the topic whose access control policy you wish to modify.</p>
119    pub fn set_topic_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
120        self.inner = self.inner.set_topic_arn(input);
121        self
122    }
123    /// <p>The ARN of the topic whose access control policy you wish to modify.</p>
124    pub fn get_topic_arn(&self) -> &::std::option::Option<::std::string::String> {
125        self.inner.get_topic_arn()
126    }
127    /// <p>A unique identifier for the new policy statement.</p>
128    pub fn label(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
129        self.inner = self.inner.label(input.into());
130        self
131    }
132    /// <p>A unique identifier for the new policy statement.</p>
133    pub fn set_label(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
134        self.inner = self.inner.set_label(input);
135        self
136    }
137    /// <p>A unique identifier for the new policy statement.</p>
138    pub fn get_label(&self) -> &::std::option::Option<::std::string::String> {
139        self.inner.get_label()
140    }
141    ///
142    /// Appends an item to `AWSAccountId`.
143    ///
144    /// To override the contents of this collection use [`set_aws_account_id`](Self::set_aws_account_id).
145    ///
146    /// <p>The Amazon Web Services account IDs of the users (principals) who will be given access to the specified actions. The users must have Amazon Web Services account, but do not need to be signed up for this service.</p>
147    pub fn aws_account_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
148        self.inner = self.inner.aws_account_id(input.into());
149        self
150    }
151    /// <p>The Amazon Web Services account IDs of the users (principals) who will be given access to the specified actions. The users must have Amazon Web Services account, but do not need to be signed up for this service.</p>
152    pub fn set_aws_account_id(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
153        self.inner = self.inner.set_aws_account_id(input);
154        self
155    }
156    /// <p>The Amazon Web Services account IDs of the users (principals) who will be given access to the specified actions. The users must have Amazon Web Services account, but do not need to be signed up for this service.</p>
157    pub fn get_aws_account_id(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
158        self.inner.get_aws_account_id()
159    }
160    ///
161    /// Appends an item to `ActionName`.
162    ///
163    /// To override the contents of this collection use [`set_action_name`](Self::set_action_name).
164    ///
165    /// <p>The action you want to allow for the specified principal(s).</p>
166    /// <p>Valid values: Any Amazon SNS action name, for example <code>Publish</code>.</p>
167    pub fn action_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
168        self.inner = self.inner.action_name(input.into());
169        self
170    }
171    /// <p>The action you want to allow for the specified principal(s).</p>
172    /// <p>Valid values: Any Amazon SNS action name, for example <code>Publish</code>.</p>
173    pub fn set_action_name(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
174        self.inner = self.inner.set_action_name(input);
175        self
176    }
177    /// <p>The action you want to allow for the specified principal(s).</p>
178    /// <p>Valid values: Any Amazon SNS action name, for example <code>Publish</code>.</p>
179    pub fn get_action_name(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
180        self.inner.get_action_name()
181    }
182}