aws_sdk_redshift/operation/
delete_integration.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `DeleteIntegration`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct DeleteIntegration;
6impl DeleteIntegration {
7    /// Creates a new `DeleteIntegration`
8    pub fn new() -> Self {
9        Self
10    }
11    pub(crate) async fn orchestrate(
12        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
13        input: crate::operation::delete_integration::DeleteIntegrationInput,
14    ) -> ::std::result::Result<
15        crate::operation::delete_integration::DeleteIntegrationOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::delete_integration::DeleteIntegrationError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err = |err: ::aws_smithy_runtime_api::client::result::SdkError<
22            ::aws_smithy_runtime_api::client::interceptors::context::Error,
23            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
24        >| {
25            err.map_service_error(|err| {
26                err.downcast::<crate::operation::delete_integration::DeleteIntegrationError>()
27                    .expect("correct error type")
28            })
29        };
30        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
31            .await
32            .map_err(map_err)?;
33        let output = context.finalize().map_err(map_err)?;
34        ::std::result::Result::Ok(
35            output
36                .downcast::<crate::operation::delete_integration::DeleteIntegrationOutput>()
37                .expect("correct output type"),
38        )
39    }
40
41    pub(crate) async fn orchestrate_with_stop_point(
42        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
43        input: crate::operation::delete_integration::DeleteIntegrationInput,
44        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
45    ) -> ::std::result::Result<
46        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
47        ::aws_smithy_runtime_api::client::result::SdkError<
48            ::aws_smithy_runtime_api::client::interceptors::context::Error,
49            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
50        >,
51    > {
52        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
53        use ::tracing::Instrument;
54        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("Redshift", "DeleteIntegration", input, runtime_plugins, stop_point)
55            // Create a parent span for the entire operation. Includes a random, internal-only,
56            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
57            .instrument(::tracing::debug_span!(
58                "Redshift.DeleteIntegration",
59                "rpc.service" = "Redshift",
60                "rpc.method" = "DeleteIntegration",
61                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
62                "rpc.system" = "aws-api",
63            ))
64            .await
65    }
66
67    pub(crate) fn operation_runtime_plugins(
68        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
69        client_config: &crate::config::Config,
70        config_override: ::std::option::Option<crate::config::Builder>,
71    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
72        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
73        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
74            ::aws_runtime::auth::sigv4::SCHEME_ID,
75        ]));
76        if let ::std::option::Option::Some(config_override) = config_override {
77            for plugin in config_override.runtime_plugins.iter().cloned() {
78                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
79            }
80            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
81                config_override,
82                client_config.config.clone(),
83                &client_config.runtime_components,
84            ));
85        }
86        runtime_plugins
87    }
88}
89impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for DeleteIntegration {
90    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
91        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("DeleteIntegration");
92
93        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
94            DeleteIntegrationRequestSerializer,
95        ));
96        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
97            DeleteIntegrationResponseDeserializer,
98        ));
99
100        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
101            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
102        ));
103
104        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new(
105            "DeleteIntegration",
106            "Redshift",
107        ));
108        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
109        signing_options.double_uri_encode = true;
110        signing_options.content_sha256_header = false;
111        signing_options.normalize_uri_path = true;
112        signing_options.payload_override = None;
113
114        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
115            signing_options,
116            ..::std::default::Default::default()
117        });
118
119        ::std::option::Option::Some(cfg.freeze())
120    }
121
122    fn runtime_components(
123        &self,
124        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
125    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
126        #[allow(unused_mut)]
127        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("DeleteIntegration")
128            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
129            .with_interceptor(DeleteIntegrationEndpointParamsInterceptor)
130            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
131                crate::operation::delete_integration::DeleteIntegrationError,
132            >::new())
133            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
134                crate::operation::delete_integration::DeleteIntegrationError,
135            >::new())
136            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
137                crate::operation::delete_integration::DeleteIntegrationError,
138            >::new());
139
140        ::std::borrow::Cow::Owned(rcb)
141    }
142}
143
144#[derive(Debug)]
145struct DeleteIntegrationResponseDeserializer;
146impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for DeleteIntegrationResponseDeserializer {
147    fn deserialize_nonstreaming(
148        &self,
149        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
150    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
151        let (success, status) = (response.status().is_success(), response.status().as_u16());
152        let headers = response.headers();
153        let body = response.body().bytes().expect("body loaded");
154        #[allow(unused_mut)]
155        let mut force_error = false;
156        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
157        let parse_result = if !success && status != 200 || force_error {
158            crate::protocol_serde::shape_delete_integration::de_delete_integration_http_error(status, headers, body)
159        } else {
160            crate::protocol_serde::shape_delete_integration::de_delete_integration_http_response(status, headers, body)
161        };
162        crate::protocol_serde::type_erase_result(parse_result)
163    }
164}
165#[derive(Debug)]
166struct DeleteIntegrationRequestSerializer;
167impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for DeleteIntegrationRequestSerializer {
168    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
169    fn serialize_input(
170        &self,
171        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
172        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
173    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
174        let input = input
175            .downcast::<crate::operation::delete_integration::DeleteIntegrationInput>()
176            .expect("correct type");
177        let _header_serialization_settings = _cfg
178            .load::<crate::serialization_settings::HeaderSerializationSettings>()
179            .cloned()
180            .unwrap_or_default();
181        let mut request_builder = {
182            fn uri_base(
183                _input: &crate::operation::delete_integration::DeleteIntegrationInput,
184                output: &mut ::std::string::String,
185            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
186                use ::std::fmt::Write as _;
187                ::std::write!(output, "/").expect("formatting should succeed");
188                ::std::result::Result::Ok(())
189            }
190            #[allow(clippy::unnecessary_wraps)]
191            fn update_http_builder(
192                input: &crate::operation::delete_integration::DeleteIntegrationInput,
193                builder: ::http::request::Builder,
194            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
195                let mut uri = ::std::string::String::new();
196                uri_base(input, &mut uri)?;
197                ::std::result::Result::Ok(builder.method("POST").uri(uri))
198            }
199            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
200            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-www-form-urlencoded");
201            builder
202        };
203        let body = ::aws_smithy_types::body::SdkBody::from(
204            crate::protocol_serde::shape_delete_integration_input::ser_delete_integration_input_input_input(&input)?,
205        );
206        if let Some(content_length) = body.content_length() {
207            let content_length = content_length.to_string();
208            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
209        }
210        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
211    }
212}
213#[derive(Debug)]
214struct DeleteIntegrationEndpointParamsInterceptor;
215
216impl ::aws_smithy_runtime_api::client::interceptors::Intercept for DeleteIntegrationEndpointParamsInterceptor {
217    fn name(&self) -> &'static str {
218        "DeleteIntegrationEndpointParamsInterceptor"
219    }
220
221    fn read_before_execution(
222        &self,
223        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
224            '_,
225            ::aws_smithy_runtime_api::client::interceptors::context::Input,
226            ::aws_smithy_runtime_api::client::interceptors::context::Output,
227            ::aws_smithy_runtime_api::client::interceptors::context::Error,
228        >,
229        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
230    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
231        let _input = context
232            .input()
233            .downcast_ref::<DeleteIntegrationInput>()
234            .ok_or("failed to downcast to DeleteIntegrationInput")?;
235
236        let params = crate::config::endpoint::Params::builder()
237            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
238            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
239            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
240            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
241            .build()
242            .map_err(|err| {
243                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
244            })?;
245        cfg.interceptor_state()
246            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
247        ::std::result::Result::Ok(())
248    }
249}
250
251// The get_* functions below are generated from JMESPath expressions in the
252// operationContextParams trait. They target the operation's input shape.
253
254/// Error type for the `DeleteIntegrationError` operation.
255#[non_exhaustive]
256#[derive(::std::fmt::Debug)]
257pub enum DeleteIntegrationError {
258    /// <p>A conflicting conditional operation is currently in progress against this resource. This typically occurs when there are multiple requests being made to the same resource at the same time, and these requests conflict with each other.</p>
259    IntegrationConflictOperationFault(crate::types::error::IntegrationConflictOperationFault),
260    /// <p>The integration is in an invalid state and can't perform the requested operation.</p>
261    IntegrationConflictStateFault(crate::types::error::IntegrationConflictStateFault),
262    /// <p>The integration can't be found.</p>
263    IntegrationNotFoundFault(crate::types::error::IntegrationNotFoundFault),
264    /// <p>The requested operation isn't supported.</p>
265    UnsupportedOperationFault(crate::types::error::UnsupportedOperationFault),
266    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
267    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
268    variable wildcard pattern and check `.code()`:
269     \
270    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
271     \
272    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-DeleteIntegrationError) for what information is available for the error.")]
273    Unhandled(crate::error::sealed_unhandled::Unhandled),
274}
275impl DeleteIntegrationError {
276    /// Creates the `DeleteIntegrationError::Unhandled` variant from any error type.
277    pub fn unhandled(
278        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
279    ) -> Self {
280        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
281            source: err.into(),
282            meta: ::std::default::Default::default(),
283        })
284    }
285
286    /// Creates the `DeleteIntegrationError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
287    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
288        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
289            source: err.clone().into(),
290            meta: err,
291        })
292    }
293    ///
294    /// Returns error metadata, which includes the error code, message,
295    /// request ID, and potentially additional information.
296    ///
297    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
298        match self {
299            Self::IntegrationConflictOperationFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
300            Self::IntegrationConflictStateFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
301            Self::IntegrationNotFoundFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
302            Self::UnsupportedOperationFault(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
303            Self::Unhandled(e) => &e.meta,
304        }
305    }
306    /// Returns `true` if the error kind is `DeleteIntegrationError::IntegrationConflictOperationFault`.
307    pub fn is_integration_conflict_operation_fault(&self) -> bool {
308        matches!(self, Self::IntegrationConflictOperationFault(_))
309    }
310    /// Returns `true` if the error kind is `DeleteIntegrationError::IntegrationConflictStateFault`.
311    pub fn is_integration_conflict_state_fault(&self) -> bool {
312        matches!(self, Self::IntegrationConflictStateFault(_))
313    }
314    /// Returns `true` if the error kind is `DeleteIntegrationError::IntegrationNotFoundFault`.
315    pub fn is_integration_not_found_fault(&self) -> bool {
316        matches!(self, Self::IntegrationNotFoundFault(_))
317    }
318    /// Returns `true` if the error kind is `DeleteIntegrationError::UnsupportedOperationFault`.
319    pub fn is_unsupported_operation_fault(&self) -> bool {
320        matches!(self, Self::UnsupportedOperationFault(_))
321    }
322}
323impl ::std::error::Error for DeleteIntegrationError {
324    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
325        match self {
326            Self::IntegrationConflictOperationFault(_inner) => ::std::option::Option::Some(_inner),
327            Self::IntegrationConflictStateFault(_inner) => ::std::option::Option::Some(_inner),
328            Self::IntegrationNotFoundFault(_inner) => ::std::option::Option::Some(_inner),
329            Self::UnsupportedOperationFault(_inner) => ::std::option::Option::Some(_inner),
330            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
331        }
332    }
333}
334impl ::std::fmt::Display for DeleteIntegrationError {
335    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
336        match self {
337            Self::IntegrationConflictOperationFault(_inner) => _inner.fmt(f),
338            Self::IntegrationConflictStateFault(_inner) => _inner.fmt(f),
339            Self::IntegrationNotFoundFault(_inner) => _inner.fmt(f),
340            Self::UnsupportedOperationFault(_inner) => _inner.fmt(f),
341            Self::Unhandled(_inner) => {
342                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
343                    write!(f, "unhandled error ({code})")
344                } else {
345                    f.write_str("unhandled error")
346                }
347            }
348        }
349    }
350}
351impl ::aws_smithy_types::retry::ProvideErrorKind for DeleteIntegrationError {
352    fn code(&self) -> ::std::option::Option<&str> {
353        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
354    }
355    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
356        ::std::option::Option::None
357    }
358}
359impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for DeleteIntegrationError {
360    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
361        match self {
362            Self::IntegrationConflictOperationFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
363            Self::IntegrationConflictStateFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
364            Self::IntegrationNotFoundFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
365            Self::UnsupportedOperationFault(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
366            Self::Unhandled(_inner) => &_inner.meta,
367        }
368    }
369}
370impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for DeleteIntegrationError {
371    fn create_unhandled_error(
372        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
373        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
374    ) -> Self {
375        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
376            source,
377            meta: meta.unwrap_or_default(),
378        })
379    }
380}
381impl ::aws_types::request_id::RequestId for crate::operation::delete_integration::DeleteIntegrationError {
382    fn request_id(&self) -> Option<&str> {
383        self.meta().request_id()
384    }
385}
386
387pub use crate::operation::delete_integration::_delete_integration_output::DeleteIntegrationOutput;
388
389pub use crate::operation::delete_integration::_delete_integration_input::DeleteIntegrationInput;
390
391mod _delete_integration_input;
392
393mod _delete_integration_output;
394
395/// Builders
396pub mod builders;