Skip to main content

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_api::client::interceptors::SharedInterceptor::permanent(
123                ::aws_smithy_runtime::client::stalled_stream_protection::StalledStreamProtectionInterceptor::default(),
124            ))
125            .with_interceptor(::aws_smithy_runtime_api::client::interceptors::SharedInterceptor::permanent(
126                PutFileEndpointParamsInterceptor,
127            ))
128            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::TransientErrorClassifier::<
129                crate::operation::put_file::PutFileError,
130            >::new())
131            .with_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::ModeledAsRetryableClassifier::<
132                crate::operation::put_file::PutFileError,
133            >::new())
134            .with_retry_classifier(::aws_runtime::retries::classifiers::AwsErrorCodeClassifier::<
135                crate::operation::put_file::PutFileError,
136            >::new());
137
138        ::std::borrow::Cow::Owned(rcb)
139    }
140}
141
142#[derive(Debug)]
143struct PutFileResponseDeserializer;
144impl ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse for PutFileResponseDeserializer {
145    fn deserialize_nonstreaming_with_config(
146        &self,
147        response: &::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
148        _cfg: &::aws_smithy_types::config_bag::ConfigBag,
149    ) -> ::aws_smithy_runtime_api::client::interceptors::context::OutputOrError {
150        let (success, status) = (response.status().is_success(), response.status().as_u16());
151        let headers = response.headers();
152        let body = response.body().bytes().expect("body loaded");
153        #[allow(unused_mut)]
154        let mut force_error = false;
155        ::tracing::debug!(request_id = ?::aws_types::request_id::RequestId::request_id(response));
156        let parse_result = if !success && status != 200 || force_error {
157            crate::protocol_serde::shape_put_file::de_put_file_http_error(status, headers, body)
158        } else {
159            crate::protocol_serde::shape_put_file::de_put_file_http_response(status, headers, body)
160        };
161        crate::protocol_serde::type_erase_result(parse_result)
162    }
163}
164#[derive(Debug)]
165struct PutFileRequestSerializer;
166impl ::aws_smithy_runtime_api::client::ser_de::SerializeRequest for PutFileRequestSerializer {
167    #[allow(unused_mut, clippy::let_and_return, clippy::needless_borrow, clippy::useless_conversion)]
168    fn serialize_input(
169        &self,
170        input: ::aws_smithy_runtime_api::client::interceptors::context::Input,
171        _cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
172    ) -> ::std::result::Result<::aws_smithy_runtime_api::client::orchestrator::HttpRequest, ::aws_smithy_runtime_api::box_error::BoxError> {
173        let input = input.downcast::<crate::operation::put_file::PutFileInput>().expect("correct type");
174        let _header_serialization_settings = _cfg
175            .load::<crate::serialization_settings::HeaderSerializationSettings>()
176            .cloned()
177            .unwrap_or_default();
178        let mut request_builder = {
179            #[allow(clippy::uninlined_format_args)]
180            fn uri_base(
181                _input: &crate::operation::put_file::PutFileInput,
182                output: &mut ::std::string::String,
183            ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {
184                use ::std::fmt::Write as _;
185                ::std::write!(output, "/").expect("formatting should succeed");
186                ::std::result::Result::Ok(())
187            }
188            #[allow(clippy::unnecessary_wraps)]
189            fn update_http_builder(
190                input: &crate::operation::put_file::PutFileInput,
191                builder: ::http_1x::request::Builder,
192            ) -> ::std::result::Result<::http_1x::request::Builder, ::aws_smithy_types::error::operation::BuildError> {
193                let mut uri = ::std::string::String::new();
194                uri_base(input, &mut uri)?;
195                ::std::result::Result::Ok(builder.method("POST").uri(uri))
196            }
197            let mut builder = update_http_builder(&input, ::http_1x::request::Builder::new())?;
198            builder = _header_serialization_settings.set_default_header(builder, ::http_1x::header::CONTENT_TYPE, "application/x-amz-json-1.1");
199            builder = _header_serialization_settings.set_default_header(
200                builder,
201                ::http_1x::header::HeaderName::from_static("x-amz-target"),
202                "CodeCommit_20150413.PutFile",
203            );
204            builder
205        };
206        let body = ::aws_smithy_types::body::SdkBody::from(crate::protocol_serde::shape_put_file::ser_put_file_input(&input)?);
207        if let Some(content_length) = body.content_length() {
208            let content_length = content_length.to_string();
209            request_builder = _header_serialization_settings.set_default_header(request_builder, ::http_1x::header::CONTENT_LENGTH, &content_length);
210        }
211        ::std::result::Result::Ok(request_builder.body(body).expect("valid request").try_into().unwrap())
212    }
213}
214#[derive(Debug)]
215struct PutFileEndpointParamsInterceptor;
216
217#[::aws_smithy_runtime_api::client::interceptors::dyn_dispatch_hint]
218impl ::aws_smithy_runtime_api::client::interceptors::Intercept for PutFileEndpointParamsInterceptor {
219    fn name(&self) -> &'static str {
220        "PutFileEndpointParamsInterceptor"
221    }
222
223    fn read_before_execution(
224        &self,
225        context: &::aws_smithy_runtime_api::client::interceptors::context::BeforeSerializationInterceptorContextRef<
226            '_,
227            ::aws_smithy_runtime_api::client::interceptors::context::Input,
228            ::aws_smithy_runtime_api::client::interceptors::context::Output,
229            ::aws_smithy_runtime_api::client::interceptors::context::Error,
230        >,
231        cfg: &mut ::aws_smithy_types::config_bag::ConfigBag,
232    ) -> ::std::result::Result<(), ::aws_smithy_runtime_api::box_error::BoxError> {
233        let _input = context
234            .input()
235            .downcast_ref::<PutFileInput>()
236            .ok_or("failed to downcast to PutFileInput")?;
237
238        let params = crate::config::endpoint::Params::builder()
239            .set_region(cfg.load::<::aws_types::region::Region>().map(|r| r.as_ref().to_owned()))
240            .set_use_dual_stack(cfg.load::<::aws_types::endpoint_config::UseDualStack>().map(|ty| ty.0))
241            .set_use_fips(cfg.load::<::aws_types::endpoint_config::UseFips>().map(|ty| ty.0))
242            .set_endpoint(cfg.load::<::aws_types::endpoint_config::EndpointUrl>().map(|ty| ty.0.clone()))
243            .build()
244            .map_err(|err| {
245                ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
246            })?;
247        cfg.interceptor_state()
248            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
249        ::std::result::Result::Ok(())
250    }
251}
252
253// The get_* functions below are generated from JMESPath expressions in the
254// operationContextParams trait. They target the operation's input shape.
255
256/// Error type for the `PutFileError` operation.
257#[non_exhaustive]
258#[derive(::std::fmt::Debug)]
259pub enum PutFileError {
260    /// <p>The specified branch does not exist.</p>
261    BranchDoesNotExistException(crate::types::error::BranchDoesNotExistException),
262    /// <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>
263    BranchNameIsTagNameException(crate::types::error::BranchNameIsTagNameException),
264    /// <p>A branch name is required, but was not specified.</p>
265    BranchNameRequiredException(crate::types::error::BranchNameRequiredException),
266    /// <p>The commit message is too long. Provide a shorter string.</p>
267    CommitMessageLengthExceededException(crate::types::error::CommitMessageLengthExceededException),
268    /// <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>
269    DirectoryNameConflictsWithFileNameException(crate::types::error::DirectoryNameConflictsWithFileNameException),
270    /// <p>An encryption integrity check failed.</p>
271    EncryptionIntegrityChecksFailedException(crate::types::error::EncryptionIntegrityChecksFailedException),
272    /// <p>An encryption key could not be accessed.</p>
273    EncryptionKeyAccessDeniedException(crate::types::error::EncryptionKeyAccessDeniedException),
274    /// <p>The encryption key is disabled.</p>
275    EncryptionKeyDisabledException(crate::types::error::EncryptionKeyDisabledException),
276    /// <p>No encryption key was found.</p>
277    EncryptionKeyNotFoundException(crate::types::error::EncryptionKeyNotFoundException),
278    /// <p>The encryption key is not available.</p>
279    EncryptionKeyUnavailableException(crate::types::error::EncryptionKeyUnavailableException),
280    /// <p>The file cannot be added because it is empty. Empty files cannot be added to the repository with this API.</p>
281    FileContentRequiredException(crate::types::error::FileContentRequiredException),
282    /// <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>
283    FileContentSizeLimitExceededException(crate::types::error::FileContentSizeLimitExceededException),
284    /// <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>
285    FileNameConflictsWithDirectoryNameException(crate::types::error::FileNameConflictsWithDirectoryNameException),
286    /// <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>
287    FilePathConflictsWithSubmodulePathException(crate::types::error::FilePathConflictsWithSubmodulePathException),
288    /// <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>
289    FolderContentSizeLimitExceededException(crate::types::error::FolderContentSizeLimitExceededException),
290    /// <p>The specified reference name is not valid.</p>
291    InvalidBranchNameException(crate::types::error::InvalidBranchNameException),
292    /// <p>The specified deletion parameter is not valid.</p>
293    InvalidDeletionParameterException(crate::types::error::InvalidDeletionParameterException),
294    /// <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>
295    InvalidEmailException(crate::types::error::InvalidEmailException),
296    /// <p>The specified file mode permission is not valid. For a list of valid file mode permissions, see <code>PutFile</code>.</p>
297    InvalidFileModeException(crate::types::error::InvalidFileModeException),
298    /// <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>
299    InvalidParentCommitIdException(crate::types::error::InvalidParentCommitIdException),
300    /// <p>The specified path is not valid.</p>
301    InvalidPathException(crate::types::error::InvalidPathException),
302    /// <p>A specified repository name is not valid.</p><note>
303    /// <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>
304    /// </note>
305    InvalidRepositoryNameException(crate::types::error::InvalidRepositoryNameException),
306    /// <p>The user name is not valid because it has exceeded the character limit for author names.</p>
307    NameLengthExceededException(crate::types::error::NameLengthExceededException),
308    /// <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>
309    ParentCommitDoesNotExistException(crate::types::error::ParentCommitDoesNotExistException),
310    /// <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>
311    ParentCommitIdOutdatedException(crate::types::error::ParentCommitIdOutdatedException),
312    /// <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>
313    ParentCommitIdRequiredException(crate::types::error::ParentCommitIdRequiredException),
314    /// <p>The folderPath for a location cannot be null.</p>
315    PathRequiredException(crate::types::error::PathRequiredException),
316    /// <p>The specified repository does not exist.</p>
317    RepositoryDoesNotExistException(crate::types::error::RepositoryDoesNotExistException),
318    /// <p>A repository name is required, but was not specified.</p>
319    RepositoryNameRequiredException(crate::types::error::RepositoryNameRequiredException),
320    /// <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>
321    SameFileContentException(crate::types::error::SameFileContentException),
322    /// An unexpected error occurred (e.g., invalid JSON returned by the service or an unknown error code).
323    #[deprecated(note = "Matching `Unhandled` directly is not forwards compatible. Instead, match using a \
324    variable wildcard pattern and check `.code()`:
325     \
326    &nbsp;&nbsp;&nbsp;`err if err.code() == Some(\"SpecificExceptionCode\") => { /* handle the error */ }`
327     \
328    See [`ProvideErrorMetadata`](#impl-ProvideErrorMetadata-for-PutFileError) for what information is available for the error.")]
329    Unhandled(crate::error::sealed_unhandled::Unhandled),
330}
331impl PutFileError {
332    /// Creates the `PutFileError::Unhandled` variant from any error type.
333    pub fn unhandled(
334        err: impl ::std::convert::Into<::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>>,
335    ) -> Self {
336        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
337            source: err.into(),
338            meta: ::std::default::Default::default(),
339        })
340    }
341
342    /// Creates the `PutFileError::Unhandled` variant from an [`ErrorMetadata`](::aws_smithy_types::error::ErrorMetadata).
343    pub fn generic(err: ::aws_smithy_types::error::ErrorMetadata) -> Self {
344        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
345            source: err.clone().into(),
346            meta: err,
347        })
348    }
349    ///
350    /// Returns error metadata, which includes the error code, message,
351    /// request ID, and potentially additional information.
352    ///
353    pub fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
354        match self {
355            Self::BranchDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
356            Self::BranchNameIsTagNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
357            Self::BranchNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
358            Self::CommitMessageLengthExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
359            Self::DirectoryNameConflictsWithFileNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
360            Self::EncryptionIntegrityChecksFailedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
361            Self::EncryptionKeyAccessDeniedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
362            Self::EncryptionKeyDisabledException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
363            Self::EncryptionKeyNotFoundException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
364            Self::EncryptionKeyUnavailableException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
365            Self::FileContentRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
366            Self::FileContentSizeLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
367            Self::FileNameConflictsWithDirectoryNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
368            Self::FilePathConflictsWithSubmodulePathException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
369            Self::FolderContentSizeLimitExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
370            Self::InvalidBranchNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
371            Self::InvalidDeletionParameterException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
372            Self::InvalidEmailException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
373            Self::InvalidFileModeException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
374            Self::InvalidParentCommitIdException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
375            Self::InvalidPathException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
376            Self::InvalidRepositoryNameException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
377            Self::NameLengthExceededException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
378            Self::ParentCommitDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
379            Self::ParentCommitIdOutdatedException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
380            Self::ParentCommitIdRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
381            Self::PathRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
382            Self::RepositoryDoesNotExistException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
383            Self::RepositoryNameRequiredException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
384            Self::SameFileContentException(e) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(e),
385            Self::Unhandled(e) => &e.meta,
386        }
387    }
388    /// Returns `true` if the error kind is `PutFileError::BranchDoesNotExistException`.
389    pub fn is_branch_does_not_exist_exception(&self) -> bool {
390        matches!(self, Self::BranchDoesNotExistException(_))
391    }
392    /// Returns `true` if the error kind is `PutFileError::BranchNameIsTagNameException`.
393    pub fn is_branch_name_is_tag_name_exception(&self) -> bool {
394        matches!(self, Self::BranchNameIsTagNameException(_))
395    }
396    /// Returns `true` if the error kind is `PutFileError::BranchNameRequiredException`.
397    pub fn is_branch_name_required_exception(&self) -> bool {
398        matches!(self, Self::BranchNameRequiredException(_))
399    }
400    /// Returns `true` if the error kind is `PutFileError::CommitMessageLengthExceededException`.
401    pub fn is_commit_message_length_exceeded_exception(&self) -> bool {
402        matches!(self, Self::CommitMessageLengthExceededException(_))
403    }
404    /// Returns `true` if the error kind is `PutFileError::DirectoryNameConflictsWithFileNameException`.
405    pub fn is_directory_name_conflicts_with_file_name_exception(&self) -> bool {
406        matches!(self, Self::DirectoryNameConflictsWithFileNameException(_))
407    }
408    /// Returns `true` if the error kind is `PutFileError::EncryptionIntegrityChecksFailedException`.
409    pub fn is_encryption_integrity_checks_failed_exception(&self) -> bool {
410        matches!(self, Self::EncryptionIntegrityChecksFailedException(_))
411    }
412    /// Returns `true` if the error kind is `PutFileError::EncryptionKeyAccessDeniedException`.
413    pub fn is_encryption_key_access_denied_exception(&self) -> bool {
414        matches!(self, Self::EncryptionKeyAccessDeniedException(_))
415    }
416    /// Returns `true` if the error kind is `PutFileError::EncryptionKeyDisabledException`.
417    pub fn is_encryption_key_disabled_exception(&self) -> bool {
418        matches!(self, Self::EncryptionKeyDisabledException(_))
419    }
420    /// Returns `true` if the error kind is `PutFileError::EncryptionKeyNotFoundException`.
421    pub fn is_encryption_key_not_found_exception(&self) -> bool {
422        matches!(self, Self::EncryptionKeyNotFoundException(_))
423    }
424    /// Returns `true` if the error kind is `PutFileError::EncryptionKeyUnavailableException`.
425    pub fn is_encryption_key_unavailable_exception(&self) -> bool {
426        matches!(self, Self::EncryptionKeyUnavailableException(_))
427    }
428    /// Returns `true` if the error kind is `PutFileError::FileContentRequiredException`.
429    pub fn is_file_content_required_exception(&self) -> bool {
430        matches!(self, Self::FileContentRequiredException(_))
431    }
432    /// Returns `true` if the error kind is `PutFileError::FileContentSizeLimitExceededException`.
433    pub fn is_file_content_size_limit_exceeded_exception(&self) -> bool {
434        matches!(self, Self::FileContentSizeLimitExceededException(_))
435    }
436    /// Returns `true` if the error kind is `PutFileError::FileNameConflictsWithDirectoryNameException`.
437    pub fn is_file_name_conflicts_with_directory_name_exception(&self) -> bool {
438        matches!(self, Self::FileNameConflictsWithDirectoryNameException(_))
439    }
440    /// Returns `true` if the error kind is `PutFileError::FilePathConflictsWithSubmodulePathException`.
441    pub fn is_file_path_conflicts_with_submodule_path_exception(&self) -> bool {
442        matches!(self, Self::FilePathConflictsWithSubmodulePathException(_))
443    }
444    /// Returns `true` if the error kind is `PutFileError::FolderContentSizeLimitExceededException`.
445    pub fn is_folder_content_size_limit_exceeded_exception(&self) -> bool {
446        matches!(self, Self::FolderContentSizeLimitExceededException(_))
447    }
448    /// Returns `true` if the error kind is `PutFileError::InvalidBranchNameException`.
449    pub fn is_invalid_branch_name_exception(&self) -> bool {
450        matches!(self, Self::InvalidBranchNameException(_))
451    }
452    /// Returns `true` if the error kind is `PutFileError::InvalidDeletionParameterException`.
453    pub fn is_invalid_deletion_parameter_exception(&self) -> bool {
454        matches!(self, Self::InvalidDeletionParameterException(_))
455    }
456    /// Returns `true` if the error kind is `PutFileError::InvalidEmailException`.
457    pub fn is_invalid_email_exception(&self) -> bool {
458        matches!(self, Self::InvalidEmailException(_))
459    }
460    /// Returns `true` if the error kind is `PutFileError::InvalidFileModeException`.
461    pub fn is_invalid_file_mode_exception(&self) -> bool {
462        matches!(self, Self::InvalidFileModeException(_))
463    }
464    /// Returns `true` if the error kind is `PutFileError::InvalidParentCommitIdException`.
465    pub fn is_invalid_parent_commit_id_exception(&self) -> bool {
466        matches!(self, Self::InvalidParentCommitIdException(_))
467    }
468    /// Returns `true` if the error kind is `PutFileError::InvalidPathException`.
469    pub fn is_invalid_path_exception(&self) -> bool {
470        matches!(self, Self::InvalidPathException(_))
471    }
472    /// Returns `true` if the error kind is `PutFileError::InvalidRepositoryNameException`.
473    pub fn is_invalid_repository_name_exception(&self) -> bool {
474        matches!(self, Self::InvalidRepositoryNameException(_))
475    }
476    /// Returns `true` if the error kind is `PutFileError::NameLengthExceededException`.
477    pub fn is_name_length_exceeded_exception(&self) -> bool {
478        matches!(self, Self::NameLengthExceededException(_))
479    }
480    /// Returns `true` if the error kind is `PutFileError::ParentCommitDoesNotExistException`.
481    pub fn is_parent_commit_does_not_exist_exception(&self) -> bool {
482        matches!(self, Self::ParentCommitDoesNotExistException(_))
483    }
484    /// Returns `true` if the error kind is `PutFileError::ParentCommitIdOutdatedException`.
485    pub fn is_parent_commit_id_outdated_exception(&self) -> bool {
486        matches!(self, Self::ParentCommitIdOutdatedException(_))
487    }
488    /// Returns `true` if the error kind is `PutFileError::ParentCommitIdRequiredException`.
489    pub fn is_parent_commit_id_required_exception(&self) -> bool {
490        matches!(self, Self::ParentCommitIdRequiredException(_))
491    }
492    /// Returns `true` if the error kind is `PutFileError::PathRequiredException`.
493    pub fn is_path_required_exception(&self) -> bool {
494        matches!(self, Self::PathRequiredException(_))
495    }
496    /// Returns `true` if the error kind is `PutFileError::RepositoryDoesNotExistException`.
497    pub fn is_repository_does_not_exist_exception(&self) -> bool {
498        matches!(self, Self::RepositoryDoesNotExistException(_))
499    }
500    /// Returns `true` if the error kind is `PutFileError::RepositoryNameRequiredException`.
501    pub fn is_repository_name_required_exception(&self) -> bool {
502        matches!(self, Self::RepositoryNameRequiredException(_))
503    }
504    /// Returns `true` if the error kind is `PutFileError::SameFileContentException`.
505    pub fn is_same_file_content_exception(&self) -> bool {
506        matches!(self, Self::SameFileContentException(_))
507    }
508}
509impl ::std::error::Error for PutFileError {
510    fn source(&self) -> ::std::option::Option<&(dyn ::std::error::Error + 'static)> {
511        match self {
512            Self::BranchDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
513            Self::BranchNameIsTagNameException(_inner) => ::std::option::Option::Some(_inner),
514            Self::BranchNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
515            Self::CommitMessageLengthExceededException(_inner) => ::std::option::Option::Some(_inner),
516            Self::DirectoryNameConflictsWithFileNameException(_inner) => ::std::option::Option::Some(_inner),
517            Self::EncryptionIntegrityChecksFailedException(_inner) => ::std::option::Option::Some(_inner),
518            Self::EncryptionKeyAccessDeniedException(_inner) => ::std::option::Option::Some(_inner),
519            Self::EncryptionKeyDisabledException(_inner) => ::std::option::Option::Some(_inner),
520            Self::EncryptionKeyNotFoundException(_inner) => ::std::option::Option::Some(_inner),
521            Self::EncryptionKeyUnavailableException(_inner) => ::std::option::Option::Some(_inner),
522            Self::FileContentRequiredException(_inner) => ::std::option::Option::Some(_inner),
523            Self::FileContentSizeLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
524            Self::FileNameConflictsWithDirectoryNameException(_inner) => ::std::option::Option::Some(_inner),
525            Self::FilePathConflictsWithSubmodulePathException(_inner) => ::std::option::Option::Some(_inner),
526            Self::FolderContentSizeLimitExceededException(_inner) => ::std::option::Option::Some(_inner),
527            Self::InvalidBranchNameException(_inner) => ::std::option::Option::Some(_inner),
528            Self::InvalidDeletionParameterException(_inner) => ::std::option::Option::Some(_inner),
529            Self::InvalidEmailException(_inner) => ::std::option::Option::Some(_inner),
530            Self::InvalidFileModeException(_inner) => ::std::option::Option::Some(_inner),
531            Self::InvalidParentCommitIdException(_inner) => ::std::option::Option::Some(_inner),
532            Self::InvalidPathException(_inner) => ::std::option::Option::Some(_inner),
533            Self::InvalidRepositoryNameException(_inner) => ::std::option::Option::Some(_inner),
534            Self::NameLengthExceededException(_inner) => ::std::option::Option::Some(_inner),
535            Self::ParentCommitDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
536            Self::ParentCommitIdOutdatedException(_inner) => ::std::option::Option::Some(_inner),
537            Self::ParentCommitIdRequiredException(_inner) => ::std::option::Option::Some(_inner),
538            Self::PathRequiredException(_inner) => ::std::option::Option::Some(_inner),
539            Self::RepositoryDoesNotExistException(_inner) => ::std::option::Option::Some(_inner),
540            Self::RepositoryNameRequiredException(_inner) => ::std::option::Option::Some(_inner),
541            Self::SameFileContentException(_inner) => ::std::option::Option::Some(_inner),
542            Self::Unhandled(_inner) => ::std::option::Option::Some(&*_inner.source),
543        }
544    }
545}
546impl ::std::fmt::Display for PutFileError {
547    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
548        match self {
549            Self::BranchDoesNotExistException(_inner) => _inner.fmt(f),
550            Self::BranchNameIsTagNameException(_inner) => _inner.fmt(f),
551            Self::BranchNameRequiredException(_inner) => _inner.fmt(f),
552            Self::CommitMessageLengthExceededException(_inner) => _inner.fmt(f),
553            Self::DirectoryNameConflictsWithFileNameException(_inner) => _inner.fmt(f),
554            Self::EncryptionIntegrityChecksFailedException(_inner) => _inner.fmt(f),
555            Self::EncryptionKeyAccessDeniedException(_inner) => _inner.fmt(f),
556            Self::EncryptionKeyDisabledException(_inner) => _inner.fmt(f),
557            Self::EncryptionKeyNotFoundException(_inner) => _inner.fmt(f),
558            Self::EncryptionKeyUnavailableException(_inner) => _inner.fmt(f),
559            Self::FileContentRequiredException(_inner) => _inner.fmt(f),
560            Self::FileContentSizeLimitExceededException(_inner) => _inner.fmt(f),
561            Self::FileNameConflictsWithDirectoryNameException(_inner) => _inner.fmt(f),
562            Self::FilePathConflictsWithSubmodulePathException(_inner) => _inner.fmt(f),
563            Self::FolderContentSizeLimitExceededException(_inner) => _inner.fmt(f),
564            Self::InvalidBranchNameException(_inner) => _inner.fmt(f),
565            Self::InvalidDeletionParameterException(_inner) => _inner.fmt(f),
566            Self::InvalidEmailException(_inner) => _inner.fmt(f),
567            Self::InvalidFileModeException(_inner) => _inner.fmt(f),
568            Self::InvalidParentCommitIdException(_inner) => _inner.fmt(f),
569            Self::InvalidPathException(_inner) => _inner.fmt(f),
570            Self::InvalidRepositoryNameException(_inner) => _inner.fmt(f),
571            Self::NameLengthExceededException(_inner) => _inner.fmt(f),
572            Self::ParentCommitDoesNotExistException(_inner) => _inner.fmt(f),
573            Self::ParentCommitIdOutdatedException(_inner) => _inner.fmt(f),
574            Self::ParentCommitIdRequiredException(_inner) => _inner.fmt(f),
575            Self::PathRequiredException(_inner) => _inner.fmt(f),
576            Self::RepositoryDoesNotExistException(_inner) => _inner.fmt(f),
577            Self::RepositoryNameRequiredException(_inner) => _inner.fmt(f),
578            Self::SameFileContentException(_inner) => _inner.fmt(f),
579            Self::Unhandled(_inner) => {
580                if let ::std::option::Option::Some(code) = ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self) {
581                    write!(f, "unhandled error ({code})")
582                } else {
583                    f.write_str("unhandled error")
584                }
585            }
586        }
587    }
588}
589impl ::aws_smithy_types::retry::ProvideErrorKind for PutFileError {
590    fn code(&self) -> ::std::option::Option<&str> {
591        ::aws_smithy_types::error::metadata::ProvideErrorMetadata::code(self)
592    }
593    fn retryable_error_kind(&self) -> ::std::option::Option<::aws_smithy_types::retry::ErrorKind> {
594        ::std::option::Option::None
595    }
596}
597impl ::aws_smithy_types::error::metadata::ProvideErrorMetadata for PutFileError {
598    fn meta(&self) -> &::aws_smithy_types::error::ErrorMetadata {
599        match self {
600            Self::BranchDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
601            Self::BranchNameIsTagNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
602            Self::BranchNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
603            Self::CommitMessageLengthExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
604            Self::DirectoryNameConflictsWithFileNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
605            Self::EncryptionIntegrityChecksFailedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
606            Self::EncryptionKeyAccessDeniedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
607            Self::EncryptionKeyDisabledException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
608            Self::EncryptionKeyNotFoundException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
609            Self::EncryptionKeyUnavailableException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
610            Self::FileContentRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
611            Self::FileContentSizeLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
612            Self::FileNameConflictsWithDirectoryNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
613            Self::FilePathConflictsWithSubmodulePathException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
614            Self::FolderContentSizeLimitExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
615            Self::InvalidBranchNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
616            Self::InvalidDeletionParameterException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
617            Self::InvalidEmailException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
618            Self::InvalidFileModeException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
619            Self::InvalidParentCommitIdException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
620            Self::InvalidPathException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
621            Self::InvalidRepositoryNameException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
622            Self::NameLengthExceededException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
623            Self::ParentCommitDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
624            Self::ParentCommitIdOutdatedException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
625            Self::ParentCommitIdRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
626            Self::PathRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
627            Self::RepositoryDoesNotExistException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
628            Self::RepositoryNameRequiredException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
629            Self::SameFileContentException(_inner) => ::aws_smithy_types::error::metadata::ProvideErrorMetadata::meta(_inner),
630            Self::Unhandled(_inner) => &_inner.meta,
631        }
632    }
633}
634impl ::aws_smithy_runtime_api::client::result::CreateUnhandledError for PutFileError {
635    fn create_unhandled_error(
636        source: ::std::boxed::Box<dyn ::std::error::Error + ::std::marker::Send + ::std::marker::Sync + 'static>,
637        meta: ::std::option::Option<::aws_smithy_types::error::ErrorMetadata>,
638    ) -> Self {
639        Self::Unhandled(crate::error::sealed_unhandled::Unhandled {
640            source,
641            meta: meta.unwrap_or_default(),
642        })
643    }
644}
645impl ::aws_types::request_id::RequestId for crate::operation::put_file::PutFileError {
646    fn request_id(&self) -> Option<&str> {
647        self.meta().request_id()
648    }
649}
650
651pub use crate::operation::put_file::_put_file_input::PutFileInput;
652
653pub use crate::operation::put_file::_put_file_output::PutFileOutput;
654
655mod _put_file_input;
656
657mod _put_file_output;
658
659/// Builders
660pub mod builders;