aws_sdk_codecommit/operation/
put_file.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2/// Orchestration and serialization glue logic for `PutFile`.
3#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)]
4#[non_exhaustive]
5pub struct PutFile;
6impl PutFile {
7    /// Creates a new `PutFile`
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::put_file::PutFileInput,
14    ) -> ::std::result::Result<
15        crate::operation::put_file::PutFileOutput,
16        ::aws_smithy_runtime_api::client::result::SdkError<
17            crate::operation::put_file::PutFileError,
18            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
19        >,
20    > {
21        let map_err =
22            |err: ::aws_smithy_runtime_api::client::result::SdkError<
23                ::aws_smithy_runtime_api::client::interceptors::context::Error,
24                ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
25            >| { err.map_service_error(|err| err.downcast::<crate::operation::put_file::PutFileError>().expect("correct error type")) };
26        let context = Self::orchestrate_with_stop_point(runtime_plugins, input, ::aws_smithy_runtime::client::orchestrator::StopPoint::None)
27            .await
28            .map_err(map_err)?;
29        let output = context.finalize().map_err(map_err)?;
30        ::std::result::Result::Ok(
31            output
32                .downcast::<crate::operation::put_file::PutFileOutput>()
33                .expect("correct output type"),
34        )
35    }
36
37    pub(crate) async fn orchestrate_with_stop_point(
38        runtime_plugins: &::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
39        input: crate::operation::put_file::PutFileInput,
40        stop_point: ::aws_smithy_runtime::client::orchestrator::StopPoint,
41    ) -> ::std::result::Result<
42        ::aws_smithy_runtime_api::client::interceptors::context::InterceptorContext,
43        ::aws_smithy_runtime_api::client::result::SdkError<
44            ::aws_smithy_runtime_api::client::interceptors::context::Error,
45            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
46        >,
47    > {
48        let input = ::aws_smithy_runtime_api::client::interceptors::context::Input::erase(input);
49        use ::tracing::Instrument;
50        ::aws_smithy_runtime::client::orchestrator::invoke_with_stop_point("CodeCommit", "PutFile", input, runtime_plugins, stop_point)
51            // Create a parent span for the entire operation. Includes a random, internal-only,
52            // seven-digit ID for the operation orchestration so that it can be correlated in the logs.
53            .instrument(::tracing::debug_span!(
54                "CodeCommit.PutFile",
55                "rpc.service" = "CodeCommit",
56                "rpc.method" = "PutFile",
57                "sdk_invocation_id" = ::fastrand::u32(1_000_000..10_000_000),
58                "rpc.system" = "aws-api",
59            ))
60            .await
61    }
62
63    pub(crate) fn operation_runtime_plugins(
64        client_runtime_plugins: ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins,
65        client_config: &crate::config::Config,
66        config_override: ::std::option::Option<crate::config::Builder>,
67    ) -> ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugins {
68        let mut runtime_plugins = client_runtime_plugins.with_operation_plugin(Self::new());
69
70        if let ::std::option::Option::Some(config_override) = config_override {
71            for plugin in config_override.runtime_plugins.iter().cloned() {
72                runtime_plugins = runtime_plugins.with_operation_plugin(plugin);
73            }
74            runtime_plugins = runtime_plugins.with_operation_plugin(crate::config::ConfigOverrideRuntimePlugin::new(
75                config_override,
76                client_config.config.clone(),
77                &client_config.runtime_components,
78            ));
79        }
80        runtime_plugins
81    }
82}
83impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for PutFile {
84    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
85        let mut cfg = ::aws_smithy_types::config_bag::Layer::new("PutFile");
86
87        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedRequestSerializer::new(
88            PutFileRequestSerializer,
89        ));
90        cfg.store_put(::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer::new(
91            PutFileResponseDeserializer,
92        ));
93
94        cfg.store_put(::aws_smithy_runtime_api::client::auth::AuthSchemeOptionResolverParams::new(
95            crate::config::auth::Params::builder()
96                .operation_name("PutFile")
97                .build()
98                .expect("required fields set"),
99        ));
100
101        cfg.store_put(::aws_smithy_runtime_api::client::orchestrator::Metadata::new("PutFile", "CodeCommit"));
102        let mut signing_options = ::aws_runtime::auth::SigningOptions::default();
103        signing_options.double_uri_encode = true;
104        signing_options.content_sha256_header = false;
105        signing_options.normalize_uri_path = true;
106        signing_options.payload_override = None;
107
108        cfg.store_put(::aws_runtime::auth::SigV4OperationSigningConfig {
109            signing_options,
110            ..::std::default::Default::default()
111        });
112
113        ::std::option::Option::Some(cfg.freeze())
114    }
115
116    fn runtime_components(
117        &self,
118        _: &::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder,
119    ) -> ::std::borrow::Cow<'_, ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder> {
120        #[allow(unused_mut)]
121        let mut rcb = ::aws_smithy_runtime_api::client::runtime_components::RuntimeComponentsBuilder::new("PutFile")
122            .with_interceptor(::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default())
123            .with_interceptor(PutFileEndpointParamsInterceptor)
124            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
125                crate::operation::put_file::PutFileError,
126            >::new())
127            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
128                crate::operation::put_file::PutFileError,
129            >::new())
130            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
131                crate::operation::put_file::PutFileError,
132            >::new());
133
134        ::std::borrow::Cow::Owned(rcb)
135    }
136}
137
138#[derive(Debug)]
139struct PutFileResponseDeserializer;
140impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for PutFileResponseDeserializer {
141    fn deserialize_nonstreaming(
142        &self,
143        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
144    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
145        let (success, status) = (response.status().is_success(), response.status().as_u16());
146        let headers = response.headers();
147        let body = response.body().bytes().expect("body loaded");
148        #[allow(unused_mut)]
149        let mut force_error = false;
150        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
151        let parse_result = if !success && status != 200 || force_error {
152            crate::protocol_serde::shape_put_file::de_put_file_http_error(status, headers, body)
153        } else {
154            crate::protocol_serde::shape_put_file::de_put_file_http_response(status, headers, body)
155        };
156        crate::protocol_serde::type_erase_result(parse_result)
157    }
158}
159#[derive(Debug)]
160struct PutFileRequestSerializer;
161impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for PutFileRequestSerializer {
162    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
163    fn serialize_input(
164        &self,
165        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
166        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
167    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
168        let input = input.downcast::<crate::operation::put_file::PutFileInput>().expect("correct type");
169        let _header_serialization_settings = _cfg
170            .load::<crate::serialization_settings::HeaderSerializationSettings>()
171            .cloned()
172            .unwrap_or_default();
173        let mut request_builder = {
174            #[allow(clippy::uninlined_format_args)]
175            fn uri_base(
176                _input: &crate::operation::put_file::PutFileInput,
177                output: &mut ::std::string::String,
178            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
179                use ::std::fmt::Write as _;
180                ::std::write!(output, "/").expect("formatting should succeed");
181                ::std::result::Result::Ok(())
182            }
183            #[allow(clippy::unnecessary_wraps)]
184            fn update_http_builder(
185                input: &crate::operation::put_file::PutFileInput,
186                builder: ::http::request::Builder,
187            ) -> ::std::result::Result<::http::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
188                let mut uri = ::std::string::String::new();
189                uri_base(input, &mut uri)?;
190                ::std::result::Result::Ok(builder.method("POST").uri(uri))
191            }
192            let mut builder = update_http_builder(&input, ::http::request::Builder::new())?;
193            builder = _header_serialization_settings.set_default_header(builder, ::http::header::CONTENT_TYPE, "application/x-amz-json-1.1");
194            builder = _header_serialization_settings.set_default_header(
195                builder,
196                ::http::header::HeaderName::from_static("x-amz-target"),
197                "CodeCommit_20150413.PutFile",
198            );
199            builder
200        };
201        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_put_file::ser_put_file_input(&input)?);
202        if let Some(content_length) = body.content_length() {
203            let content_length = content_length.to_string();
204            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http::header::CONTENT_LENGTH, &content_length);
205        }
206        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
207    }
208}
209#[derive(Debug)]
210struct PutFileEndpointParamsInterceptor;
211
212impl ::aws_smithy_runtime_api::client::interceptors::Intercept for PutFileEndpointParamsInterceptor {
213    fn name(&self) -> &'static str {
214        "PutFileEndpointParamsInterceptor"
215    }
216
217    fn read_before_execution(
218        &self,
219        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
220            '_,
221            ::aws_smithy_runtime_api::client::interceptors::context::Input,
222            ::aws_smithy_runtime_api::client::interceptors::context::Output,
223            ::aws_smithy_runtime_api::client::interceptors::context::Error,
224        >,
225        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
226    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
227        let _input = context
228            .input()
229            .downcast_ref::<PutFileInput>()
230            .ok_or("failed to downcast to PutFileInput")?;
231
232        let params = crate::config::endpoint::Params::builder()
233            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
234            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
235            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
236            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
237            .build()
238            .map_err(|err| {
239                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
240            })?;
241        cfg.interceptor_state()
242            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
243        ::std::result::Result::Ok(())
244    }
245}
246
247// The get_* functions below are generated from JMESPath expressions in the
248// operationContextParams trait. They target the operation's input shape.
249
250/// Error type for the `PutFileError` operation.
251#[non_exhaustive]
252#[derive(::std::fmt::Debug)]
253pub enum PutFileError {
254    /// <p>The specified branch does not exist.</p>
255    BranchDoesNotExistException(crate::types::error::BranchDoesNotExistException),
256    /// <p>The specified branch name is not valid because it is a tag name. Enter the name of a branch in the repository. For a list of valid branch names, use <code>ListBranches</code>.</p>
257    BranchNameIsTagNameException(crate::types::error::BranchNameIsTagNameException),
258    /// <p>A branch name is required, but was not specified.</p>
259    BranchNameRequiredException(crate::types::error::BranchNameRequiredException),
260    /// <p>The commit message is too long. Provide a shorter string.</p>
261    CommitMessageLengthExceededException(crate::types::error::CommitMessageLengthExceededException),
262    /// <p>A file cannot be added to the repository because the specified path name has the same name as a file that already exists in this repository. Either provide a different name for the file, or specify a different path for the file.</p>
263    DirectoryNameConflictsWithFileNameException(crate::types::error::DirectoryNameConflictsWithFileNameException),
264    /// <p>An encryption integrity check failed.</p>
265    EncryptionIntegrityChecksFailedException(crate::types::error::EncryptionIntegrityChecksFailedException),
266    /// <p>An encryption key could not be accessed.</p>
267    EncryptionKeyAccessDeniedException(crate::types::error::EncryptionKeyAccessDeniedException),
268    /// <p>The encryption key is disabled.</p>
269    EncryptionKeyDisabledException(crate::types::error::EncryptionKeyDisabledException),
270    /// <p>No encryption key was found.</p>
271    EncryptionKeyNotFoundException(crate::types::error::EncryptionKeyNotFoundException),
272    /// <p>The encryption key is not available.</p>
273    EncryptionKeyUnavailableException(crate::types::error::EncryptionKeyUnavailableException),
274    /// <p>The file cannot be added because it is empty. Empty files cannot be added to the repository with this API.</p>
275    FileContentRequiredException(crate::types::error::FileContentRequiredException),
276    /// <p>The file cannot be added because it is too large. The maximum file size is 6 MB, and the combined file content change size is 7 MB. Consider making these changes using a Git client.</p>
277    FileContentSizeLimitExceededException(crate::types::error::FileContentSizeLimitExceededException),
278    /// <p>A file cannot be added to the repository because the specified file name has the same name as a directory in this repository. Either provide another name for the file, or add the file in a directory that does not match the file name.</p>
279    FileNameConflictsWithDirectoryNameException(crate::types::error::FileNameConflictsWithDirectoryNameException),
280    /// <p>The commit cannot be created because a specified file path points to a submodule. Verify that the destination files have valid file paths that do not point to a submodule.</p>
281    FilePathConflictsWithSubmodulePathException(crate::types::error::FilePathConflictsWithSubmodulePathException),
282    /// <p>The commit cannot be created because at least one of the overall changes in the commit results in a folder whose contents exceed the limit of 6 MB. Either reduce the number and size of your changes, or split the changes across multiple folders.</p>
283    FolderContentSizeLimitExceededException(crate::types::error::FolderContentSizeLimitExceededException),
284    /// <p>The specified reference name is not valid.</p>
285    InvalidBranchNameException(crate::types::error::InvalidBranchNameException),
286    /// <p>The specified deletion parameter is not valid.</p>
287    InvalidDeletionParameterException(crate::types::error::InvalidDeletionParameterException),
288    /// <p>The specified email address either contains one or more characters that are not allowed, or it exceeds the maximum number of characters allowed for an email address.</p>
289    InvalidEmailException(crate::types::error::InvalidEmailException),
290    /// <p>The specified file mode permission is not valid. For a list of valid file mode permissions, see <code>PutFile</code>.</p>
291    InvalidFileModeException(crate::types::error::InvalidFileModeException),
292    /// <p>The parent commit ID is not valid. The commit ID cannot be empty, and must match the head commit ID for the branch of the repository where you want to add or update a file.</p>
293    InvalidParentCommitIdException(crate::types::error::InvalidParentCommitIdException),
294    /// <p>The specified path is not valid.</p>
295    InvalidPathException(crate::types::error::InvalidPathException),
296    /// <p>A specified repository name is not valid.</p><note>
297    /// <p>This exception occurs only when a specified repository name is not valid. Other exceptions occur when a required repository parameter is missing, or when a specified repository does not exist.</p>
298    /// </note>
299    InvalidRepositoryNameException(crate::types::error::InvalidRepositoryNameException),
300    /// <p>The user name is not valid because it has exceeded the character limit for author names.</p>
301    NameLengthExceededException(crate::types::error::NameLengthExceededException),
302    /// <p>The parent commit ID is not valid because it does not exist. The specified parent commit ID does not exist in the specified branch of the repository.</p>
303    ParentCommitDoesNotExistException(crate::types::error::ParentCommitDoesNotExistException),
304    /// <p>The file could not be added because the provided parent commit ID is not the current tip of the specified branch. To view the full commit ID of the current head of the branch, use <code>GetBranch</code>.</p>
305    ParentCommitIdOutdatedException(crate::types::error::ParentCommitIdOutdatedException),
306    /// <p>A parent commit ID is required. To view the full commit ID of a branch in a repository, use <code>GetBranch</code> or a Git command (for example, git pull or git log).</p>
307    ParentCommitIdRequiredException(crate::types::error::ParentCommitIdRequiredException),
308    /// <p>The folderPath for a location cannot be null.</p>
309    PathRequiredException(crate::types::error::PathRequiredException),
310    /// <p>The specified repository does not exist.</p>
311    RepositoryDoesNotExistException(crate::types::error::RepositoryDoesNotExistException),
312    /// <p>A repository name is required, but was not specified.</p>
313    RepositoryNameRequiredException(crate::types::error::RepositoryNameRequiredException),
314    /// <p>The file was not added or updated because the content of the file is exactly the same as the content of that file in the repository and branch that you specified.</p>
315    SameFileContentException(crate::types::error::SameFileContentException),
316    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
317    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
318    variable wildcard pattern and check `.code()`:
319     \
320    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
321     \
322    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-PutFileError) for what information is available for the error.")]
323    Unhandled(crate::error::sealed_unhandled::Unhandled),
324}
325impl PutFileError {
326    /// Creates the `PutFileError::Unhandled` variant from any error type.
327    pub fn unhandled(
328        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
329    ) -> Self {
330        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
331            source: err.into(),
332            meta: ::std::default::Default::default(),
333        })
334    }
335
336    /// Creates the `PutFileError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
337    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
338        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
339            source: err.clone().into(),
340            meta: err,
341        })
342    }
343    ///
344    /// Returns error metadata, which includes the error code, message,
345    /// request ID, and potentially additional information.
346    ///
347    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
348        match self {
349            Self::BranchDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
350            Self::BranchNameIsTagNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
351            Self::BranchNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
352            Self::CommitMessageLengthExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
353            Self::DirectoryNameConflictsWithFileNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
354            Self::EncryptionIntegrityChecksFailedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
355            Self::EncryptionKeyAccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
356            Self::EncryptionKeyDisabledException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
357            Self::EncryptionKeyNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
358            Self::EncryptionKeyUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
359            Self::FileContentRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
360            Self::FileContentSizeLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
361            Self::FileNameConflictsWithDirectoryNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
362            Self::FilePathConflictsWithSubmodulePathException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
363            Self::FolderContentSizeLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
364            Self::InvalidBranchNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
365            Self::InvalidDeletionParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
366            Self::InvalidEmailException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
367            Self::InvalidFileModeException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
368            Self::InvalidParentCommitIdException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
369            Self::InvalidPathException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
370            Self::InvalidRepositoryNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
371            Self::NameLengthExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
372            Self::ParentCommitDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
373            Self::ParentCommitIdOutdatedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
374            Self::ParentCommitIdRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
375            Self::PathRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
376            Self::RepositoryDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
377            Self::RepositoryNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
378            Self::SameFileContentException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
379            Self::Unhandled(e) => &e.meta,
380        }
381    }
382    /// Returns `true` if the error kind is `PutFileError::BranchDoesNotExistException`.
383    pub fn is_branch_does_not_exist_exception(&self) -> bool {
384        matches!(self, Self::BranchDoesNotExistException(_))
385    }
386    /// Returns `true` if the error kind is `PutFileError::BranchNameIsTagNameException`.
387    pub fn is_branch_name_is_tag_name_exception(&self) -> bool {
388        matches!(self, Self::BranchNameIsTagNameException(_))
389    }
390    /// Returns `true` if the error kind is `PutFileError::BranchNameRequiredException`.
391    pub fn is_branch_name_required_exception(&self) -> bool {
392        matches!(self, Self::BranchNameRequiredException(_))
393    }
394    /// Returns `true` if the error kind is `PutFileError::CommitMessageLengthExceededException`.
395    pub fn is_commit_message_length_exceeded_exception(&self) -> bool {
396        matches!(self, Self::CommitMessageLengthExceededException(_))
397    }
398    /// Returns `true` if the error kind is `PutFileError::DirectoryNameConflictsWithFileNameException`.
399    pub fn is_directory_name_conflicts_with_file_name_exception(&self) -> bool {
400        matches!(self, Self::DirectoryNameConflictsWithFileNameException(_))
401    }
402    /// Returns `true` if the error kind is `PutFileError::EncryptionIntegrityChecksFailedException`.
403    pub fn is_encryption_integrity_checks_failed_exception(&self) -> bool {
404        matches!(self, Self::EncryptionIntegrityChecksFailedException(_))
405    }
406    /// Returns `true` if the error kind is `PutFileError::EncryptionKeyAccessDeniedException`.
407    pub fn is_encryption_key_access_denied_exception(&self) -> bool {
408        matches!(self, Self::EncryptionKeyAccessDeniedException(_))
409    }
410    /// Returns `true` if the error kind is `PutFileError::EncryptionKeyDisabledException`.
411    pub fn is_encryption_key_disabled_exception(&self) -> bool {
412        matches!(self, Self::EncryptionKeyDisabledException(_))
413    }
414    /// Returns `true` if the error kind is `PutFileError::EncryptionKeyNotFoundException`.
415    pub fn is_encryption_key_not_found_exception(&self) -> bool {
416        matches!(self, Self::EncryptionKeyNotFoundException(_))
417    }
418    /// Returns `true` if the error kind is `PutFileError::EncryptionKeyUnavailableException`.
419    pub fn is_encryption_key_unavailable_exception(&self) -> bool {
420        matches!(self, Self::EncryptionKeyUnavailableException(_))
421    }
422    /// Returns `true` if the error kind is `PutFileError::FileContentRequiredException`.
423    pub fn is_file_content_required_exception(&self) -> bool {
424        matches!(self, Self::FileContentRequiredException(_))
425    }
426    /// Returns `true` if the error kind is `PutFileError::FileContentSizeLimitExceededException`.
427    pub fn is_file_content_size_limit_exceeded_exception(&self) -> bool {
428        matches!(self, Self::FileContentSizeLimitExceededException(_))
429    }
430    /// Returns `true` if the error kind is `PutFileError::FileNameConflictsWithDirectoryNameException`.
431    pub fn is_file_name_conflicts_with_directory_name_exception(&self) -> bool {
432        matches!(self, Self::FileNameConflictsWithDirectoryNameException(_))
433    }
434    /// Returns `true` if the error kind is `PutFileError::FilePathConflictsWithSubmodulePathException`.
435    pub fn is_file_path_conflicts_with_submodule_path_exception(&self) -> bool {
436        matches!(self, Self::FilePathConflictsWithSubmodulePathException(_))
437    }
438    /// Returns `true` if the error kind is `PutFileError::FolderContentSizeLimitExceededException`.
439    pub fn is_folder_content_size_limit_exceeded_exception(&self) -> bool {
440        matches!(self, Self::FolderContentSizeLimitExceededException(_))
441    }
442    /// Returns `true` if the error kind is `PutFileError::InvalidBranchNameException`.
443    pub fn is_invalid_branch_name_exception(&self) -> bool {
444        matches!(self, Self::InvalidBranchNameException(_))
445    }
446    /// Returns `true` if the error kind is `PutFileError::InvalidDeletionParameterException`.
447    pub fn is_invalid_deletion_parameter_exception(&self) -> bool {
448        matches!(self, Self::InvalidDeletionParameterException(_))
449    }
450    /// Returns `true` if the error kind is `PutFileError::InvalidEmailException`.
451    pub fn is_invalid_email_exception(&self) -> bool {
452        matches!(self, Self::InvalidEmailException(_))
453    }
454    /// Returns `true` if the error kind is `PutFileError::InvalidFileModeException`.
455    pub fn is_invalid_file_mode_exception(&self) -> bool {
456        matches!(self, Self::InvalidFileModeException(_))
457    }
458    /// Returns `true` if the error kind is `PutFileError::InvalidParentCommitIdException`.
459    pub fn is_invalid_parent_commit_id_exception(&self) -> bool {
460        matches!(self, Self::InvalidParentCommitIdException(_))
461    }
462    /// Returns `true` if the error kind is `PutFileError::InvalidPathException`.
463    pub fn is_invalid_path_exception(&self) -> bool {
464        matches!(self, Self::InvalidPathException(_))
465    }
466    /// Returns `true` if the error kind is `PutFileError::InvalidRepositoryNameException`.
467    pub fn is_invalid_repository_name_exception(&self) -> bool {
468        matches!(self, Self::InvalidRepositoryNameException(_))
469    }
470    /// Returns `true` if the error kind is `PutFileError::NameLengthExceededException`.
471    pub fn is_name_length_exceeded_exception(&self) -> bool {
472        matches!(self, Self::NameLengthExceededException(_))
473    }
474    /// Returns `true` if the error kind is `PutFileError::ParentCommitDoesNotExistException`.
475    pub fn is_parent_commit_does_not_exist_exception(&self) -> bool {
476        matches!(self, Self::ParentCommitDoesNotExistException(_))
477    }
478    /// Returns `true` if the error kind is `PutFileError::ParentCommitIdOutdatedException`.
479    pub fn is_parent_commit_id_outdated_exception(&self) -> bool {
480        matches!(self, Self::ParentCommitIdOutdatedException(_))
481    }
482    /// Returns `true` if the error kind is `PutFileError::ParentCommitIdRequiredException`.
483    pub fn is_parent_commit_id_required_exception(&self) -> bool {
484        matches!(self, Self::ParentCommitIdRequiredException(_))
485    }
486    /// Returns `true` if the error kind is `PutFileError::PathRequiredException`.
487    pub fn is_path_required_exception(&self) -> bool {
488        matches!(self, Self::PathRequiredException(_))
489    }
490    /// Returns `true` if the error kind is `PutFileError::RepositoryDoesNotExistException`.
491    pub fn is_repository_does_not_exist_exception(&self) -> bool {
492        matches!(self, Self::RepositoryDoesNotExistException(_))
493    }
494    /// Returns `true` if the error kind is `PutFileError::RepositoryNameRequiredException`.
495    pub fn is_repository_name_required_exception(&self) -> bool {
496        matches!(self, Self::RepositoryNameRequiredException(_))
497    }
498    /// Returns `true` if the error kind is `PutFileError::SameFileContentException`.
499    pub fn is_same_file_content_exception(&self) -> bool {
500        matches!(self, Self::SameFileContentException(_))
501    }
502}
503impl ::std::error::Error for PutFileError {
504    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
505        match self {
506            Self::BranchDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
507            Self::BranchNameIsTagNameException(_inner) => ::std::option::Option::Some(_inner),
508            Self::BranchNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
509            Self::CommitMessageLengthExceededException(_inner) => ::std::option::Option::Some(_inner),
510            Self::DirectoryNameConflictsWithFileNameException(_inner) => ::std::option::Option::Some(_inner),
511            Self::EncryptionIntegrityChecksFailedException(_inner) => ::std::option::Option::Some(_inner),
512            Self::EncryptionKeyAccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
513            Self::EncryptionKeyDisabledException(_inner) => ::std::option::Option::Some(_inner),
514            Self::EncryptionKeyNotFoundException(_inner) => ::std::option::Option::Some(_inner),
515            Self::EncryptionKeyUnavailableException(_inner) => ::std::option::Option::Some(_inner),
516            Self::FileContentRequiredException(_inner) => ::std::option::Option::Some(_inner),
517            Self::FileContentSizeLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
518            Self::FileNameConflictsWithDirectoryNameException(_inner) => ::std::option::Option::Some(_inner),
519            Self::FilePathConflictsWithSubmodulePathException(_inner) => ::std::option::Option::Some(_inner),
520            Self::FolderContentSizeLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
521            Self::InvalidBranchNameException(_inner) => ::std::option::Option::Some(_inner),
522            Self::InvalidDeletionParameterException(_inner) => ::std::option::Option::Some(_inner),
523            Self::InvalidEmailException(_inner) => ::std::option::Option::Some(_inner),
524            Self::InvalidFileModeException(_inner) => ::std::option::Option::Some(_inner),
525            Self::InvalidParentCommitIdException(_inner) => ::std::option::Option::Some(_inner),
526            Self::InvalidPathException(_inner) => ::std::option::Option::Some(_inner),
527            Self::InvalidRepositoryNameException(_inner) => ::std::option::Option::Some(_inner),
528            Self::NameLengthExceededException(_inner) => ::std::option::Option::Some(_inner),
529            Self::ParentCommitDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
530            Self::ParentCommitIdOutdatedException(_inner) => ::std::option::Option::Some(_inner),
531            Self::ParentCommitIdRequiredException(_inner) => ::std::option::Option::Some(_inner),
532            Self::PathRequiredException(_inner) => ::std::option::Option::Some(_inner),
533            Self::RepositoryDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
534            Self::RepositoryNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
535            Self::SameFileContentException(_inner) => ::std::option::Option::Some(_inner),
536            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
537        }
538    }
539}
540impl ::std::fmt::Display for PutFileError {
541    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
542        match self {
543            Self::BranchDoesNotExistException(_inner) => _inner.fmt(f),
544            Self::BranchNameIsTagNameException(_inner) => _inner.fmt(f),
545            Self::BranchNameRequiredException(_inner) => _inner.fmt(f),
546            Self::CommitMessageLengthExceededException(_inner) => _inner.fmt(f),
547            Self::DirectoryNameConflictsWithFileNameException(_inner) => _inner.fmt(f),
548            Self::EncryptionIntegrityChecksFailedException(_inner) => _inner.fmt(f),
549            Self::EncryptionKeyAccessDeniedException(_inner) => _inner.fmt(f),
550            Self::EncryptionKeyDisabledException(_inner) => _inner.fmt(f),
551            Self::EncryptionKeyNotFoundException(_inner) => _inner.fmt(f),
552            Self::EncryptionKeyUnavailableException(_inner) => _inner.fmt(f),
553            Self::FileContentRequiredException(_inner) => _inner.fmt(f),
554            Self::FileContentSizeLimitExceededException(_inner) => _inner.fmt(f),
555            Self::FileNameConflictsWithDirectoryNameException(_inner) => _inner.fmt(f),
556            Self::FilePathConflictsWithSubmodulePathException(_inner) => _inner.fmt(f),
557            Self::FolderContentSizeLimitExceededException(_inner) => _inner.fmt(f),
558            Self::InvalidBranchNameException(_inner) => _inner.fmt(f),
559            Self::InvalidDeletionParameterException(_inner) => _inner.fmt(f),
560            Self::InvalidEmailException(_inner) => _inner.fmt(f),
561            Self::InvalidFileModeException(_inner) => _inner.fmt(f),
562            Self::InvalidParentCommitIdException(_inner) => _inner.fmt(f),
563            Self::InvalidPathException(_inner) => _inner.fmt(f),
564            Self::InvalidRepositoryNameException(_inner) => _inner.fmt(f),
565            Self::NameLengthExceededException(_inner) => _inner.fmt(f),
566            Self::ParentCommitDoesNotExistException(_inner) => _inner.fmt(f),
567            Self::ParentCommitIdOutdatedException(_inner) => _inner.fmt(f),
568            Self::ParentCommitIdRequiredException(_inner) => _inner.fmt(f),
569            Self::PathRequiredException(_inner) => _inner.fmt(f),
570            Self::RepositoryDoesNotExistException(_inner) => _inner.fmt(f),
571            Self::RepositoryNameRequiredException(_inner) => _inner.fmt(f),
572            Self::SameFileContentException(_inner) => _inner.fmt(f),
573            Self::Unhandled(_inner) => {
574                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
575                    write!(f, "unhandled error ({code})")
576                } else {
577                    f.write_str("unhandled error")
578                }
579            }
580        }
581    }
582}
583impl ::aws_smithy_types::retry::ProvideErrorKind for PutFileError {
584    fn code(&self) -> ::std::option::Option<&str> {
585        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
586    }
587    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
588        ::std::option::Option::None
589    }
590}
591impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for PutFileError {
592    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
593        match self {
594            Self::BranchDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
595            Self::BranchNameIsTagNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
596            Self::BranchNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
597            Self::CommitMessageLengthExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
598            Self::DirectoryNameConflictsWithFileNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
599            Self::EncryptionIntegrityChecksFailedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
600            Self::EncryptionKeyAccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
601            Self::EncryptionKeyDisabledException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
602            Self::EncryptionKeyNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
603            Self::EncryptionKeyUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
604            Self::FileContentRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
605            Self::FileContentSizeLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
606            Self::FileNameConflictsWithDirectoryNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
607            Self::FilePathConflictsWithSubmodulePathException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
608            Self::FolderContentSizeLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
609            Self::InvalidBranchNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
610            Self::InvalidDeletionParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
611            Self::InvalidEmailException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
612            Self::InvalidFileModeException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
613            Self::InvalidParentCommitIdException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
614            Self::InvalidPathException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
615            Self::InvalidRepositoryNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
616            Self::NameLengthExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
617            Self::ParentCommitDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
618            Self::ParentCommitIdOutdatedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
619            Self::ParentCommitIdRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
620            Self::PathRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
621            Self::RepositoryDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
622            Self::RepositoryNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
623            Self::SameFileContentException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
624            Self::Unhandled(_inner) => &_inner.meta,
625        }
626    }
627}
628impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for PutFileError {
629    fn create_unhandled_error(
630        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
631        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
632    ) -> Self {
633        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
634            source,
635            meta: meta.unwrap_or_default(),
636        })
637    }
638}
639impl ::aws_types::request_id::RequestId for crate::operation::put_file::PutFileError {
640    fn request_id(&self) -> Option<&str> {
641        self.meta().request_id()
642    }
643}
644
645pub use crate::operation::put_file::_put_file_output::PutFileOutput;
646
647pub use crate::operation::put_file::_put_file_input::PutFileInput;
648
649mod _put_file_input;
650
651mod _put_file_output;
652
653/// Builders
654pub mod builders;