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