aws_sdk_textract/operation/
analyze_id.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `AnalyzeID`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct AnalyzeID;
6impl AnalyzeID {
7    /// Creates a new `AnalyzeID`
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::analyze_id::AnalyzeIdInput,
14    ) -> ::std::result::Result<
15        crate::operation::analyze_id::AnalyzeIdOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::analyze_id::AnalyzeIDError,
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::analyze_id::AnalyzeIDError>()
27                    .expect("correct error type")
28            })
29        };
30        use ::tracing::Instrument;
31        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
32            // Create a parent span for the entire operation. Includes a random, internal-only,
33            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
34            .instrument(::tracing::debug_span!(
35                "textract.AnalyzeID",
36                "rpc.service" = "textract",
37                "rpc.method" = "AnalyzeID",
38                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
39                "rpc.system" = "aws-api",
40            ))
41            .await
42            .map_err(map_err)?;
43        let output = context.finalize().map_err(map_err)?;
44        ::std::result::Result::Ok(
45            output
46                .downcast::<crate::operation::analyze_id::AnalyzeIdOutput>()
47                .expect("correct output type"),
48        )
49    }
50
51    pub(crate) async fn orchestrate_with_stop_point(
52        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
53        input: crate::operation::analyze_id::AnalyzeIdInput,
54        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
55    ) -> ::std::result::Result<
56        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
57        ::aws_smithy_runtime_api::client::result::SdkError<
58            ::aws_smithy_runtime_api::client::interceptors::context::Error,
59            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
60        >,
61    > {
62        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
63        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("textract", "AnalyzeID", input, runtime_plugins, stop_point).await
64    }
65
66    pub(crate) fn operation_runtime_plugins(
67        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
68        client_config: &crate::config::Config,
69        config_override: ::std::option::Option<crate::config::Builder>,
70    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
71        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
72        runtime_plugins = runtime_plugins.with_client_plugin(crate::auth_plugin::DefaultAuthOptionsPlugin::new(vec![
73            ::aws_runtime::auth::sigv4::SCHEME_ID,
74        ]));
75        if let ::std::option::Option::Some(config_override) = config_override {
76            for plugin in config_override.runtime_plugins.iter().cloned() {
77                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
78            }
79            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
80                config_override,
81                client_config.config.clone(),
82                &client_config.runtime_components,
83            ));
84        }
85        runtime_plugins
86    }
87}
88impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for AnalyzeID {
89    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
90        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("AnalyzeID");
91
92        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
93            AnalyzeIDRequestSerializer,
94        ));
95        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
96            AnalyzeIDResponseDeserializer,
97        ));
98
99        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
100            ::aws_smithy_runtime_api::client::auth::static_resolver::StaticAuthSchemeOptionResolverParams::new(),
101        ));
102
103        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("AnalyzeID", "textract"));
104        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
105        signing_options.double_uri_encode = true;
106        signing_options.content_sha256_header = false;
107        signing_options.normalize_uri_path = true;
108        signing_options.payload_override = None;
109
110        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
111            signing_options,
112            ..::std::default::Default::default()
113        });
114
115        ::std::option::Option::Some(cfg.freeze())
116    }
117
118    fn runtime_components(
119        &self,
120        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
121    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
122        #[allow(unused_mut)]
123        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("AnalyzeID")
124            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
125            .with_interceptor(AnalyzeIDEndpointParamsInterceptor)
126            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
127                crate::operation::analyze_id::AnalyzeIDError,
128            >::new())
129            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
130                crate::operation::analyze_id::AnalyzeIDError,
131            >::new())
132            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
133                crate::operation::analyze_id::AnalyzeIDError,
134            >::new());
135
136        ::std::borrow::Cow::Owned(rcb)
137    }
138}
139
140#[derive(Debug)]
141struct AnalyzeIDResponseDeserializer;
142impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for AnalyzeIDResponseDeserializer {
143    fn deserialize_nonstreaming(
144        &self,
145        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
146    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
147        let (success, status) = (response.status().is_success(), response.status().as_u16());
148        let headers = response.headers();
149        let body = response.body().bytes().expect("body loaded");
150        #[allow(unused_mut)]
151        let mut force_error = false;
152        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
153        let parse_result = if !success && status != 200 || force_error {
154            crate::protocol_serde::shape_analyze_id::de_analyze_id_http_error(status, headers, body)
155        } else {
156            crate::protocol_serde::shape_analyze_id::de_analyze_id_http_response(status, headers, body)
157        };
158        crate::protocol_serde::type_erase_result(parse_result)
159    }
160}
161#[derive(Debug)]
162struct AnalyzeIDRequestSerializer;
163impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for AnalyzeIDRequestSerializer {
164    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
165    fn serialize_input(
166        &self,
167        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
168        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
169    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
170        let input = input.downcast::<crate::operation::analyze_id::AnalyzeIdInput>().expect("correct type");
171        let _header_serialization_settings = _cfg
172            .load::<crate::serialization_settings::HeaderSerializationSettings>()
173            .cloned()
174            .unwrap_or_default();
175        let mut request_builder = {
176            fn uri_base(
177                _input: &crate::operation::analyze_id::AnalyzeIdInput,
178                output: &mut ::std::string::String,
179            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
180                use ::std::fmt::Write as _;
181                ::std::write!(output, "/").expect("formatting should succeed");
182                ::std::result::Result::Ok(())
183            }
184            #[allow(clippy::unnecessary_wraps)]
185            fn update_http_builder(
186                input: &crate::operation::analyze_id::AnalyzeIdInput,
187                builder: ::http::request::Builder,
188            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
189                let mut uri = ::std::string::String::new();
190                uri_base(input, &mut uri)?;
191                ::std::result::Result::Ok(builder.method("POST").uri(uri))
192            }
193            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
194            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
195            builder = _header_serialization_settings.set_default_header(
196                builder,
197                ::http::header::HeaderName::from_static("x-amz-target"),
198                "Textract.AnalyzeID",
199            );
200            builder
201        };
202        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_analyze_id::ser_analyze_id_input(&input)?);
203        if let Some(content_length) = body.content_length() {
204            let content_length = content_length.to_string();
205            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
206        }
207        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
208    }
209}
210#[derive(Debug)]
211struct AnalyzeIDEndpointParamsInterceptor;
212
213impl ::aws_smithy_runtime_api::client::interceptors::Intercept for AnalyzeIDEndpointParamsInterceptor {
214    fn name(&self) -> &'static str {
215        "AnalyzeIDEndpointParamsInterceptor"
216    }
217
218    fn read_before_execution(
219        &self,
220        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
221            '_,
222            ::aws_smithy_runtime_api::client::interceptors::context::Input,
223            ::aws_smithy_runtime_api::client::interceptors::context::Output,
224            ::aws_smithy_runtime_api::client::interceptors::context::Error,
225        >,
226        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
227    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
228        let _input = context
229            .input()
230            .downcast_ref::<AnalyzeIdInput>()
231            .ok_or("failed to downcast to AnalyzeIdInput")?;
232
233        let params = crate::config::endpoint::Params::builder()
234            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
235            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
236            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
237            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
238            .build()
239            .map_err(|err| {
240                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
241            })?;
242        cfg.interceptor_state()
243            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
244        ::std::result::Result::Ok(())
245    }
246}
247
248// The get_* functions below are generated from JMESPath expressions in the
249// operationContextParams trait. They target the operation's input shape.
250
251/// Error type for the `AnalyzeIDError` operation.
252#[non_exhaustive]
253#[derive(::std::fmt::Debug)]
254pub enum AnalyzeIDError {
255    /// <p>You aren't authorized to perform the action. Use the Amazon Resource Name (ARN) of an authorized user or IAM role to perform the operation.</p>
256    AccessDeniedException(crate::types::error::AccessDeniedException),
257    /// <p>Amazon Textract isn't able to read the document. For more information on the document limits in Amazon Textract, see <code>limits</code>.</p>
258    BadDocumentException(crate::types::error::BadDocumentException),
259    /// <p>The document can't be processed because it's too large. The maximum document size for synchronous operations 10 MB. The maximum document size for asynchronous operations is 500 MB for PDF files.</p>
260    DocumentTooLargeException(crate::types::error::DocumentTooLargeException),
261    /// <p>Amazon Textract experienced a service issue. Try your call again.</p>
262    InternalServerError(crate::types::error::InternalServerError),
263    /// <p>An input parameter violated a constraint. For example, in synchronous operations, an <code>InvalidParameterException</code> exception occurs when neither of the <code>S3Object</code> or <code>Bytes</code> values are supplied in the <code>Document</code> request parameter. Validate your parameter before calling the API operation again.</p>
264    InvalidParameterException(crate::types::error::InvalidParameterException),
265    /// <p>Amazon Textract is unable to access the S3 object that's specified in the request. for more information, <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html">Configure Access to Amazon S3</a> For troubleshooting information, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/troubleshooting.html">Troubleshooting Amazon S3</a></p>
266    InvalidS3ObjectException(crate::types::error::InvalidS3ObjectException),
267    /// <p>The number of requests exceeded your throughput limit. If you want to increase this limit, contact Amazon Textract.</p>
268    ProvisionedThroughputExceededException(crate::types::error::ProvisionedThroughputExceededException),
269    /// <p>Amazon Textract is temporarily unable to process the request. Try your call again.</p>
270    ThrottlingException(crate::types::error::ThrottlingException),
271    /// <p>The format of the input document isn't supported. Documents for operations can be in PNG, JPEG, PDF, or TIFF format.</p>
272    UnsupportedDocumentException(crate::types::error::UnsupportedDocumentException),
273    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
274    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
275    variable wildcard pattern and check `.code()`:
276     \
277    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
278     \
279    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-AnalyzeIDError) for what information is available for the error.")]
280    Unhandled(crate::error::sealed_unhandled::Unhandled),
281}
282impl AnalyzeIDError {
283    /// Creates the `AnalyzeIDError::Unhandled` variant from any error type.
284    pub fn unhandled(
285        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
286    ) -> Self {
287        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
288            source: err.into(),
289            meta: ::std::default::Default::default(),
290        })
291    }
292
293    /// Creates the `AnalyzeIDError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
294    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
295        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
296            source: err.clone().into(),
297            meta: err,
298        })
299    }
300    ///
301    /// Returns error metadata, which includes the error code, message,
302    /// request ID, and potentially additional information.
303    ///
304    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
305        match self {
306            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
307            Self::BadDocumentException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
308            Self::DocumentTooLargeException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
309            Self::InternalServerError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
310            Self::InvalidParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
311            Self::InvalidS3ObjectException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
312            Self::ProvisionedThroughputExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
313            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
314            Self::UnsupportedDocumentException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
315            Self::Unhandled(e) => &e.meta,
316        }
317    }
318    /// Returns `true` if the error kind is `AnalyzeIDError::AccessDeniedException`.
319    pub fn is_access_denied_exception(&self) -> bool {
320        matches!(self, Self::AccessDeniedException(_))
321    }
322    /// Returns `true` if the error kind is `AnalyzeIDError::BadDocumentException`.
323    pub fn is_bad_document_exception(&self) -> bool {
324        matches!(self, Self::BadDocumentException(_))
325    }
326    /// Returns `true` if the error kind is `AnalyzeIDError::DocumentTooLargeException`.
327    pub fn is_document_too_large_exception(&self) -> bool {
328        matches!(self, Self::DocumentTooLargeException(_))
329    }
330    /// Returns `true` if the error kind is `AnalyzeIDError::InternalServerError`.
331    pub fn is_internal_server_error(&self) -> bool {
332        matches!(self, Self::InternalServerError(_))
333    }
334    /// Returns `true` if the error kind is `AnalyzeIDError::InvalidParameterException`.
335    pub fn is_invalid_parameter_exception(&self) -> bool {
336        matches!(self, Self::InvalidParameterException(_))
337    }
338    /// Returns `true` if the error kind is `AnalyzeIDError::InvalidS3ObjectException`.
339    pub fn is_invalid_s3_object_exception(&self) -> bool {
340        matches!(self, Self::InvalidS3ObjectException(_))
341    }
342    /// Returns `true` if the error kind is `AnalyzeIDError::ProvisionedThroughputExceededException`.
343    pub fn is_provisioned_throughput_exceeded_exception(&self) -> bool {
344        matches!(self, Self::ProvisionedThroughputExceededException(_))
345    }
346    /// Returns `true` if the error kind is `AnalyzeIDError::ThrottlingException`.
347    pub fn is_throttling_exception(&self) -> bool {
348        matches!(self, Self::ThrottlingException(_))
349    }
350    /// Returns `true` if the error kind is `AnalyzeIDError::UnsupportedDocumentException`.
351    pub fn is_unsupported_document_exception(&self) -> bool {
352        matches!(self, Self::UnsupportedDocumentException(_))
353    }
354}
355impl ::std::error::Error for AnalyzeIDError {
356    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
357        match self {
358            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
359            Self::BadDocumentException(_inner) => ::std::option::Option::Some(_inner),
360            Self::DocumentTooLargeException(_inner) => ::std::option::Option::Some(_inner),
361            Self::InternalServerError(_inner) => ::std::option::Option::Some(_inner),
362            Self::InvalidParameterException(_inner) => ::std::option::Option::Some(_inner),
363            Self::InvalidS3ObjectException(_inner) => ::std::option::Option::Some(_inner),
364            Self::ProvisionedThroughputExceededException(_inner) => ::std::option::Option::Some(_inner),
365            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
366            Self::UnsupportedDocumentException(_inner) => ::std::option::Option::Some(_inner),
367            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
368        }
369    }
370}
371impl ::std::fmt::Display for AnalyzeIDError {
372    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
373        match self {
374            Self::AccessDeniedException(_inner) => _inner.fmt(f),
375            Self::BadDocumentException(_inner) => _inner.fmt(f),
376            Self::DocumentTooLargeException(_inner) => _inner.fmt(f),
377            Self::InternalServerError(_inner) => _inner.fmt(f),
378            Self::InvalidParameterException(_inner) => _inner.fmt(f),
379            Self::InvalidS3ObjectException(_inner) => _inner.fmt(f),
380            Self::ProvisionedThroughputExceededException(_inner) => _inner.fmt(f),
381            Self::ThrottlingException(_inner) => _inner.fmt(f),
382            Self::UnsupportedDocumentException(_inner) => _inner.fmt(f),
383            Self::Unhandled(_inner) => {
384                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
385                    write!(f, "unhandled error ({code})")
386                } else {
387                    f.write_str("unhandled error")
388                }
389            }
390        }
391    }
392}
393impl ::aws_smithy_types::retry::ProvideErrorKind for AnalyzeIDError {
394    fn code(&self) -> ::std::option::Option<&str> {
395        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
396    }
397    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
398        ::std::option::Option::None
399    }
400}
401impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for AnalyzeIDError {
402    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
403        match self {
404            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
405            Self::BadDocumentException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
406            Self::DocumentTooLargeException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
407            Self::InternalServerError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
408            Self::InvalidParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
409            Self::InvalidS3ObjectException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
410            Self::ProvisionedThroughputExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
411            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
412            Self::UnsupportedDocumentException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
413            Self::Unhandled(_inner) => &_inner.meta,
414        }
415    }
416}
417impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for AnalyzeIDError {
418    fn create_unhandled_error(
419        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
420        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
421    ) -> Self {
422        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
423            source,
424            meta: meta.unwrap_or_default(),
425        })
426    }
427}
428impl ::aws_types::request_id::RequestId for crate::operation::analyze_id::AnalyzeIDError {
429    fn request_id(&self) -> Option<&str> {
430        self.meta().request_id()
431    }
432}
433
434pub use crate::operation::analyze_id::_analyze_id_output::AnalyzeIdOutput;
435
436pub use crate::operation::analyze_id::_analyze_id_input::AnalyzeIdInput;
437
438mod _analyze_id_input;
439
440mod _analyze_id_output;
441
442/// Builders
443pub mod builders;