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        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::analyze_id::AnalyzeIdOutput>()
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::analyze_id::AnalyzeIdInput,
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("Textract", "AnalyzeID", 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                "Textract.AnalyzeID",
59                "rpc.service" = "Textract",
60                "rpc.method" = "AnalyzeID",
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 AnalyzeID {
90    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
91        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("AnalyzeID");
92
93        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
94            AnalyzeIDRequestSerializer,
95        ));
96        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
97            AnalyzeIDResponseDeserializer,
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("AnalyzeID", "Textract"));
105        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
106        signing_options.double_uri_encode = true;
107        signing_options.content_sha256_header = false;
108        signing_options.normalize_uri_path = true;
109        signing_options.payload_override = None;
110
111        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
112            signing_options,
113            ..::std::default::Default::default()
114        });
115
116        ::std::option::Option::Some(cfg.freeze())
117    }
118
119    fn runtime_components(
120        &self,
121        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
122    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
123        #[allow(unused_mut)]
124        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("AnalyzeID")
125            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
126            .with_interceptor(AnalyzeIDEndpointParamsInterceptor)
127            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
128                crate::operation::analyze_id::AnalyzeIDError,
129            >::new())
130            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
131                crate::operation::analyze_id::AnalyzeIDError,
132            >::new())
133            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
134                crate::operation::analyze_id::AnalyzeIDError,
135            >::new());
136
137        ::std::borrow::Cow::Owned(rcb)
138    }
139}
140
141#[derive(Debug)]
142struct AnalyzeIDResponseDeserializer;
143impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for AnalyzeIDResponseDeserializer {
144    fn deserialize_nonstreaming(
145        &self,
146        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
147    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
148        let (success, status) = (response.status().is_success(), response.status().as_u16());
149        let headers = response.headers();
150        let body = response.body().bytes().expect("body loaded");
151        #[allow(unused_mut)]
152        let mut force_error = false;
153        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
154        let parse_result = if !success && status != 200 || force_error {
155            crate::protocol_serde::shape_analyze_id::de_analyze_id_http_error(status, headers, body)
156        } else {
157            crate::protocol_serde::shape_analyze_id::de_analyze_id_http_response(status, headers, body)
158        };
159        crate::protocol_serde::type_erase_result(parse_result)
160    }
161}
162#[derive(Debug)]
163struct AnalyzeIDRequestSerializer;
164impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for AnalyzeIDRequestSerializer {
165    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
166    fn serialize_input(
167        &self,
168        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
169        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
170    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
171        let input = input.downcast::<crate::operation::analyze_id::AnalyzeIdInput>().expect("correct type");
172        let _header_serialization_settings = _cfg
173            .load::<crate::serialization_settings::HeaderSerializationSettings>()
174            .cloned()
175            .unwrap_or_default();
176        let mut request_builder = {
177            fn uri_base(
178                _input: &crate::operation::analyze_id::AnalyzeIdInput,
179                output: &mut ::std::string::String,
180            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
181                use ::std::fmt::Write as _;
182                ::std::write!(output, "/").expect("formatting should succeed");
183                ::std::result::Result::Ok(())
184            }
185            #[allow(clippy::unnecessary_wraps)]
186            fn update_http_builder(
187                input: &crate::operation::analyze_id::AnalyzeIdInput,
188                builder: ::http::request::Builder,
189            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
190                let mut uri = ::std::string::String::new();
191                uri_base(input, &mut uri)?;
192                ::std::result::Result::Ok(builder.method("POST").uri(uri))
193            }
194            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
195            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
196            builder = _header_serialization_settings.set_default_header(
197                builder,
198                ::http::header::HeaderName::from_static("x-amz-target"),
199                "Textract.AnalyzeID",
200            );
201            builder
202        };
203        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_analyze_id::ser_analyze_id_input(&input)?);
204        if let Some(content_length) = body.content_length() {
205            let content_length = content_length.to_string();
206            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
207        }
208        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
209    }
210}
211#[derive(Debug)]
212struct AnalyzeIDEndpointParamsInterceptor;
213
214impl ::aws_smithy_runtime_api::client::interceptors::Intercept for AnalyzeIDEndpointParamsInterceptor {
215    fn name(&self) -> &'static str {
216        "AnalyzeIDEndpointParamsInterceptor"
217    }
218
219    fn read_before_execution(
220        &self,
221        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
222            '_,
223            ::aws_smithy_runtime_api::client::interceptors::context::Input,
224            ::aws_smithy_runtime_api::client::interceptors::context::Output,
225            ::aws_smithy_runtime_api::client::interceptors::context::Error,
226        >,
227        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
228    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
229        let _input = context
230            .input()
231            .downcast_ref::<AnalyzeIdInput>()
232            .ok_or("failed to downcast to AnalyzeIdInput")?;
233
234        let params = crate::config::endpoint::Params::builder()
235            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
236            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
237            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
238            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
239            .build()
240            .map_err(|err| {
241                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
242            })?;
243        cfg.interceptor_state()
244            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
245        ::std::result::Result::Ok(())
246    }
247}
248
249// The get_* functions below are generated from JMESPath expressions in the
250// operationContextParams trait. They target the operation's input shape.
251
252/// Error type for the `AnalyzeIDError` operation.
253#[non_exhaustive]
254#[derive(::std::fmt::Debug)]
255pub enum AnalyzeIDError {
256    /// <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>
257    AccessDeniedException(crate::types::error::AccessDeniedException),
258    /// <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>
259    BadDocumentException(crate::types::error::BadDocumentException),
260    /// <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>
261    DocumentTooLargeException(crate::types::error::DocumentTooLargeException),
262    /// <p>Amazon Textract experienced a service issue. Try your call again.</p>
263    InternalServerError(crate::types::error::InternalServerError),
264    /// <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>
265    InvalidParameterException(crate::types::error::InvalidParameterException),
266    /// <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>
267    InvalidS3ObjectException(crate::types::error::InvalidS3ObjectException),
268    /// <p>The number of requests exceeded your throughput limit. If you want to increase this limit, contact Amazon Textract.</p>
269    ProvisionedThroughputExceededException(crate::types::error::ProvisionedThroughputExceededException),
270    /// <p>Amazon Textract is temporarily unable to process the request. Try your call again.</p>
271    ThrottlingException(crate::types::error::ThrottlingException),
272    /// <p>The format of the input document isn't supported. Documents for operations can be in PNG, JPEG, PDF, or TIFF format.</p>
273    UnsupportedDocumentException(crate::types::error::UnsupportedDocumentException),
274    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
275    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
276    variable wildcard pattern and check `.code()`:
277     \
278    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
279     \
280    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-AnalyzeIDError) for what information is available for the error.")]
281    Unhandled(crate::error::sealed_unhandled::Unhandled),
282}
283impl AnalyzeIDError {
284    /// Creates the `AnalyzeIDError::Unhandled` variant from any error type.
285    pub fn unhandled(
286        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
287    ) -> Self {
288        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
289            source: err.into(),
290            meta: ::std::default::Default::default(),
291        })
292    }
293
294    /// Creates the `AnalyzeIDError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
295    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
296        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
297            source: err.clone().into(),
298            meta: err,
299        })
300    }
301    ///
302    /// Returns error metadata, which includes the error code, message,
303    /// request ID, and potentially additional information.
304    ///
305    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
306        match self {
307            Self::AccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
308            Self::BadDocumentException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
309            Self::DocumentTooLargeException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
310            Self::InternalServerError(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
311            Self::InvalidParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
312            Self::InvalidS3ObjectException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
313            Self::ProvisionedThroughputExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
314            Self::ThrottlingException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
315            Self::UnsupportedDocumentException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
316            Self::Unhandled(e) => &e.meta,
317        }
318    }
319    /// Returns `true` if the error kind is `AnalyzeIDError::AccessDeniedException`.
320    pub fn is_access_denied_exception(&self) -> bool {
321        matches!(self, Self::AccessDeniedException(_))
322    }
323    /// Returns `true` if the error kind is `AnalyzeIDError::BadDocumentException`.
324    pub fn is_bad_document_exception(&self) -> bool {
325        matches!(self, Self::BadDocumentException(_))
326    }
327    /// Returns `true` if the error kind is `AnalyzeIDError::DocumentTooLargeException`.
328    pub fn is_document_too_large_exception(&self) -> bool {
329        matches!(self, Self::DocumentTooLargeException(_))
330    }
331    /// Returns `true` if the error kind is `AnalyzeIDError::InternalServerError`.
332    pub fn is_internal_server_error(&self) -> bool {
333        matches!(self, Self::InternalServerError(_))
334    }
335    /// Returns `true` if the error kind is `AnalyzeIDError::InvalidParameterException`.
336    pub fn is_invalid_parameter_exception(&self) -> bool {
337        matches!(self, Self::InvalidParameterException(_))
338    }
339    /// Returns `true` if the error kind is `AnalyzeIDError::InvalidS3ObjectException`.
340    pub fn is_invalid_s3_object_exception(&self) -> bool {
341        matches!(self, Self::InvalidS3ObjectException(_))
342    }
343    /// Returns `true` if the error kind is `AnalyzeIDError::ProvisionedThroughputExceededException`.
344    pub fn is_provisioned_throughput_exceeded_exception(&self) -> bool {
345        matches!(self, Self::ProvisionedThroughputExceededException(_))
346    }
347    /// Returns `true` if the error kind is `AnalyzeIDError::ThrottlingException`.
348    pub fn is_throttling_exception(&self) -> bool {
349        matches!(self, Self::ThrottlingException(_))
350    }
351    /// Returns `true` if the error kind is `AnalyzeIDError::UnsupportedDocumentException`.
352    pub fn is_unsupported_document_exception(&self) -> bool {
353        matches!(self, Self::UnsupportedDocumentException(_))
354    }
355}
356impl ::std::error::Error for AnalyzeIDError {
357    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
358        match self {
359            Self::AccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
360            Self::BadDocumentException(_inner) => ::std::option::Option::Some(_inner),
361            Self::DocumentTooLargeException(_inner) => ::std::option::Option::Some(_inner),
362            Self::InternalServerError(_inner) => ::std::option::Option::Some(_inner),
363            Self::InvalidParameterException(_inner) => ::std::option::Option::Some(_inner),
364            Self::InvalidS3ObjectException(_inner) => ::std::option::Option::Some(_inner),
365            Self::ProvisionedThroughputExceededException(_inner) => ::std::option::Option::Some(_inner),
366            Self::ThrottlingException(_inner) => ::std::option::Option::Some(_inner),
367            Self::UnsupportedDocumentException(_inner) => ::std::option::Option::Some(_inner),
368            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
369        }
370    }
371}
372impl ::std::fmt::Display for AnalyzeIDError {
373    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
374        match self {
375            Self::AccessDeniedException(_inner) => _inner.fmt(f),
376            Self::BadDocumentException(_inner) => _inner.fmt(f),
377            Self::DocumentTooLargeException(_inner) => _inner.fmt(f),
378            Self::InternalServerError(_inner) => _inner.fmt(f),
379            Self::InvalidParameterException(_inner) => _inner.fmt(f),
380            Self::InvalidS3ObjectException(_inner) => _inner.fmt(f),
381            Self::ProvisionedThroughputExceededException(_inner) => _inner.fmt(f),
382            Self::ThrottlingException(_inner) => _inner.fmt(f),
383            Self::UnsupportedDocumentException(_inner) => _inner.fmt(f),
384            Self::Unhandled(_inner) => {
385                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
386                    write!(f, "unhandled error ({code})")
387                } else {
388                    f.write_str("unhandled error")
389                }
390            }
391        }
392    }
393}
394impl ::aws_smithy_types::retry::ProvideErrorKind for AnalyzeIDError {
395    fn code(&self) -> ::std::option::Option<&str> {
396        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
397    }
398    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
399        ::std::option::Option::None
400    }
401}
402impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for AnalyzeIDError {
403    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
404        match self {
405            Self::AccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
406            Self::BadDocumentException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
407            Self::DocumentTooLargeException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
408            Self::InternalServerError(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
409            Self::InvalidParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
410            Self::InvalidS3ObjectException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
411            Self::ProvisionedThroughputExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
412            Self::ThrottlingException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
413            Self::UnsupportedDocumentException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
414            Self::Unhandled(_inner) => &_inner.meta,
415        }
416    }
417}
418impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for AnalyzeIDError {
419    fn create_unhandled_error(
420        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
421        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
422    ) -> Self {
423        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
424            source,
425            meta: meta.unwrap_or_default(),
426        })
427    }
428}
429impl ::aws_types::request_id::RequestId for crate::operation::analyze_id::AnalyzeIDError {
430    fn request_id(&self) -> Option<&str> {
431        self.meta().request_id()
432    }
433}
434
435pub use crate::operation::analyze_id::_analyze_id_output::AnalyzeIdOutput;
436
437pub use crate::operation::analyze_id::_analyze_id_input::AnalyzeIdInput;
438
439mod _analyze_id_input;
440
441mod _analyze_id_output;
442
443/// Builders
444pub mod builders;