/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include namespace Aws { namespace MediaStoreData { namespace Model { /** */ class PutObjectRequest : public StreamingMediaStoreDataRequest { public: AWS_MEDIASTOREDATA_API PutObjectRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "PutObject"; } AWS_MEDIASTOREDATA_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; AWS_MEDIASTOREDATA_API bool SignBody() const override { return false; } AWS_MEDIASTOREDATA_API bool IsChunked() const override { return true; } /** *

The path (including the file name) where the object is stored in the * container. Format: <folder name>/<folder name>/<file name>

*

For example, to upload the file mlaw.avi to the folder path * premium\canada in the container movies, enter the path * premium/canada/mlaw.avi.

Do not include the container name * in this path.

If the path includes any folders that don't exist yet, the * service creates them. For example, suppose you have an existing * premium/usa subfolder. If you specify premium/canada, * the service creates a canada subfolder in the premium * folder. You then have two subfolders, usa and canada, * in the premium folder.

There is no correlation between the * path to the source and the path (folders) in the container in AWS Elemental * MediaStore.

For more information about folders and how they exist in a * container, see the AWS Elemental MediaStore * User Guide.

The file name is the name that is assigned to the file * that you upload. The file can have the same name inside and outside of AWS * Elemental MediaStore, or it can have the same name. The file name can include or * omit an extension.

*/ inline const Aws::String& GetPath() const{ return m_path; } /** *

The path (including the file name) where the object is stored in the * container. Format: <folder name>/<folder name>/<file name>

*

For example, to upload the file mlaw.avi to the folder path * premium\canada in the container movies, enter the path * premium/canada/mlaw.avi.

Do not include the container name * in this path.

If the path includes any folders that don't exist yet, the * service creates them. For example, suppose you have an existing * premium/usa subfolder. If you specify premium/canada, * the service creates a canada subfolder in the premium * folder. You then have two subfolders, usa and canada, * in the premium folder.

There is no correlation between the * path to the source and the path (folders) in the container in AWS Elemental * MediaStore.

For more information about folders and how they exist in a * container, see the AWS Elemental MediaStore * User Guide.

The file name is the name that is assigned to the file * that you upload. The file can have the same name inside and outside of AWS * Elemental MediaStore, or it can have the same name. The file name can include or * omit an extension.

*/ inline bool PathHasBeenSet() const { return m_pathHasBeenSet; } /** *

The path (including the file name) where the object is stored in the * container. Format: <folder name>/<folder name>/<file name>

*

For example, to upload the file mlaw.avi to the folder path * premium\canada in the container movies, enter the path * premium/canada/mlaw.avi.

Do not include the container name * in this path.

If the path includes any folders that don't exist yet, the * service creates them. For example, suppose you have an existing * premium/usa subfolder. If you specify premium/canada, * the service creates a canada subfolder in the premium * folder. You then have two subfolders, usa and canada, * in the premium folder.

There is no correlation between the * path to the source and the path (folders) in the container in AWS Elemental * MediaStore.

For more information about folders and how they exist in a * container, see the AWS Elemental MediaStore * User Guide.

The file name is the name that is assigned to the file * that you upload. The file can have the same name inside and outside of AWS * Elemental MediaStore, or it can have the same name. The file name can include or * omit an extension.

*/ inline void SetPath(const Aws::String& value) { m_pathHasBeenSet = true; m_path = value; } /** *

The path (including the file name) where the object is stored in the * container. Format: <folder name>/<folder name>/<file name>

*

For example, to upload the file mlaw.avi to the folder path * premium\canada in the container movies, enter the path * premium/canada/mlaw.avi.

Do not include the container name * in this path.

If the path includes any folders that don't exist yet, the * service creates them. For example, suppose you have an existing * premium/usa subfolder. If you specify premium/canada, * the service creates a canada subfolder in the premium * folder. You then have two subfolders, usa and canada, * in the premium folder.

There is no correlation between the * path to the source and the path (folders) in the container in AWS Elemental * MediaStore.

For more information about folders and how they exist in a * container, see the AWS Elemental MediaStore * User Guide.

The file name is the name that is assigned to the file * that you upload. The file can have the same name inside and outside of AWS * Elemental MediaStore, or it can have the same name. The file name can include or * omit an extension.

*/ inline void SetPath(Aws::String&& value) { m_pathHasBeenSet = true; m_path = std::move(value); } /** *

The path (including the file name) where the object is stored in the * container. Format: <folder name>/<folder name>/<file name>

*

For example, to upload the file mlaw.avi to the folder path * premium\canada in the container movies, enter the path * premium/canada/mlaw.avi.

Do not include the container name * in this path.

If the path includes any folders that don't exist yet, the * service creates them. For example, suppose you have an existing * premium/usa subfolder. If you specify premium/canada, * the service creates a canada subfolder in the premium * folder. You then have two subfolders, usa and canada, * in the premium folder.

There is no correlation between the * path to the source and the path (folders) in the container in AWS Elemental * MediaStore.

For more information about folders and how they exist in a * container, see the AWS Elemental MediaStore * User Guide.

The file name is the name that is assigned to the file * that you upload. The file can have the same name inside and outside of AWS * Elemental MediaStore, or it can have the same name. The file name can include or * omit an extension.

*/ inline void SetPath(const char* value) { m_pathHasBeenSet = true; m_path.assign(value); } /** *

The path (including the file name) where the object is stored in the * container. Format: <folder name>/<folder name>/<file name>

*

For example, to upload the file mlaw.avi to the folder path * premium\canada in the container movies, enter the path * premium/canada/mlaw.avi.

Do not include the container name * in this path.

If the path includes any folders that don't exist yet, the * service creates them. For example, suppose you have an existing * premium/usa subfolder. If you specify premium/canada, * the service creates a canada subfolder in the premium * folder. You then have two subfolders, usa and canada, * in the premium folder.

There is no correlation between the * path to the source and the path (folders) in the container in AWS Elemental * MediaStore.

For more information about folders and how they exist in a * container, see the AWS Elemental MediaStore * User Guide.

The file name is the name that is assigned to the file * that you upload. The file can have the same name inside and outside of AWS * Elemental MediaStore, or it can have the same name. The file name can include or * omit an extension.

*/ inline PutObjectRequest& WithPath(const Aws::String& value) { SetPath(value); return *this;} /** *

The path (including the file name) where the object is stored in the * container. Format: <folder name>/<folder name>/<file name>

*

For example, to upload the file mlaw.avi to the folder path * premium\canada in the container movies, enter the path * premium/canada/mlaw.avi.

Do not include the container name * in this path.

If the path includes any folders that don't exist yet, the * service creates them. For example, suppose you have an existing * premium/usa subfolder. If you specify premium/canada, * the service creates a canada subfolder in the premium * folder. You then have two subfolders, usa and canada, * in the premium folder.

There is no correlation between the * path to the source and the path (folders) in the container in AWS Elemental * MediaStore.

For more information about folders and how they exist in a * container, see the AWS Elemental MediaStore * User Guide.

The file name is the name that is assigned to the file * that you upload. The file can have the same name inside and outside of AWS * Elemental MediaStore, or it can have the same name. The file name can include or * omit an extension.

*/ inline PutObjectRequest& WithPath(Aws::String&& value) { SetPath(std::move(value)); return *this;} /** *

The path (including the file name) where the object is stored in the * container. Format: <folder name>/<folder name>/<file name>

*

For example, to upload the file mlaw.avi to the folder path * premium\canada in the container movies, enter the path * premium/canada/mlaw.avi.

Do not include the container name * in this path.

If the path includes any folders that don't exist yet, the * service creates them. For example, suppose you have an existing * premium/usa subfolder. If you specify premium/canada, * the service creates a canada subfolder in the premium * folder. You then have two subfolders, usa and canada, * in the premium folder.

There is no correlation between the * path to the source and the path (folders) in the container in AWS Elemental * MediaStore.

For more information about folders and how they exist in a * container, see the AWS Elemental MediaStore * User Guide.

The file name is the name that is assigned to the file * that you upload. The file can have the same name inside and outside of AWS * Elemental MediaStore, or it can have the same name. The file name can include or * omit an extension.

*/ inline PutObjectRequest& WithPath(const char* value) { SetPath(value); return *this;} /** *

An optional CacheControl header that allows the caller to * control the object's cache behavior. Headers can be passed in as specified in * the HTTP at https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

*

Headers with a custom user-defined value are also accepted.

*/ inline const Aws::String& GetCacheControl() const{ return m_cacheControl; } /** *

An optional CacheControl header that allows the caller to * control the object's cache behavior. Headers can be passed in as specified in * the HTTP at https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

*

Headers with a custom user-defined value are also accepted.

*/ inline bool CacheControlHasBeenSet() const { return m_cacheControlHasBeenSet; } /** *

An optional CacheControl header that allows the caller to * control the object's cache behavior. Headers can be passed in as specified in * the HTTP at https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

*

Headers with a custom user-defined value are also accepted.

*/ inline void SetCacheControl(const Aws::String& value) { m_cacheControlHasBeenSet = true; m_cacheControl = value; } /** *

An optional CacheControl header that allows the caller to * control the object's cache behavior. Headers can be passed in as specified in * the HTTP at https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

*

Headers with a custom user-defined value are also accepted.

*/ inline void SetCacheControl(Aws::String&& value) { m_cacheControlHasBeenSet = true; m_cacheControl = std::move(value); } /** *

An optional CacheControl header that allows the caller to * control the object's cache behavior. Headers can be passed in as specified in * the HTTP at https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

*

Headers with a custom user-defined value are also accepted.

*/ inline void SetCacheControl(const char* value) { m_cacheControlHasBeenSet = true; m_cacheControl.assign(value); } /** *

An optional CacheControl header that allows the caller to * control the object's cache behavior. Headers can be passed in as specified in * the HTTP at https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

*

Headers with a custom user-defined value are also accepted.

*/ inline PutObjectRequest& WithCacheControl(const Aws::String& value) { SetCacheControl(value); return *this;} /** *

An optional CacheControl header that allows the caller to * control the object's cache behavior. Headers can be passed in as specified in * the HTTP at https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

*

Headers with a custom user-defined value are also accepted.

*/ inline PutObjectRequest& WithCacheControl(Aws::String&& value) { SetCacheControl(std::move(value)); return *this;} /** *

An optional CacheControl header that allows the caller to * control the object's cache behavior. Headers can be passed in as specified in * the HTTP at https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

*

Headers with a custom user-defined value are also accepted.

*/ inline PutObjectRequest& WithCacheControl(const char* value) { SetCacheControl(value); return *this;} /** *

Indicates the storage class of a Put request. Defaults to * high-performance temporal storage class, and objects are persisted into durable * storage shortly after being received.

*/ inline const StorageClass& GetStorageClass() const{ return m_storageClass; } /** *

Indicates the storage class of a Put request. Defaults to * high-performance temporal storage class, and objects are persisted into durable * storage shortly after being received.

*/ inline bool StorageClassHasBeenSet() const { return m_storageClassHasBeenSet; } /** *

Indicates the storage class of a Put request. Defaults to * high-performance temporal storage class, and objects are persisted into durable * storage shortly after being received.

*/ inline void SetStorageClass(const StorageClass& value) { m_storageClassHasBeenSet = true; m_storageClass = value; } /** *

Indicates the storage class of a Put request. Defaults to * high-performance temporal storage class, and objects are persisted into durable * storage shortly after being received.

*/ inline void SetStorageClass(StorageClass&& value) { m_storageClassHasBeenSet = true; m_storageClass = std::move(value); } /** *

Indicates the storage class of a Put request. Defaults to * high-performance temporal storage class, and objects are persisted into durable * storage shortly after being received.

*/ inline PutObjectRequest& WithStorageClass(const StorageClass& value) { SetStorageClass(value); return *this;} /** *

Indicates the storage class of a Put request. Defaults to * high-performance temporal storage class, and objects are persisted into durable * storage shortly after being received.

*/ inline PutObjectRequest& WithStorageClass(StorageClass&& value) { SetStorageClass(std::move(value)); return *this;} /** *

Indicates the availability of an object while it is still uploading. If the * value is set to streaming, the object is available for downloading * after some initial buffering but before the object is uploaded completely. If * the value is set to standard, the object is available for * downloading only when it is uploaded completely. The default value for this * header is standard.

To use this header, you must also set * the HTTP Transfer-Encoding header to chunked.

*/ inline const UploadAvailability& GetUploadAvailability() const{ return m_uploadAvailability; } /** *

Indicates the availability of an object while it is still uploading. If the * value is set to streaming, the object is available for downloading * after some initial buffering but before the object is uploaded completely. If * the value is set to standard, the object is available for * downloading only when it is uploaded completely. The default value for this * header is standard.

To use this header, you must also set * the HTTP Transfer-Encoding header to chunked.

*/ inline bool UploadAvailabilityHasBeenSet() const { return m_uploadAvailabilityHasBeenSet; } /** *

Indicates the availability of an object while it is still uploading. If the * value is set to streaming, the object is available for downloading * after some initial buffering but before the object is uploaded completely. If * the value is set to standard, the object is available for * downloading only when it is uploaded completely. The default value for this * header is standard.

To use this header, you must also set * the HTTP Transfer-Encoding header to chunked.

*/ inline void SetUploadAvailability(const UploadAvailability& value) { m_uploadAvailabilityHasBeenSet = true; m_uploadAvailability = value; } /** *

Indicates the availability of an object while it is still uploading. If the * value is set to streaming, the object is available for downloading * after some initial buffering but before the object is uploaded completely. If * the value is set to standard, the object is available for * downloading only when it is uploaded completely. The default value for this * header is standard.

To use this header, you must also set * the HTTP Transfer-Encoding header to chunked.

*/ inline void SetUploadAvailability(UploadAvailability&& value) { m_uploadAvailabilityHasBeenSet = true; m_uploadAvailability = std::move(value); } /** *

Indicates the availability of an object while it is still uploading. If the * value is set to streaming, the object is available for downloading * after some initial buffering but before the object is uploaded completely. If * the value is set to standard, the object is available for * downloading only when it is uploaded completely. The default value for this * header is standard.

To use this header, you must also set * the HTTP Transfer-Encoding header to chunked.

*/ inline PutObjectRequest& WithUploadAvailability(const UploadAvailability& value) { SetUploadAvailability(value); return *this;} /** *

Indicates the availability of an object while it is still uploading. If the * value is set to streaming, the object is available for downloading * after some initial buffering but before the object is uploaded completely. If * the value is set to standard, the object is available for * downloading only when it is uploaded completely. The default value for this * header is standard.

To use this header, you must also set * the HTTP Transfer-Encoding header to chunked.

*/ inline PutObjectRequest& WithUploadAvailability(UploadAvailability&& value) { SetUploadAvailability(std::move(value)); return *this;} private: Aws::String m_path; bool m_pathHasBeenSet = false; Aws::String m_cacheControl; bool m_cacheControlHasBeenSet = false; StorageClass m_storageClass; bool m_storageClassHasBeenSet = false; UploadAvailability m_uploadAvailability; bool m_uploadAvailabilityHasBeenSet = false; }; } // namespace Model } // namespace MediaStoreData } // namespace Aws