diff --git a/sdk/core/azure-core/inc/response.hpp b/sdk/core/azure-core/inc/response.hpp index 90b872de0..247eccd2e 100644 --- a/sdk/core/azure-core/inc/response.hpp +++ b/sdk/core/azure-core/inc/response.hpp @@ -21,8 +21,6 @@ namespace Azure { namespace Core { // Do not give up raw response ownership. Http::RawResponse& GetRawResponse() { return *this->m_rawResponse; } - T& operator=(const Response& other) = delete; - const T* operator->() const { return &this->m_value; }; T* operator->() { return &this->m_value; }; T& operator*() { return this->m_value; }; diff --git a/sdk/storage/inc/blobs/append_blob_client.hpp b/sdk/storage/inc/blobs/append_blob_client.hpp index eaccefcfa..98ebc7f45 100644 --- a/sdk/storage/inc/blobs/append_blob_client.hpp +++ b/sdk/storage/inc/blobs/append_blob_client.hpp @@ -104,7 +104,8 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A BlobContentInfo describing the newly * created append blob. */ - BlobContentInfo Create(const CreateAppendBlobOptions& options = CreateAppendBlobOptions()); + Azure::Core::Response Create( + const CreateAppendBlobOptions& options = CreateAppendBlobOptions()); /** * @brief Commits a new block of data, represented by the content BodyStream to the end @@ -116,7 +117,7 @@ namespace Azure { namespace Storage { namespace Blobs { * function. * @return A BlobAppendInfo describing the state of the updated append blob. */ - BlobAppendInfo AppendBlock( + Azure::Core::Response AppendBlock( Azure::Core::Http::BodyStream* content, const AppendBlockOptions& options = AppendBlockOptions()); @@ -133,7 +134,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A BlobAppendInfo describing the * state of the updated append blob. */ - BlobAppendInfo AppendBlockFromUri( + Azure::Core::Response AppendBlockFromUri( const std::string& sourceUri, const AppendBlockFromUriOptions& options = AppendBlockFromUriOptions()) const; diff --git a/sdk/storage/inc/blobs/blob_client.hpp b/sdk/storage/inc/blobs/blob_client.hpp index aaec3d5e1..d1bcca4ab 100644 --- a/sdk/storage/inc/blobs/blob_client.hpp +++ b/sdk/storage/inc/blobs/blob_client.hpp @@ -150,7 +150,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A BlobProperties * describing the blob's properties. */ - BlobProperties GetProperties( + Azure::Core::Response GetProperties( const GetBlobPropertiesOptions& options = GetBlobPropertiesOptions()) const; /** @@ -160,7 +160,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A SetBlobHttpHeadersResponse describing the updated blob. */ - SetBlobHttpHeadersResponse SetHttpHeaders( + Azure::Core::Response SetHttpHeaders( BlobHttpHeaders httpHeaders, const SetBlobHttpHeadersOptions& options = SetBlobHttpHeadersOptions()) const; @@ -173,7 +173,7 @@ namespace Azure { namespace Storage { namespace Blobs { * options Optional parameters to execute this function. * @return A SetBlobMetadataResponse describing the updated blob. */ - SetBlobMetadataResponse SetMetadata( + Azure::Core::Response SetMetadata( std::map metadata, const SetBlobMetadataOptions& options = SetBlobMetadataOptions()) const; @@ -186,7 +186,7 @@ namespace Azure { namespace Storage { namespace Blobs { * parameters to execute this function. * @return A SetAccessTierResponse on successfully setting the tier. */ - SetAccessTierResponse SetAccessTier( + Azure::Core::Response SetAccessTier( AccessTier Tier, const SetAccessTierOptions& options = SetAccessTierOptions()) const; @@ -202,7 +202,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlobCopyInfo describing the state of the copy operation. */ - BlobCopyInfo StartCopyFromUri( + Azure::Core::Response StartCopyFromUri( const std::string& sourceUri, const StartCopyFromUriOptions& options = StartCopyFromUriOptions()) const; @@ -214,7 +214,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A AbortCopyBlobResponse on successfully aborting. */ - AbortCopyBlobResponse AbortCopyFromUri( + Azure::Core::Response AbortCopyFromUri( const std::string& copyId, const AbortCopyFromUriOptions& options = AbortCopyFromUriOptions()) const; @@ -226,7 +226,8 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A BlobDownloadResponse describing the downloaded blob. * BlobDownloadResponse.BodyStream contains the blob's data. */ - BlobDownloadResponse Download(const DownloadBlobOptions& options = DownloadBlobOptions()) const; + Azure::Core::Response Download( + const DownloadBlobOptions& options = DownloadBlobOptions()) const; /** * @brief Downloads a blob or a blob range from the service to a memory buffer using parallel @@ -239,7 +240,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A * BlobDownloadInfo describing the downloaded blob. */ - BlobDownloadInfo DownloadToBuffer( + Azure::Core::Response DownloadToBuffer( uint8_t* buffer, std::size_t bufferSize, const DownloadBlobToBufferOptions& options = DownloadBlobToBufferOptions()) const; @@ -253,7 +254,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A * BlobDownloadInfo describing the downloaded blob. */ - BlobDownloadInfo DownloadToFile( + Azure::Core::Response DownloadToFile( const std::string& file, const DownloadBlobToFileOptions& options = DownloadBlobToFileOptions()) const; @@ -265,7 +266,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A BlobSnapshotInfo describing the new * blob snapshot. */ - BlobSnapshotInfo CreateSnapshot( + Azure::Core::Response CreateSnapshot( const CreateSnapshotOptions& options = CreateSnapshotOptions()) const; /** @@ -276,7 +277,8 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A DeleteBlobResponse on successfully deleting. */ - DeleteBlobResponse Delete(const DeleteBlobOptions& options = DeleteBlobOptions()) const; + Azure::Core::Response Delete( + const DeleteBlobOptions& options = DeleteBlobOptions()) const; /** * @brief Restores the contents and metadata of a soft deleted blob and any associated @@ -286,7 +288,8 @@ namespace Azure { namespace Storage { namespace Blobs { * function. * @return A UndeleteBlobResponse on successfully deleting. */ - UndeleteBlobResponse Undelete(const UndeleteBlobOptions& options = UndeleteBlobOptions()) const; + Azure::Core::Response Undelete( + const UndeleteBlobOptions& options = UndeleteBlobOptions()) const; protected: UriBuilder m_blobUrl; diff --git a/sdk/storage/inc/blobs/blob_container_client.hpp b/sdk/storage/inc/blobs/blob_container_client.hpp index a1599a4d0..79a18434e 100644 --- a/sdk/storage/inc/blobs/blob_container_client.hpp +++ b/sdk/storage/inc/blobs/blob_container_client.hpp @@ -134,7 +134,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A BlobContainerInfo describing the newly * created blob container. */ - BlobContainerInfo Create( + Azure::Core::Response Create( const CreateBlobContainerOptions& options = CreateBlobContainerOptions()) const; /** @@ -145,7 +145,7 @@ namespace Azure { namespace Storage { namespace Blobs { * options Optional parameters to execute this function. * @return A DeleteContainerResponse if successful. */ - DeleteContainerResponse Delete( + Azure::Core::Response Delete( const DeleteBlobContainerOptions& options = DeleteBlobContainerOptions()) const; /** @@ -156,7 +156,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A * BlobContainerProperties describing the container and its properties. */ - BlobContainerProperties GetProperties( + Azure::Core::Response GetProperties( const GetBlobContainerPropertiesOptions& options = GetBlobContainerPropertiesOptions()) const; @@ -168,7 +168,7 @@ namespace Azure { namespace Storage { namespace Blobs { * Optional parameters to execute this function. * @return A SetContainerMetadataResponse if successful. */ - SetContainerMetadataResponse SetMetadata( + Azure::Core::Response SetMetadata( std::map metadata, SetBlobContainerMetadataOptions options = SetBlobContainerMetadataOptions()) const; @@ -182,7 +182,8 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A * BlobsFlatSegment describing a segment of the blobs in the container. */ - BlobsFlatSegment ListBlobsFlat(const ListBlobsOptions& options = ListBlobsOptions()) const; + Azure::Core::Response ListBlobsFlat( + const ListBlobsOptions& options = ListBlobsOptions()) const; /** * @brief Returns a single segment of blobs in this container, starting from the @@ -197,7 +198,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlobsFlatSegment describing a segment of the blobs in the container. */ - BlobsHierarchySegment ListBlobsByHierarchy( + Azure::Core::Response ListBlobsByHierarchy( const std::string& delimiter, const ListBlobsOptions& options = ListBlobsOptions()) const; diff --git a/sdk/storage/inc/blobs/blob_service_client.hpp b/sdk/storage/inc/blobs/blob_service_client.hpp index e911ca61f..e1d09cdec 100644 --- a/sdk/storage/inc/blobs/blob_service_client.hpp +++ b/sdk/storage/inc/blobs/blob_service_client.hpp @@ -103,7 +103,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A * ListContainersSegment describing segment of the blob containers in the storage account. */ - ListContainersSegment ListBlobContainersSegment( + Azure::Core::Response ListBlobContainersSegment( const ListBlobContainersOptions& options = ListBlobContainersOptions()) const; /** @@ -118,7 +118,7 @@ namespace Azure { namespace Storage { namespace Blobs { * this function. * @return A deserialized UserDelegationKey instance. */ - UserDelegationKey GetUserDelegationKey( + Azure::Core::Response GetUserDelegationKey( const std::string& startsOn, const std::string& expiresOn, const GetUserDelegationKeyOptions& options = GetUserDelegationKeyOptions()) const; diff --git a/sdk/storage/inc/blobs/block_blob_client.hpp b/sdk/storage/inc/blobs/block_blob_client.hpp index 0f2633944..f8af960a5 100644 --- a/sdk/storage/inc/blobs/block_blob_client.hpp +++ b/sdk/storage/inc/blobs/block_blob_client.hpp @@ -109,7 +109,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlobContentInfo describing the state of the updated block blob. */ - BlobContentInfo Upload( + Azure::Core::Response Upload( Azure::Core::Http::BodyStream* content, const UploadBlockBlobOptions& options = UploadBlockBlobOptions()) const; @@ -122,7 +122,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlobContentInfo describing the state of the updated block blob. */ - BlobContentInfo UploadFromBuffer( + Azure::Core::Response UploadFromBuffer( const uint8_t* buffer, std::size_t bufferSize, const UploadBlobOptions& options = UploadBlobOptions()) const; @@ -135,7 +135,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlobContentInfo describing the state of the updated block blob. */ - BlobContentInfo UploadFromFile( + Azure::Core::Response UploadFromFile( const std::string& file, const UploadBlobOptions& options = UploadBlobOptions()) const; @@ -149,7 +149,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlockInfo describing the state of the updated block. */ - BlockInfo StageBlock( + Azure::Core::Response StageBlock( const std::string& blockId, Azure::Core::Http::BodyStream* content, const StageBlockOptions& options = StageBlockOptions()) const; @@ -167,7 +167,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlockInfo describing the state of the updated block blob. */ - BlockInfo StageBlockFromUri( + Azure::Core::Response StageBlockFromUri( const std::string& blockId, const std::string& sourceUri, const StageBlockFromUriOptions& options = StageBlockFromUriOptions()) const; @@ -185,7 +185,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlobContentInfo describing the state of the updated block blob. */ - BlobContentInfo CommitBlockList( + Azure::Core::Response CommitBlockList( const std::vector>& blockIds, const CommitBlockListOptions& options = CommitBlockListOptions()) const; @@ -199,7 +199,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlobBlockListInfo describing requested block list. */ - BlobBlockListInfo GetBlockList( + Azure::Core::Response GetBlockList( const GetBlockListOptions& options = GetBlockListOptions()) const; private: diff --git a/sdk/storage/inc/blobs/internal/protocol/blob_rest_client.hpp b/sdk/storage/inc/blobs/internal/protocol/blob_rest_client.hpp index bba378e01..d400ca376 100644 --- a/sdk/storage/inc/blobs/internal/protocol/blob_rest_client.hpp +++ b/sdk/storage/inc/blobs/internal/protocol/blob_rest_client.hpp @@ -10,6 +10,7 @@ #include "http/http.hpp" #include "http/pipeline.hpp" #include "nullable.hpp" +#include "response.hpp" #include #include @@ -29,10 +30,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct AbortCopyBlobResponse { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; }; // struct AbortCopyBlobResponse enum class AccessTier @@ -181,10 +178,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobAppendInfo { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; Azure::Core::Nullable ContentMD5; @@ -242,20 +235,12 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobContainerInfo { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; }; // struct BlobContainerInfo struct BlobContentInfo { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; Azure::Core::Nullable ContentMD5; @@ -275,6 +260,13 @@ namespace Azure { namespace Storage { namespace Blobs { std::string ContentDisposition; }; // struct BlobHttpHeaders + struct BlobInfo + { + std::string ETag; + std::string LastModified; + Azure::Core::Nullable SequenceNumber; + }; // struct BlobInfo + enum class BlobLeaseState { Available, @@ -367,10 +359,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobSnapshotInfo { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string Snapshot; std::string ETag; std::string LastModified; @@ -426,10 +414,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlockInfo { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; Azure::Core::Nullable ContentMD5; Azure::Core::Nullable ContentCRC64; Azure::Core::Nullable ServerEncrypted; @@ -557,18 +541,10 @@ namespace Azure { namespace Storage { namespace Blobs { struct DeleteBlobResponse { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; }; // struct DeleteBlobResponse struct DeleteContainerResponse { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; }; // struct DeleteContainerResponse enum class DeleteSnapshotsOption @@ -744,10 +720,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct PageBlobInfo { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; int64_t SequenceNumber = 0; @@ -755,10 +727,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct PageInfo { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; Azure::Core::Nullable ContentMD5; @@ -770,10 +738,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct PageRangesInfoInternal { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; int64_t BlobContentLength = 0; @@ -861,58 +825,14 @@ namespace Azure { namespace Storage { namespace Blobs { struct SetAccessTierResponse { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; }; // struct SetAccessTierResponse - struct SetBlobHttpHeadersResponse - { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; - std::string ETag; - std::string LastModified; - Azure::Core::Nullable SequenceNumber; - }; // struct SetBlobHttpHeadersResponse - - struct SetBlobMetadataResponse - { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; - std::string ETag; - std::string LastModified; - Azure::Core::Nullable SequenceNumber; - }; // struct SetBlobMetadataResponse - - struct SetContainerMetadataResponse - { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; - std::string ETag; - std::string LastModified; - }; // struct SetContainerMetadataResponse - struct UndeleteBlobResponse { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; }; // struct UndeleteBlobResponse struct UserDelegationKey { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string SignedObjectId; std::string SignedTenantId; std::string SignedStartsOn; @@ -924,10 +844,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobBlockListInfo { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; std::string ContentType; @@ -952,10 +868,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobContainerProperties { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; std::map Metadata; @@ -969,10 +881,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobCopyInfo { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; std::string CopyId; @@ -981,10 +889,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobDownloadResponse { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::unique_ptr BodyStream; std::string ETag; std::string LastModified; @@ -1026,10 +930,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobProperties { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ETag; std::string LastModified; std::string CreationTime; @@ -1057,10 +957,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobsFlatSegment { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ServiceEndpoint; std::string Container; std::string Prefix; @@ -1071,10 +967,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct BlobsHierarchySegment { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ServiceEndpoint; std::string Container; std::string Prefix; @@ -1087,10 +979,6 @@ namespace Azure { namespace Storage { namespace Blobs { struct ListContainersSegment { - std::string RequestId; - std::string Date; - std::string Version; - Azure::Core::Nullable ClientRequestId; std::string ServiceEndpoint; std::string Prefix; std::string Marker; @@ -1145,7 +1033,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static ListContainersSegment ListBlobContainersParseResponse( + static Azure::Core::Response ListBlobContainersParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -1175,19 +1063,11 @@ namespace Azure { namespace Storage { namespace Blobs { XmlReader reader(reinterpret_cast(bodyContent.data()), bodyContent.size()); response = ListContainersSegmentFromXml(reader); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static ListContainersSegment ListBlobContainers( + static Azure::Core::Response ListBlobContainers( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -1237,7 +1117,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static UserDelegationKey GetUserDelegationKeyParseResponse( + static Azure::Core::Response GetUserDelegationKeyParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -1267,19 +1147,11 @@ namespace Azure { namespace Storage { namespace Blobs { XmlReader reader(reinterpret_cast(bodyContent.data()), bodyContent.size()); response = UserDelegationKeyFromXml(reader); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static UserDelegationKey GetUserDelegationKey( + static Azure::Core::Response GetUserDelegationKey( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -1763,7 +1635,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobContainerInfo CreateParseResponse( + static Azure::Core::Response CreateParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -1777,21 +1649,13 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobContainerInfo Create( + static Azure::Core::Response Create( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -1840,7 +1704,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static DeleteContainerResponse DeleteParseResponse( + static Azure::Core::Response DeleteParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -1854,19 +1718,11 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static DeleteContainerResponse Delete( + static Azure::Core::Response Delete( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -1920,7 +1776,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobContainerProperties GetPropertiesParseResponse( + static Azure::Core::Response GetPropertiesParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -1934,15 +1790,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); for (auto i = httpResponse.GetHeaders().lower_bound("x-ms-meta-"); @@ -1970,10 +1817,11 @@ namespace Azure { namespace Storage { namespace Blobs { { response.LeaseDuration = response_lease_duration_iterator->second; } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobContainerProperties GetProperties( + static Azure::Core::Response GetProperties( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -2034,13 +1882,13 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static SetContainerMetadataResponse SetMetadataParseResponse( + static Azure::Core::Response SetMetadataParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { unused(context); Azure::Core::Http::RawResponse& httpResponse = *pHttpResponse; - SetContainerMetadataResponse response; + BlobContainerInfo response; auto http_status_code = static_cast::type>( httpResponse.GetStatusCode()); @@ -2048,21 +1896,13 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static SetContainerMetadataResponse SetMetadata( + static Azure::Core::Response SetMetadata( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -2118,7 +1958,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobsFlatSegment ListBlobsFlatParseResponse( + static Azure::Core::Response ListBlobsFlatParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -2148,19 +1988,11 @@ namespace Azure { namespace Storage { namespace Blobs { XmlReader reader(reinterpret_cast(bodyContent.data()), bodyContent.size()); response = BlobsFlatSegmentFromXml(reader); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobsFlatSegment ListBlobsFlat( + static Azure::Core::Response ListBlobsFlat( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -2221,7 +2053,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobsHierarchySegment ListBlobsByHierarchyParseResponse( + static Azure::Core::Response ListBlobsByHierarchyParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -2251,19 +2083,11 @@ namespace Azure { namespace Storage { namespace Blobs { XmlReader reader(reinterpret_cast(bodyContent.data()), bodyContent.size()); response = BlobsHierarchySegmentFromXml(reader); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobsHierarchySegment ListBlobsByHierarchy( + static Azure::Core::Response ListBlobsByHierarchy( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -2957,7 +2781,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobDownloadResponse DownloadParseResponse( + static Azure::Core::Response DownloadParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -2971,15 +2795,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); @@ -3085,10 +2900,11 @@ namespace Azure { namespace Storage { namespace Blobs { } response.BlobType = BlobTypeFromString(httpResponse.GetHeaders().at("x-ms-blob-type")); response.BodyStream = httpResponse.GetBodyStream(); - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobDownloadResponse Download( + static Azure::Core::Response Download( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -3153,7 +2969,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static DeleteBlobResponse DeleteParseResponse( + static Azure::Core::Response DeleteParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -3167,19 +2983,11 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static DeleteBlobResponse Delete( + static Azure::Core::Response Delete( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -3214,7 +3022,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static UndeleteBlobResponse UndeleteParseResponse( + static Azure::Core::Response UndeleteParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -3228,19 +3036,11 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static UndeleteBlobResponse Undelete( + static Azure::Core::Response Undelete( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -3298,7 +3098,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobProperties GetPropertiesParseResponse( + static Azure::Core::Response GetPropertiesParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -3312,15 +3112,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); response.CreationTime = httpResponse.GetHeaders().at("x-ms-creation-time"); @@ -3461,10 +3252,10 @@ namespace Azure { namespace Storage { namespace Blobs { { response.CopyCompletionTime = response_copy_completion_time_iterator->second; } - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static BlobProperties GetProperties( + static Azure::Core::Response GetProperties( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -3565,13 +3356,13 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static SetBlobHttpHeadersResponse SetHttpHeadersParseResponse( + static Azure::Core::Response SetHttpHeadersParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { unused(context); Azure::Core::Http::RawResponse& httpResponse = *pHttpResponse; - SetBlobHttpHeadersResponse response; + BlobInfo response; auto http_status_code = static_cast::type>( httpResponse.GetStatusCode()); @@ -3579,15 +3370,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_sequence_number_iterator @@ -3596,10 +3378,10 @@ namespace Azure { namespace Storage { namespace Blobs { { response.SequenceNumber = std::stoll(response_sequence_number_iterator->second); } - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static SetBlobHttpHeadersResponse SetHttpHeaders( + static Azure::Core::Response SetHttpHeaders( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -3689,13 +3471,13 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static SetBlobMetadataResponse SetMetadataParseResponse( + static Azure::Core::Response SetMetadataParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { unused(context); Azure::Core::Http::RawResponse& httpResponse = *pHttpResponse; - SetBlobMetadataResponse response; + BlobInfo response; auto http_status_code = static_cast::type>( httpResponse.GetStatusCode()); @@ -3703,21 +3485,12 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static SetBlobMetadataResponse SetMetadata( + static Azure::Core::Response SetMetadata( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -3761,7 +3534,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static SetAccessTierResponse SetAccessTierParseResponse( + static Azure::Core::Response SetAccessTierParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -3775,19 +3548,11 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static SetAccessTierResponse SetAccessTier( + static Azure::Core::Response SetAccessTier( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -3902,7 +3667,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobCopyInfo StartCopyFromUriParseResponse( + static Azure::Core::Response StartCopyFromUriParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -3916,24 +3681,15 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); response.CopyId = httpResponse.GetHeaders().at("x-ms-copy-id"); response.CopyStatus = CopyStatusFromString(httpResponse.GetHeaders().at("x-ms-copy-status")); - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static BlobCopyInfo StartCopyFromUri( + static Azure::Core::Response StartCopyFromUri( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -3976,7 +3732,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static AbortCopyBlobResponse AbortCopyFromUriParseResponse( + static Azure::Core::Response AbortCopyFromUriParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -3990,19 +3746,11 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static AbortCopyBlobResponse AbortCopyFromUri( + static Azure::Core::Response AbortCopyFromUri( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -4092,7 +3840,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobSnapshotInfo CreateSnapshotParseResponse( + static Azure::Core::Response CreateSnapshotParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -4106,15 +3854,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_server_encrypted_iterator @@ -4130,10 +3869,11 @@ namespace Azure { namespace Storage { namespace Blobs { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } response.Snapshot = httpResponse.GetHeaders().at("x-ms-snapshot"); - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobSnapshotInfo CreateSnapshot( + static Azure::Core::Response CreateSnapshot( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -4269,7 +4009,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobContentInfo UploadParseResponse( + static Azure::Core::Response UploadParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -4283,15 +4023,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); @@ -4316,10 +4047,11 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobContentInfo Upload( + static Azure::Core::Response Upload( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -4388,7 +4120,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlockInfo StageBlockParseResponse( + static Azure::Core::Response StageBlockParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -4402,15 +4134,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); if (response_content_md5_iterator != httpResponse.GetHeaders().end()) { @@ -4433,10 +4156,10 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static BlockInfo StageBlock( + static Azure::Core::Response StageBlock( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -4545,7 +4268,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlockInfo StageBlockFromUriParseResponse( + static Azure::Core::Response StageBlockFromUriParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -4559,15 +4282,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); if (response_content_md5_iterator != httpResponse.GetHeaders().end()) { @@ -4590,10 +4304,10 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static BlockInfo StageBlockFromUri( + static Azure::Core::Response StageBlockFromUri( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -4727,7 +4441,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobContentInfo CommitBlockListParseResponse( + static Azure::Core::Response CommitBlockListParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -4741,15 +4455,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_server_encrypted_iterator @@ -4764,10 +4469,11 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobContentInfo CommitBlockList( + static Azure::Core::Response CommitBlockList( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -4813,7 +4519,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobBlockListInfo GetBlockListParseResponse( + static Azure::Core::Response GetBlockListParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -4843,24 +4549,16 @@ namespace Azure { namespace Storage { namespace Blobs { XmlReader reader(reinterpret_cast(bodyContent.data()), bodyContent.size()); response = BlobBlockListInfoFromXml(reader); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); response.ContentType = httpResponse.GetHeaders().at("content-type"); response.ContentLength = std::stoll(httpResponse.GetHeaders().at("x-ms-blob-content-length")); - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobBlockListInfo GetBlockList( + static Azure::Core::Response GetBlockList( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -5139,7 +4837,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobContentInfo CreateParseResponse( + static Azure::Core::Response CreateParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -5153,15 +4851,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); @@ -5186,10 +4875,11 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobContentInfo Create( + static Azure::Core::Response Create( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -5301,7 +4991,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static PageInfo UploadPagesParseResponse( + static Azure::Core::Response UploadPagesParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -5315,15 +5005,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); @@ -5350,10 +5031,10 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static PageInfo UploadPages( + static Azure::Core::Response UploadPages( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -5474,7 +5155,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static PageInfo UploadPagesFromUriParseResponse( + static Azure::Core::Response UploadPagesFromUriParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -5488,15 +5169,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); @@ -5523,10 +5195,10 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static PageInfo UploadPagesFromUri( + static Azure::Core::Response UploadPagesFromUri( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -5628,7 +5300,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static PageInfo ClearPagesParseResponse( + static Azure::Core::Response ClearPagesParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -5642,15 +5314,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); response.SequenceNumber @@ -5667,10 +5330,10 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static PageInfo ClearPages( + static Azure::Core::Response ClearPages( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -5768,7 +5431,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static PageBlobInfo ResizeParseResponse( + static Azure::Core::Response ResizeParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -5782,23 +5445,14 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); response.SequenceNumber = std::stoll(httpResponse.GetHeaders().at("x-ms-blob-sequence-number")); - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static PageBlobInfo Resize( + static Azure::Core::Response Resize( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -5883,7 +5537,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static PageRangesInfoInternal GetPageRangesParseResponse( + static Azure::Core::Response GetPageRangesParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -5913,23 +5567,15 @@ namespace Azure { namespace Storage { namespace Blobs { XmlReader reader(reinterpret_cast(bodyContent.data()), bodyContent.size()); response = PageRangesInfoInternalFromXml(reader); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); response.BlobContentLength = std::stoll(httpResponse.GetHeaders().at("x-ms-blob-content-length")); - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static PageRangesInfoInternal GetPageRanges( + static Azure::Core::Response GetPageRanges( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -5986,7 +5632,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobCopyInfo CopyIncrementalParseResponse( + static Azure::Core::Response CopyIncrementalParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -6000,24 +5646,15 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); response.CopyId = httpResponse.GetHeaders().at("x-ms-copy-id"); response.CopyStatus = CopyStatusFromString(httpResponse.GetHeaders().at("x-ms-copy-status")); - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static BlobCopyInfo CopyIncremental( + static Azure::Core::Response CopyIncremental( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -6302,7 +5939,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobContentInfo CreateParseResponse( + static Azure::Core::Response CreateParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -6316,15 +5953,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); @@ -6349,10 +5977,11 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response( + std::move(response), std::move(pHttpResponse)); } - static BlobContentInfo Create( + static Azure::Core::Response Create( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -6449,7 +6078,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobAppendInfo AppendBlockParseResponse( + static Azure::Core::Response AppendBlockParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -6463,15 +6092,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); @@ -6499,10 +6119,10 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static BlobAppendInfo AppendBlock( + static Azure::Core::Response AppendBlock( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, @@ -6619,7 +6239,7 @@ namespace Azure { namespace Storage { namespace Blobs { return request; } - static BlobAppendInfo AppendBlockFromUriParseResponse( + static Azure::Core::Response AppendBlockFromUriParseResponse( Azure::Core::Context context, std::unique_ptr pHttpResponse) { @@ -6633,15 +6253,6 @@ namespace Azure { namespace Storage { namespace Blobs { { throw StorageError::CreateFromResponse(std::move(pHttpResponse)); } - response.Version = httpResponse.GetHeaders().at("x-ms-version"); - response.Date = httpResponse.GetHeaders().at("date"); - response.RequestId = httpResponse.GetHeaders().at("x-ms-request-id"); - auto response_client_request_id_iterator - = httpResponse.GetHeaders().find("x-ms-client-request-id"); - if (response_client_request_id_iterator != httpResponse.GetHeaders().end()) - { - response.ClientRequestId = response_client_request_id_iterator->second; - } response.ETag = httpResponse.GetHeaders().at("etag"); response.LastModified = httpResponse.GetHeaders().at("last-modified"); auto response_content_md5_iterator = httpResponse.GetHeaders().find("content-md5"); @@ -6669,10 +6280,10 @@ namespace Azure { namespace Storage { namespace Blobs { { response.EncryptionKeySHA256 = response_encryption_key_sha256_iterator->second; } - return response; + return Azure::Core::Response(std::move(response), std::move(pHttpResponse)); } - static BlobAppendInfo AppendBlockFromUri( + static Azure::Core::Response AppendBlockFromUri( Azure::Core::Context context, Azure::Core::Http::HttpPipeline& pipeline, const std::string& url, diff --git a/sdk/storage/inc/blobs/page_blob_client.hpp b/sdk/storage/inc/blobs/page_blob_client.hpp index 8e95c5c3b..737511828 100644 --- a/sdk/storage/inc/blobs/page_blob_client.hpp +++ b/sdk/storage/inc/blobs/page_blob_client.hpp @@ -125,7 +125,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlobContentInfo describing the newly created page blob. */ - BlobContentInfo Create( + Azure::Core::Response Create( int64_t blobContentLength, const CreatePageBlobOptions& options = CreatePageBlobOptions()); @@ -140,7 +140,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A * PageInfo describing the state of the updated pages. */ - PageInfo UploadPages( + Azure::Core::Response UploadPages( Azure::Core::Http::BodyStream* content, int64_t offset, const UploadPagesOptions& options = UploadPagesOptions()); @@ -164,7 +164,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @return A PageInfo describing the state * of the updated pages. */ - PageInfo UploadPagesFromUri( + Azure::Core::Response UploadPagesFromUri( std::string sourceUri, int64_t sourceOffset, int64_t sourceLength, @@ -181,7 +181,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A PageInfo describing the state of the updated pages. */ - PageInfo ClearPages( + Azure::Core::Response ClearPages( int64_t offset, int64_t length, const ClearPagesOptions& options = ClearPagesOptions()); @@ -196,7 +196,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A PageBlobInfo describing the resized page blob. */ - PageBlobInfo Resize( + Azure::Core::Response Resize( int64_t blobContentLength, const ResizePageBlobOptions& options = ResizePageBlobOptions()); @@ -206,7 +206,8 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A PageRangesInfo describing the valid page ranges for this blob. */ - PageRangesInfo GetPageRanges(const GetPageRangesOptions& options = GetPageRangesOptions()); + Azure::Core::Response GetPageRanges( + const GetPageRangesOptions& options = GetPageRangesOptions()); /** * @brief Starts copying a snapshot of the sourceUri page blob to this page blob. The snapshot @@ -219,7 +220,7 @@ namespace Azure { namespace Storage { namespace Blobs { * @param options Optional parameters to execute this function. * @return A BlobCopyInfo describing the state of the copy operation. */ - BlobCopyInfo StartCopyIncremental( + Azure::Core::Response StartCopyIncremental( const std::string& sourceUri, const IncrementalCopyPageBlobOptions& options = IncrementalCopyPageBlobOptions()); diff --git a/sdk/storage/inc/common/constants.hpp b/sdk/storage/inc/common/constants.hpp index 9fe2706d1..4fe77ba1b 100644 --- a/sdk/storage/inc/common/constants.hpp +++ b/sdk/storage/inc/common/constants.hpp @@ -7,4 +7,8 @@ namespace Azure { namespace Storage { namespace Details { constexpr static const char* c_HttpQuerySnapshot = "snapshot"; constexpr static const char* c_HttpQueryVersionId = "versionid"; + constexpr static const char* c_HttpHeaderDate = "date"; + constexpr static const char* c_HttpHeaderXMsVersion = "x-ms-version"; + constexpr static const char* c_HttpHeaderRequestId = "x-ms-request-id"; + constexpr static const char* c_HttpHeaderClientRequestId = "x-ms-client-request-id"; }}} // namespace Azure::Storage::Details diff --git a/sdk/storage/inc/common/crypt.hpp b/sdk/storage/inc/common/crypt.hpp index 6d6ceb771..c84f1057a 100644 --- a/sdk/storage/inc/common/crypt.hpp +++ b/sdk/storage/inc/common/crypt.hpp @@ -10,5 +10,7 @@ namespace Azure { namespace Storage { std::string HMAC_SHA256(const std::string& text, const std::string& key); std::string Base64Encode(const std::string& text); std::string Base64Decode(const std::string& text); + std::string MD5(const std::string& text); + std::string CRC64(const std::string& text); }} // namespace Azure::Storage diff --git a/sdk/storage/sample/blob_getting_started.cpp b/sdk/storage/sample/blob_getting_started.cpp index 0586fac8d..fe867702b 100644 --- a/sdk/storage/sample/blob_getting_started.cpp +++ b/sdk/storage/sample/blob_getting_started.cpp @@ -35,7 +35,7 @@ void BlobsGettingStarted() std::map blobMetadata = {{"key1", "value1"}, {"key2", "value2"}}; blobClient.SetMetadata(blobMetadata); - auto properties = blobClient.GetProperties(); + auto properties = *blobClient.GetProperties(); for (auto metadata : properties.Metadata) { std::cout << metadata.first << ":" << metadata.second << std::endl; diff --git a/sdk/storage/src/blobs/append_blob_client.cpp b/sdk/storage/src/blobs/append_blob_client.cpp index 06f937fe3..4f474bf9c 100644 --- a/sdk/storage/src/blobs/append_blob_client.cpp +++ b/sdk/storage/src/blobs/append_blob_client.cpp @@ -58,7 +58,8 @@ namespace Azure { namespace Storage { namespace Blobs { return newClient; } - BlobContentInfo AppendBlobClient::Create(const CreateAppendBlobOptions& options) + Azure::Core::Response AppendBlobClient::Create( + const CreateAppendBlobOptions& options) { BlobRestClient::AppendBlob::CreateOptions protocolLayerOptions; protocolLayerOptions.HttpHeaders = options.HttpHeaders; @@ -72,7 +73,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - BlobAppendInfo AppendBlobClient::AppendBlock( + Azure::Core::Response AppendBlobClient::AppendBlock( Azure::Core::Http::BodyStream* content, const AppendBlockOptions& options) { @@ -90,7 +91,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), *content, protocolLayerOptions); } - BlobAppendInfo AppendBlobClient::AppendBlockFromUri( + Azure::Core::Response AppendBlobClient::AppendBlockFromUri( const std::string& sourceUri, const AppendBlockFromUriOptions& options) const { diff --git a/sdk/storage/src/blobs/blob_client.cpp b/sdk/storage/src/blobs/blob_client.cpp index 8b77ada49..29b8444ec 100644 --- a/sdk/storage/src/blobs/blob_client.cpp +++ b/sdk/storage/src/blobs/blob_client.cpp @@ -126,7 +126,8 @@ namespace Azure { namespace Storage { namespace Blobs { return newClient; } - BlobDownloadResponse BlobClient::Download(const DownloadBlobOptions& options) const + Azure::Core::Response BlobClient::Download( + const DownloadBlobOptions& options) const { BlobRestClient::Blob::DownloadOptions protocolLayerOptions; if (options.Offset.HasValue() && options.Length.HasValue()) @@ -150,7 +151,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - BlobDownloadInfo BlobClient::DownloadToBuffer( + Azure::Core::Response BlobClient::DownloadToBuffer( uint8_t* buffer, std::size_t bufferSize, const DownloadBlobToBufferOptions& options) const @@ -185,8 +186,8 @@ namespace Azure { namespace Storage { namespace Blobs { int64_t blobRangeSize; if (firstChunkOptions.Offset.HasValue()) { - blobSize = std::stoll(firstChunk.ContentRange.GetValue().substr( - firstChunk.ContentRange.GetValue().find('/') + 1)); + blobSize = std::stoll(firstChunk->ContentRange.GetValue().substr( + firstChunk->ContentRange.GetValue().find('/') + 1)); blobRangeSize = blobSize - firstChunkOffset; if (options.Length.HasValue()) { @@ -195,7 +196,7 @@ namespace Azure { namespace Storage { namespace Blobs { } else { - blobSize = firstChunk.BodyStream->Length(); + blobSize = firstChunk->BodyStream->Length(); blobRangeSize = blobSize; } firstChunkLength = std::min(firstChunkLength, blobRangeSize); @@ -207,25 +208,27 @@ namespace Azure { namespace Storage { namespace Blobs { } int64_t bytesRead = Azure::Core::Http::BodyStream::ReadToCount( - firstChunkOptions.Context, *firstChunk.BodyStream, buffer, firstChunkLength); + firstChunkOptions.Context, *(firstChunk->BodyStream), buffer, firstChunkLength); if (bytesRead != firstChunkLength) { throw std::runtime_error("error when reading body stream"); } - firstChunk.BodyStream.reset(); + firstChunk->BodyStream.reset(); - auto returnTypeConverter = [](BlobDownloadResponse& response) { + auto returnTypeConverter = [](Azure::Core::Response& response) { BlobDownloadInfo ret; - ret.ETag = std::move(response.ETag); - ret.LastModified = std::move(response.LastModified); - ret.HttpHeaders = std::move(response.HttpHeaders); - ret.Metadata = std::move(response.Metadata); - ret.BlobType = response.BlobType; - ret.ServerEncrypted = response.ServerEncrypted; - ret.EncryptionKeySHA256 = std::move(response.EncryptionKeySHA256); - return ret; + ret.ETag = std::move(response->ETag); + ret.LastModified = std::move(response->LastModified); + ret.HttpHeaders = std::move(response->HttpHeaders); + ret.Metadata = std::move(response->Metadata); + ret.BlobType = response->BlobType; + ret.ServerEncrypted = response->ServerEncrypted; + ret.EncryptionKeySHA256 = std::move(response->EncryptionKeySHA256); + return Azure::Core::Response( + std::move(ret), + std::make_unique(std::move(response.GetRawResponse()))); }; - BlobDownloadInfo ret = returnTypeConverter(firstChunk); + auto ret = returnTypeConverter(firstChunk); // Keep downloading the remaining in parallel auto downloadChunkFunc @@ -237,7 +240,7 @@ namespace Azure { namespace Storage { namespace Blobs { auto chunk = Download(chunkOptions); int64_t bytesRead = Azure::Core::Http::BodyStream::ReadToCount( chunkOptions.Context, - *chunk.BodyStream, + *(chunk->BodyStream), buffer + (offset - firstChunkOffset), chunkOptions.Length.GetValue()); if (bytesRead != chunkOptions.Length.GetValue()) @@ -268,11 +271,11 @@ namespace Azure { namespace Storage { namespace Blobs { Details::ConcurrentTransfer( remainingOffset, remainingSize, chunkSize, options.Concurrency, downloadChunkFunc); - ret.ContentLength = blobRangeSize; + ret->ContentLength = blobRangeSize; return ret; } - BlobDownloadInfo BlobClient::DownloadToFile( + Azure::Core::Response BlobClient::DownloadToFile( const std::string& file, const DownloadBlobToFileOptions& options) const { @@ -308,8 +311,8 @@ namespace Azure { namespace Storage { namespace Blobs { int64_t blobRangeSize; if (firstChunkOptions.Offset.HasValue()) { - blobSize = std::stoll(firstChunk.ContentRange.GetValue().substr( - firstChunk.ContentRange.GetValue().find('/') + 1)); + blobSize = std::stoll(firstChunk->ContentRange.GetValue().substr( + firstChunk->ContentRange.GetValue().find('/') + 1)); blobRangeSize = blobSize - firstChunkOffset; if (options.Length.HasValue()) { @@ -318,7 +321,7 @@ namespace Azure { namespace Storage { namespace Blobs { } else { - blobSize = firstChunk.BodyStream->Length(); + blobSize = firstChunk->BodyStream->Length(); blobRangeSize = blobSize; } firstChunkLength = std::min(firstChunkLength, blobRangeSize); @@ -346,21 +349,23 @@ namespace Azure { namespace Storage { namespace Blobs { }; bodyStreamToFile( - *firstChunk.BodyStream, fileWriter, 0, firstChunkLength, firstChunkOptions.Context); - firstChunk.BodyStream.reset(); + *(firstChunk->BodyStream), fileWriter, 0, firstChunkLength, firstChunkOptions.Context); + firstChunk->BodyStream.reset(); - auto returnTypeConverter = [](BlobDownloadResponse& response) { + auto returnTypeConverter = [](Azure::Core::Response& response) { BlobDownloadInfo ret; - ret.ETag = std::move(response.ETag); - ret.LastModified = std::move(response.LastModified); - ret.HttpHeaders = std::move(response.HttpHeaders); - ret.Metadata = std::move(response.Metadata); - ret.BlobType = response.BlobType; - ret.ServerEncrypted = response.ServerEncrypted; - ret.EncryptionKeySHA256 = std::move(response.EncryptionKeySHA256); - return ret; + ret.ETag = std::move(response->ETag); + ret.LastModified = std::move(response->LastModified); + ret.HttpHeaders = std::move(response->HttpHeaders); + ret.Metadata = std::move(response->Metadata); + ret.BlobType = response->BlobType; + ret.ServerEncrypted = response->ServerEncrypted; + ret.EncryptionKeySHA256 = std::move(response->EncryptionKeySHA256); + return Azure::Core::Response( + std::move(ret), + std::make_unique(std::move(response.GetRawResponse()))); }; - BlobDownloadInfo ret = returnTypeConverter(firstChunk); + auto ret = returnTypeConverter(firstChunk); // Keep downloading the remaining in parallel auto downloadChunkFunc @@ -371,7 +376,7 @@ namespace Azure { namespace Storage { namespace Blobs { chunkOptions.Length = length; auto chunk = Download(chunkOptions); bodyStreamToFile( - *chunk.BodyStream, + *(chunk->BodyStream), fileWriter, offset - firstChunkOffset, chunkOptions.Length.GetValue(), @@ -400,11 +405,12 @@ namespace Azure { namespace Storage { namespace Blobs { Details::ConcurrentTransfer( remainingOffset, remainingSize, chunkSize, options.Concurrency, downloadChunkFunc); - ret.ContentLength = blobRangeSize; + ret->ContentLength = blobRangeSize; return ret; } - BlobProperties BlobClient::GetProperties(const GetBlobPropertiesOptions& options) const + Azure::Core::Response BlobClient::GetProperties( + const GetBlobPropertiesOptions& options) const { BlobRestClient::Blob::GetPropertiesOptions protocolLayerOptions; protocolLayerOptions.LeaseId = options.AccessConditions.LeaseId; @@ -416,7 +422,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - SetBlobHttpHeadersResponse BlobClient::SetHttpHeaders( + Azure::Core::Response BlobClient::SetHttpHeaders( BlobHttpHeaders httpHeaders, const SetBlobHttpHeadersOptions& options) const { @@ -431,7 +437,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - SetBlobMetadataResponse BlobClient::SetMetadata( + Azure::Core::Response BlobClient::SetMetadata( std::map metadata, const SetBlobMetadataOptions& options) const { @@ -446,7 +452,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - SetAccessTierResponse BlobClient::SetAccessTier( + Azure::Core::Response BlobClient::SetAccessTier( AccessTier Tier, const SetAccessTierOptions& options) const { @@ -457,7 +463,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - BlobCopyInfo BlobClient::StartCopyFromUri( + Azure::Core::Response BlobClient::StartCopyFromUri( const std::string& sourceUri, const StartCopyFromUriOptions& options) const { @@ -480,7 +486,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - AbortCopyBlobResponse BlobClient::AbortCopyFromUri( + Azure::Core::Response BlobClient::AbortCopyFromUri( const std::string& copyId, const AbortCopyFromUriOptions& options) const { @@ -491,7 +497,8 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - BlobSnapshotInfo BlobClient::CreateSnapshot(const CreateSnapshotOptions& options) const + Azure::Core::Response BlobClient::CreateSnapshot( + const CreateSnapshotOptions& options) const { BlobRestClient::Blob::CreateSnapshotOptions protocolLayerOptions; protocolLayerOptions.Metadata = options.Metadata; @@ -504,7 +511,8 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - DeleteBlobResponse BlobClient::Delete(const DeleteBlobOptions& options) const + Azure::Core::Response BlobClient::Delete( + const DeleteBlobOptions& options) const { BlobRestClient::Blob::DeleteOptions protocolLayerOptions; protocolLayerOptions.DeleteSnapshots = options.DeleteSnapshots; @@ -517,7 +525,8 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - UndeleteBlobResponse BlobClient::Undelete(const UndeleteBlobOptions& options) const + Azure::Core::Response BlobClient::Undelete( + const UndeleteBlobOptions& options) const { BlobRestClient::Blob::UndeleteOptions protocolLayerOptions; return BlobRestClient::Blob::Undelete( diff --git a/sdk/storage/src/blobs/blob_container_client.cpp b/sdk/storage/src/blobs/blob_container_client.cpp index d0e065c4f..c2afb9aa7 100644 --- a/sdk/storage/src/blobs/blob_container_client.cpp +++ b/sdk/storage/src/blobs/blob_container_client.cpp @@ -126,7 +126,8 @@ namespace Azure { namespace Storage { namespace Blobs { return GetBlobClient(blobName).GetPageBlobClient(); } - BlobContainerInfo BlobContainerClient::Create(const CreateBlobContainerOptions& options) const + Azure::Core::Response BlobContainerClient::Create( + const CreateBlobContainerOptions& options) const { BlobRestClient::Container::CreateOptions protocolLayerOptions; protocolLayerOptions.AccessType = options.AccessType; @@ -135,7 +136,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_containerUrl.ToString(), protocolLayerOptions); } - DeleteContainerResponse BlobContainerClient::Delete( + Azure::Core::Response BlobContainerClient::Delete( const DeleteBlobContainerOptions& options) const { BlobRestClient::Container::DeleteOptions protocolLayerOptions; @@ -146,7 +147,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_containerUrl.ToString(), protocolLayerOptions); } - BlobContainerProperties BlobContainerClient::GetProperties( + Azure::Core::Response BlobContainerClient::GetProperties( const GetBlobContainerPropertiesOptions& options) const { BlobRestClient::Container::GetPropertiesOptions protocolLayerOptions; @@ -155,7 +156,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_containerUrl.ToString(), protocolLayerOptions); } - SetContainerMetadataResponse BlobContainerClient::SetMetadata( + Azure::Core::Response BlobContainerClient::SetMetadata( std::map metadata, SetBlobContainerMetadataOptions options) const { @@ -167,7 +168,8 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_containerUrl.ToString(), protocolLayerOptions); } - BlobsFlatSegment BlobContainerClient::ListBlobsFlat(const ListBlobsOptions& options) const + Azure::Core::Response BlobContainerClient::ListBlobsFlat( + const ListBlobsOptions& options) const { BlobRestClient::Container::ListBlobsFlatOptions protocolLayerOptions; protocolLayerOptions.Prefix = options.Prefix; @@ -178,7 +180,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_containerUrl.ToString(), protocolLayerOptions); } - BlobsHierarchySegment BlobContainerClient::ListBlobsByHierarchy( + Azure::Core::Response BlobContainerClient::ListBlobsByHierarchy( const std::string& delimiter, const ListBlobsOptions& options) const { diff --git a/sdk/storage/src/blobs/blob_service_client.cpp b/sdk/storage/src/blobs/blob_service_client.cpp index fb69893da..42850ead4 100644 --- a/sdk/storage/src/blobs/blob_service_client.cpp +++ b/sdk/storage/src/blobs/blob_service_client.cpp @@ -107,7 +107,7 @@ namespace Azure { namespace Storage { namespace Blobs { return BlobContainerClient(std::move(containerUri), m_pipeline); } - ListContainersSegment BlobServiceClient::ListBlobContainersSegment( + Azure::Core::Response BlobServiceClient::ListBlobContainersSegment( const ListBlobContainersOptions& options) const { BlobRestClient::Service::ListBlobContainersOptions protocolLayerOptions; @@ -119,7 +119,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_serviceUrl.ToString(), protocolLayerOptions); } - UserDelegationKey BlobServiceClient::GetUserDelegationKey( + Azure::Core::Response BlobServiceClient::GetUserDelegationKey( const std::string& startsOn, const std::string& expiresOn, const GetUserDelegationKeyOptions& options) const diff --git a/sdk/storage/src/blobs/block_blob_client.cpp b/sdk/storage/src/blobs/block_blob_client.cpp index 9933e0cac..d797a6294 100644 --- a/sdk/storage/src/blobs/block_blob_client.cpp +++ b/sdk/storage/src/blobs/block_blob_client.cpp @@ -61,7 +61,7 @@ namespace Azure { namespace Storage { namespace Blobs { return newClient; } - BlobContentInfo BlockBlobClient::Upload( + Azure::Core::Response BlockBlobClient::Upload( Azure::Core::Http::BodyStream* content, const UploadBlockBlobOptions& options) const { @@ -80,7 +80,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), *content, protocolLayerOptions); } - BlobContentInfo BlockBlobClient::UploadFromBuffer( + Azure::Core::Response BlockBlobClient::UploadFromBuffer( const uint8_t* buffer, std::size_t bufferSize, const UploadBlobOptions& options) const @@ -133,12 +133,12 @@ namespace Azure { namespace Storage { namespace Blobs { commitBlockListOptions.Metadata = options.Metadata; commitBlockListOptions.Tier = options.Tier; auto commitBlockListResponse = CommitBlockList(blockIds, commitBlockListOptions); - commitBlockListResponse.ContentCRC64.Reset(); - commitBlockListResponse.ContentMD5.Reset(); + commitBlockListResponse->ContentCRC64.Reset(); + commitBlockListResponse->ContentMD5.Reset(); return commitBlockListResponse; } - BlobContentInfo BlockBlobClient::UploadFromFile( + Azure::Core::Response BlockBlobClient::UploadFromFile( const std::string& file, const UploadBlobOptions& options) const { @@ -194,12 +194,12 @@ namespace Azure { namespace Storage { namespace Blobs { commitBlockListOptions.Metadata = options.Metadata; commitBlockListOptions.Tier = options.Tier; auto commitBlockListResponse = CommitBlockList(blockIds, commitBlockListOptions); - commitBlockListResponse.ContentCRC64.Reset(); - commitBlockListResponse.ContentMD5.Reset(); + commitBlockListResponse->ContentCRC64.Reset(); + commitBlockListResponse->ContentMD5.Reset(); return commitBlockListResponse; } - BlockInfo BlockBlobClient::StageBlock( + Azure::Core::Response BlockBlobClient::StageBlock( const std::string& blockId, Azure::Core::Http::BodyStream* content, const StageBlockOptions& options) const @@ -213,7 +213,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), *content, protocolLayerOptions); } - BlockInfo BlockBlobClient::StageBlockFromUri( + Azure::Core::Response BlockBlobClient::StageBlockFromUri( const std::string& blockId, const std::string& sourceUri, const StageBlockFromUriOptions& options) const @@ -245,7 +245,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - BlobContentInfo BlockBlobClient::CommitBlockList( + Azure::Core::Response BlockBlobClient::CommitBlockList( const std::vector>& blockIds, const CommitBlockListOptions& options) const { @@ -263,7 +263,8 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - BlobBlockListInfo BlockBlobClient::GetBlockList(const GetBlockListOptions& options) const + Azure::Core::Response BlockBlobClient::GetBlockList( + const GetBlockListOptions& options) const { BlobRestClient::BlockBlob::GetBlockListOptions protocolLayerOptions; protocolLayerOptions.ListType = options.ListType; diff --git a/sdk/storage/src/blobs/page_blob_client.cpp b/sdk/storage/src/blobs/page_blob_client.cpp index 4a6f1b417..c7b4711aa 100644 --- a/sdk/storage/src/blobs/page_blob_client.cpp +++ b/sdk/storage/src/blobs/page_blob_client.cpp @@ -56,7 +56,7 @@ namespace Azure { namespace Storage { namespace Blobs { return newClient; } - BlobContentInfo PageBlobClient::Create( + Azure::Core::Response PageBlobClient::Create( int64_t blobContentLength, const CreatePageBlobOptions& options) { @@ -75,7 +75,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - PageInfo PageBlobClient::UploadPages( + Azure::Core::Response PageBlobClient::UploadPages( Azure::Core::Http::BodyStream* content, int64_t offset, const UploadPagesOptions& options) @@ -93,7 +93,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), *content, protocolLayerOptions); } - PageInfo PageBlobClient::UploadPagesFromUri( + Azure::Core::Response PageBlobClient::UploadPagesFromUri( std::string sourceUri, int64_t sourceOffset, int64_t sourceLength, @@ -117,7 +117,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - PageInfo PageBlobClient::ClearPages( + Azure::Core::Response PageBlobClient::ClearPages( int64_t offset, int64_t length, const ClearPagesOptions& options) @@ -133,7 +133,7 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - PageBlobInfo PageBlobClient::Resize( + Azure::Core::Response PageBlobClient::Resize( int64_t blobContentLength, const ResizePageBlobOptions& options) { @@ -148,7 +148,8 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); } - PageRangesInfo PageBlobClient::GetPageRanges(const GetPageRangesOptions& options) + Azure::Core::Response PageBlobClient::GetPageRanges( + const GetPageRangesOptions& options) { BlobRestClient::PageBlob::GetPageRangesOptions protocolLayerOptions; protocolLayerOptions.PreviousSnapshot = options.PreviousSnapshot; @@ -167,25 +168,24 @@ namespace Azure { namespace Storage { namespace Blobs { options.Context, *m_pipeline, m_blobUrl.ToString(), protocolLayerOptions); PageRangesInfo ret; - ret.RequestId = std::move(protocolLayerResponse.RequestId); - ret.Date = std::move(protocolLayerResponse.Date); - ret.Version = std::move(protocolLayerResponse.Version); - ret.ClientRequestId = std::move(protocolLayerResponse.ClientRequestId); - ret.ETag = std::move(protocolLayerResponse.ETag); - ret.LastModified = std::move(protocolLayerResponse.LastModified); - ret.BlobContentLength = protocolLayerResponse.BlobContentLength; - for (const auto& range : protocolLayerResponse.PageRanges) + ret.ETag = std::move(protocolLayerResponse->ETag); + ret.LastModified = std::move(protocolLayerResponse->LastModified); + ret.BlobContentLength = protocolLayerResponse->BlobContentLength; + for (const auto& range : protocolLayerResponse->PageRanges) { ret.PageRanges.emplace_back(PageRange{range.first, range.second - range.first + 1}); } - for (const auto& range : protocolLayerResponse.ClearRanges) + for (const auto& range : protocolLayerResponse->ClearRanges) { ret.ClearRanges.emplace_back(PageRange{range.first, range.second - range.first + 1}); } - return ret; + return Azure::Core::Response( + std::move(ret), + std::make_unique( + std::move(protocolLayerResponse.GetRawResponse()))); } - BlobCopyInfo PageBlobClient::StartCopyIncremental( + Azure::Core::Response PageBlobClient::StartCopyIncremental( const std::string& sourceUri, const IncrementalCopyPageBlobOptions& options) { diff --git a/sdk/storage/test/blobs/append_blob_client_test.cpp b/sdk/storage/test/blobs/append_blob_client_test.cpp index c679c0d9a..c683b474b 100644 --- a/sdk/storage/test/blobs/append_blob_client_test.cpp +++ b/sdk/storage/test/blobs/append_blob_client_test.cpp @@ -33,7 +33,7 @@ namespace Azure { namespace Storage { namespace Test { = Azure::Core::Http::MemoryBodyStream(m_blobContent.data(), m_blobContent.size()); m_appendBlobClient->AppendBlock(&blockContent); m_blobUploadOptions.HttpHeaders.ContentMD5 - = m_appendBlobClient->GetProperties().HttpHeaders.ContentMD5; + = m_appendBlobClient->GetProperties()->HttpHeaders.ContentMD5; } void AppendBlobClientTest::TearDownTestSuite() { BlobContainerClientTest::TearDownTestSuite(); } @@ -44,7 +44,7 @@ namespace Azure { namespace Storage { namespace Test { StandardStorageConnectionString(), m_containerName, RandomString()); appendBlobClient.Create(m_blobUploadOptions); - auto properties = appendBlobClient.GetProperties(); + auto properties = *appendBlobClient.GetProperties(); EXPECT_TRUE(properties.CommittedBlockCount.HasValue()); EXPECT_EQ(properties.CommittedBlockCount.GetValue(), 0); EXPECT_EQ(properties.ContentLength, 0); @@ -52,7 +52,7 @@ namespace Azure { namespace Storage { namespace Test { auto blockContent = Azure::Core::Http::MemoryBodyStream(m_blobContent.data(), m_blobContent.size()); appendBlobClient.AppendBlock(&blockContent); - properties = appendBlobClient.GetProperties(); + properties = *appendBlobClient.GetProperties(); EXPECT_EQ(properties.CommittedBlockCount.GetValue(), 1); EXPECT_EQ(properties.ContentLength, static_cast(m_blobContent.size())); @@ -64,7 +64,7 @@ namespace Azure { namespace Storage { namespace Test { blockContent = Azure::Core::Http::MemoryBodyStream(m_blobContent.data(), m_blobContent.size()); appendBlobClient.AppendBlock(&blockContent, options); - properties = appendBlobClient.GetProperties(); + properties = *appendBlobClient.GetProperties(); options = Azure::Storage::Blobs::AppendBlockOptions(); options.AccessConditions.MaxSize = properties.ContentLength + m_blobContent.size() - 1; blockContent = Azure::Core::Http::MemoryBodyStream(m_blobContent.data(), m_blobContent.size()); diff --git a/sdk/storage/test/blobs/blob_container_client_test.cpp b/sdk/storage/test/blobs/blob_container_client_test.cpp index ef887327f..2040864ba 100644 --- a/sdk/storage/test/blobs/blob_container_client_test.cpp +++ b/sdk/storage/test/blobs/blob_container_client_test.cpp @@ -32,17 +32,17 @@ namespace Azure { namespace Storage { namespace Test { metadata["key2"] = "TWO"; options.Metadata = metadata; auto res = container_client.Create(options); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_FALSE(res.Version.empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); EXPECT_THROW(container_client.Create(), std::runtime_error); auto res2 = container_client.Delete(); - EXPECT_FALSE(res2.RequestId.empty()); - EXPECT_FALSE(res2.Date.empty()); - EXPECT_FALSE(res2.Version.empty()); + EXPECT_FALSE(res2.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res2.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res2.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); } TEST_F(BlobContainerClientTest, Metadata) @@ -51,23 +51,24 @@ namespace Azure { namespace Storage { namespace Test { metadata["key1"] = "one"; metadata["key2"] = "TWO"; auto res = m_blobContainerClient->SetMetadata(metadata); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_FALSE(res.Version.empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); - auto properties = m_blobContainerClient->GetProperties(); - EXPECT_FALSE(properties.RequestId.empty()); - EXPECT_FALSE(properties.Date.empty()); + auto res2 = m_blobContainerClient->GetProperties(); + EXPECT_FALSE(res2.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res2.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res2.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + auto properties = *res2; EXPECT_FALSE(properties.ETag.empty()); EXPECT_FALSE(properties.LastModified.empty()); - EXPECT_FALSE(properties.Version.empty()); EXPECT_EQ(properties.Metadata, metadata); metadata.clear(); m_blobContainerClient->SetMetadata(metadata); - properties = m_blobContainerClient->GetProperties(); + properties = *m_blobContainerClient->GetProperties(); EXPECT_TRUE(properties.Metadata.empty()); } @@ -106,15 +107,14 @@ namespace Azure { namespace Storage { namespace Test { do { auto res = m_blobContainerClient->ListBlobsFlat(options); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - ; - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.ServiceEndpoint.empty()); - EXPECT_EQ(res.Container, m_containerName); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ServiceEndpoint.empty()); + EXPECT_EQ(res->Container, m_containerName); - options.Marker = res.NextMarker; - for (const auto& blob : res.Items) + options.Marker = res->NextMarker; + for (const auto& blob : res->Items) { EXPECT_FALSE(blob.Name.empty()); EXPECT_FALSE(blob.CreationTime.empty()); @@ -133,8 +133,8 @@ namespace Azure { namespace Storage { namespace Test { do { auto res = m_blobContainerClient->ListBlobsFlat(options); - options.Marker = res.NextMarker; - for (const auto& blob : res.Items) + options.Marker = res->NextMarker; + for (const auto& blob : res->Items) { listBlobs.insert(blob.Name); } @@ -167,16 +167,16 @@ namespace Azure { namespace Storage { namespace Test { while (true) { auto res = m_blobContainerClient->ListBlobsByHierarchy(delimiter, options); - EXPECT_EQ(res.Delimiter, delimiter); - EXPECT_EQ(res.Prefix, options.Prefix.GetValue()); - EXPECT_TRUE(res.Items.empty()); - for (const auto& i : res.BlobPrefixes) + EXPECT_EQ(res->Delimiter, delimiter); + EXPECT_EQ(res->Prefix, options.Prefix.GetValue()); + EXPECT_TRUE(res->Items.empty()); + for (const auto& i : res->BlobPrefixes) { items.emplace(i.Name); } - if (!res.NextMarker.empty()) + if (!res->NextMarker.empty()) { - options.Marker = res.NextMarker; + options.Marker = res->NextMarker; } else { @@ -192,16 +192,16 @@ namespace Azure { namespace Storage { namespace Test { while (true) { auto res = m_blobContainerClient->ListBlobsByHierarchy(delimiter, options); - EXPECT_EQ(res.Delimiter, delimiter); - EXPECT_EQ(res.Prefix, options.Prefix.GetValue()); - EXPECT_TRUE(res.BlobPrefixes.empty()); - for (const auto& i : res.Items) + EXPECT_EQ(res->Delimiter, delimiter); + EXPECT_EQ(res->Prefix, options.Prefix.GetValue()); + EXPECT_TRUE(res->BlobPrefixes.empty()); + for (const auto& i : res->Items) { items.emplace(i.Name); } - if (!res.NextMarker.empty()) + if (!res->NextMarker.empty()) { - options.Marker = res.NextMarker; + options.Marker = res->NextMarker; } else { diff --git a/sdk/storage/test/blobs/blob_service_client_test.cpp b/sdk/storage/test/blobs/blob_service_client_test.cpp index 9b2e6fc51..456b82a5f 100644 --- a/sdk/storage/test/blobs/blob_service_client_test.cpp +++ b/sdk/storage/test/blobs/blob_service_client_test.cpp @@ -49,13 +49,13 @@ namespace Azure { namespace Storage { namespace Test { do { auto res = m_blobServiceClient.ListBlobContainersSegment(options); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.ServiceEndpoint.empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ServiceEndpoint.empty()); - options.Marker = res.NextMarker; - for (const auto& container : res.Items) + options.Marker = res->NextMarker; + for (const auto& container : res->Items) { listContainers.insert(container.Name); } @@ -71,13 +71,13 @@ namespace Azure { namespace Storage { namespace Test { do { auto res = m_blobServiceClient.ListBlobContainersSegment(options); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.ServiceEndpoint.empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ServiceEndpoint.empty()); - options.Marker = res.NextMarker; - for (const auto& container : res.Items) + options.Marker = res->NextMarker; + for (const auto& container : res->Items) { EXPECT_FALSE(container.Name.empty()); EXPECT_FALSE(container.ETag.empty()); diff --git a/sdk/storage/test/blobs/block_blob_client_test.cpp b/sdk/storage/test/blobs/block_blob_client_test.cpp index 03e6574ef..330ce319d 100644 --- a/sdk/storage/test/blobs/block_blob_client_test.cpp +++ b/sdk/storage/test/blobs/block_blob_client_test.cpp @@ -53,7 +53,7 @@ namespace Azure { namespace Storage { namespace Test { = Azure::Core::Http::MemoryBodyStream(m_blobContent.data(), m_blobContent.size()); m_blockBlobClient->Upload(&blobContent, m_blobUploadOptions); m_blobUploadOptions.HttpHeaders.ContentMD5 - = m_blockBlobClient->GetProperties().HttpHeaders.ContentMD5; + = m_blockBlobClient->GetProperties()->HttpHeaders.ContentMD5; } void BlockBlobClientTest::TearDownTestSuite() { BlobContainerClientTest::TearDownTestSuite(); } @@ -76,26 +76,26 @@ namespace Azure { namespace Storage { namespace Test { TEST_F(BlockBlobClientTest, UploadDownload) { auto res = m_blockBlobClient->Download(); - EXPECT_EQ(ReadBodyStream(res.BodyStream), m_blobContent); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_EQ(res.HttpHeaders, m_blobUploadOptions.HttpHeaders); - EXPECT_EQ(res.Metadata, m_blobUploadOptions.Metadata); - EXPECT_EQ(res.BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); + EXPECT_EQ(ReadBodyStream(res->BodyStream), m_blobContent); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_EQ(res->HttpHeaders, m_blobUploadOptions.HttpHeaders); + EXPECT_EQ(res->Metadata, m_blobUploadOptions.Metadata); + EXPECT_EQ(res->BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); Azure::Storage::Blobs::DownloadBlobOptions options; options.Offset = 1_MB; options.Length = 2_MB; res = m_blockBlobClient->Download(options); EXPECT_EQ( - ReadBodyStream(res.BodyStream), + ReadBodyStream(res->BodyStream), std::vector( m_blobContent.begin() + static_cast(options.Offset.GetValue()), m_blobContent.begin() + static_cast(options.Offset.GetValue() + options.Length.GetValue()))); - EXPECT_FALSE(res.ContentRange.GetValue().empty()); + EXPECT_FALSE(res->ContentRange.GetValue().empty()); } TEST_F(BlockBlobClientTest, DownloadEmpty) @@ -110,15 +110,15 @@ namespace Azure { namespace Storage { namespace Test { blockBlobClient.SetMetadata(m_blobUploadOptions.Metadata); auto res = blockBlobClient.Download(); - EXPECT_EQ(res.BodyStream->Length(), 0); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_EQ(res.HttpHeaders, m_blobUploadOptions.HttpHeaders); - EXPECT_EQ(res.Metadata, m_blobUploadOptions.Metadata); - EXPECT_EQ(res.BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); + EXPECT_EQ(res->BodyStream->Length(), 0); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_EQ(res->HttpHeaders, m_blobUploadOptions.HttpHeaders); + EXPECT_EQ(res->Metadata, m_blobUploadOptions.Metadata); + EXPECT_EQ(res->BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); Azure::Storage::Blobs::DownloadBlobOptions options; options.Offset = 0; @@ -132,17 +132,17 @@ namespace Azure { namespace Storage { namespace Test { auto blobClient = m_blobContainerClient->GetBlobClient(RandomString()); auto res = blobClient.StartCopyFromUri(m_blockBlobClient->GetUri()); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_FALSE(res.CopyId.empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_FALSE(res->CopyId.empty()); EXPECT_TRUE( - res.CopyStatus == Azure::Storage::Blobs::CopyStatus::Pending - || res.CopyStatus == Azure::Storage::Blobs::CopyStatus::Success); - auto properties = blobClient.GetProperties(); - EXPECT_EQ(properties.CopyId.GetValue(), res.CopyId); + res->CopyStatus == Azure::Storage::Blobs::CopyStatus::Pending + || res->CopyStatus == Azure::Storage::Blobs::CopyStatus::Success); + auto properties = *blobClient.GetProperties(); + EXPECT_EQ(properties.CopyId.GetValue(), res->CopyId); EXPECT_FALSE(properties.CopySource.GetValue().empty()); EXPECT_TRUE( properties.CopyStatus.GetValue() == Azure::Storage::Blobs::CopyStatus::Pending @@ -157,15 +157,15 @@ namespace Azure { namespace Storage { namespace Test { TEST_F(BlockBlobClientTest, SnapShot) { auto res = m_blockBlobClient->CreateSnapshot(); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_FALSE(res.Snapshot.empty()); - auto snapshotClient = m_blockBlobClient->WithSnapshot(res.Snapshot); - EXPECT_EQ(ReadBodyStream(snapshotClient.Download().BodyStream), m_blobContent); - EXPECT_EQ(snapshotClient.GetProperties().Metadata, m_blobUploadOptions.Metadata); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_FALSE(res->Snapshot.empty()); + auto snapshotClient = m_blockBlobClient->WithSnapshot(res->Snapshot); + EXPECT_EQ(ReadBodyStream(snapshotClient.Download()->BodyStream), m_blobContent); + EXPECT_EQ(snapshotClient.GetProperties()->Metadata, m_blobUploadOptions.Metadata); auto emptyContent = Azure::Core::Http::MemoryBodyStream(nullptr, 0); EXPECT_THROW(snapshotClient.Upload(&emptyContent), std::runtime_error); EXPECT_THROW(snapshotClient.SetMetadata({}), std::runtime_error); @@ -178,9 +178,9 @@ namespace Azure { namespace Storage { namespace Test { Azure::Storage::Blobs::CreateSnapshotOptions options; options.Metadata = {{"snapshotkey1", "snapshotvalue1"}, {"snapshotkey2", "SNAPSHOTVALUE2"}}; res = m_blockBlobClient->CreateSnapshot(options); - EXPECT_FALSE(res.Snapshot.empty()); - snapshotClient = m_blockBlobClient->WithSnapshot(res.Snapshot); - EXPECT_EQ(snapshotClient.GetProperties().Metadata, options.Metadata); + EXPECT_FALSE(res->Snapshot.empty()); + snapshotClient = m_blockBlobClient->WithSnapshot(res->Snapshot); + EXPECT_EQ(snapshotClient.GetProperties()->Metadata, options.Metadata); } TEST_F(BlockBlobClientTest, Properties) @@ -195,17 +195,17 @@ namespace Azure { namespace Storage { namespace Test { blockBlobClient.SetHttpHeaders(m_blobUploadOptions.HttpHeaders); auto res = blockBlobClient.GetProperties(); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_FALSE(res.CreationTime.empty()); - EXPECT_EQ(res.Metadata, m_blobUploadOptions.Metadata); - EXPECT_EQ(res.ContentLength, static_cast(m_blobContent.size())); - EXPECT_EQ(res.HttpHeaders, m_blobUploadOptions.HttpHeaders); - EXPECT_EQ(res.Tier.GetValue(), Azure::Storage::Blobs::AccessTier::Cool); - EXPECT_FALSE(res.AccessTierChangeTime.GetValue().empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_FALSE(res->CreationTime.empty()); + EXPECT_EQ(res->Metadata, m_blobUploadOptions.Metadata); + EXPECT_EQ(res->ContentLength, static_cast(m_blobContent.size())); + EXPECT_EQ(res->HttpHeaders, m_blobUploadOptions.HttpHeaders); + EXPECT_EQ(res->Tier.GetValue(), Azure::Storage::Blobs::AccessTier::Cool); + EXPECT_FALSE(res->AccessTierChangeTime.GetValue().empty()); } TEST_F(BlockBlobClientTest, StageBlock) @@ -226,16 +226,16 @@ namespace Azure { namespace Storage { namespace Test { blockBlobClient.CommitBlockList( {{Azure::Storage::Blobs::BlockType::Uncommitted, blockId1}}, options); auto res = blockBlobClient.GetBlockList(); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_EQ(res.ContentLength, static_cast(block1Content.size())); - ASSERT_FALSE(res.CommittedBlocks.empty()); - EXPECT_EQ(res.CommittedBlocks[0].Name, blockId1); - EXPECT_EQ(res.CommittedBlocks[0].Size, static_cast(block1Content.size())); - EXPECT_TRUE(res.UncommittedBlocks.empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderRequestId).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderDate).empty()); + EXPECT_FALSE(res.GetRawResponse().GetHeaders().at(Details::c_HttpHeaderXMsVersion).empty()); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_EQ(res->ContentLength, static_cast(block1Content.size())); + ASSERT_FALSE(res->CommittedBlocks.empty()); + EXPECT_EQ(res->CommittedBlocks[0].Name, blockId1); + EXPECT_EQ(res->CommittedBlocks[0].Size, static_cast(block1Content.size())); + EXPECT_TRUE(res->UncommittedBlocks.empty()); // TODO: StageBlockFromUri must be authorized with SAS, but we don't have SAS for now. /* @@ -268,11 +268,11 @@ namespace Azure { namespace Storage { namespace Test { downloadBuffer.assign(downloadBuffer.size(), '\x00'); auto res = m_blockBlobClient->DownloadToBuffer(downloadBuffer.data(), downloadBuffer.size()); EXPECT_EQ(downloadBuffer, m_blobContent); - EXPECT_EQ(static_cast(res.ContentLength), downloadBuffer.size()); + EXPECT_EQ(static_cast(res->ContentLength), downloadBuffer.size()); res = m_blockBlobClient->DownloadToFile(tempFilename); auto downloadFile = ReadFile(tempFilename); EXPECT_EQ(downloadFile, m_blobContent); - EXPECT_EQ(static_cast(res.ContentLength), downloadFile.size()); + EXPECT_EQ(static_cast(res->ContentLength), downloadFile.size()); DeleteFile(tempFilename); // download whole blob @@ -280,11 +280,11 @@ namespace Azure { namespace Storage { namespace Test { options.Offset = 0; res = m_blockBlobClient->DownloadToBuffer(downloadBuffer.data(), downloadBuffer.size()); EXPECT_EQ(downloadBuffer, m_blobContent); - EXPECT_EQ(static_cast(res.ContentLength), downloadBuffer.size()); + EXPECT_EQ(static_cast(res->ContentLength), downloadBuffer.size()); res = m_blockBlobClient->DownloadToFile(tempFilename); downloadFile = ReadFile(tempFilename); EXPECT_EQ(downloadFile, m_blobContent); - EXPECT_EQ(static_cast(res.ContentLength), downloadFile.size()); + EXPECT_EQ(static_cast(res->ContentLength), downloadFile.size()); DeleteFile(tempFilename); // download whole blob @@ -293,11 +293,11 @@ namespace Azure { namespace Storage { namespace Test { options.Length = downloadBuffer.size(); res = m_blockBlobClient->DownloadToBuffer(downloadBuffer.data(), downloadBuffer.size()); EXPECT_EQ(downloadBuffer, m_blobContent); - EXPECT_EQ(static_cast(res.ContentLength), downloadBuffer.size()); + EXPECT_EQ(static_cast(res->ContentLength), downloadBuffer.size()); res = m_blockBlobClient->DownloadToFile(tempFilename); downloadFile = ReadFile(tempFilename); EXPECT_EQ(downloadFile, m_blobContent); - EXPECT_EQ(static_cast(res.ContentLength), downloadFile.size()); + EXPECT_EQ(static_cast(res->ContentLength), downloadFile.size()); DeleteFile(tempFilename); // download whole blob @@ -306,11 +306,11 @@ namespace Azure { namespace Storage { namespace Test { options.Length = downloadBuffer.size() * 2; res = m_blockBlobClient->DownloadToBuffer(downloadBuffer.data(), downloadBuffer.size() * 2); EXPECT_EQ(downloadBuffer, m_blobContent); - EXPECT_EQ(static_cast(res.ContentLength), downloadBuffer.size()); + EXPECT_EQ(static_cast(res->ContentLength), downloadBuffer.size()); res = m_blockBlobClient->DownloadToFile(tempFilename); downloadFile = ReadFile(tempFilename); EXPECT_EQ(downloadFile, m_blobContent); - EXPECT_EQ(static_cast(res.ContentLength), downloadFile.size()); + EXPECT_EQ(static_cast(res->ContentLength), downloadFile.size()); DeleteFile(tempFilename); options.InitialChunkSize = 4_KB; @@ -334,7 +334,7 @@ namespace Azure { namespace Storage { namespace Test { m_blobContent.begin() + static_cast(offset), m_blobContent.begin() + static_cast(offset) + static_cast(actualLength))); - EXPECT_EQ(res.ContentLength, actualLength); + EXPECT_EQ(res->ContentLength, actualLength); std::string tempFilename2 = RandomString(); res = m_blockBlobClient->DownloadToFile(tempFilename2, optionsCopy); @@ -345,7 +345,7 @@ namespace Azure { namespace Storage { namespace Test { m_blobContent.begin() + static_cast(offset), m_blobContent.begin() + static_cast(offset) + static_cast(actualLength))); - EXPECT_EQ(res.ContentLength, actualLength); + EXPECT_EQ(res->ContentLength, actualLength); DeleteFile(tempFilename2); } else @@ -414,36 +414,36 @@ namespace Azure { namespace Storage { namespace Test { blockBlobClient.SetMetadata(m_blobUploadOptions.Metadata); auto res = blockBlobClient.DownloadToBuffer(emptyContent.data(), 0); - EXPECT_EQ(res.ContentLength, 0); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_EQ(res.HttpHeaders, m_blobUploadOptions.HttpHeaders); - EXPECT_EQ(res.Metadata, m_blobUploadOptions.Metadata); - EXPECT_EQ(res.BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); + EXPECT_EQ(res->ContentLength, 0); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_EQ(res->HttpHeaders, m_blobUploadOptions.HttpHeaders); + EXPECT_EQ(res->Metadata, m_blobUploadOptions.Metadata); + EXPECT_EQ(res->BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); res = blockBlobClient.DownloadToFile(tempFilename); - EXPECT_EQ(res.ContentLength, 0); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_EQ(res.HttpHeaders, m_blobUploadOptions.HttpHeaders); - EXPECT_EQ(res.Metadata, m_blobUploadOptions.Metadata); - EXPECT_EQ(res.BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); + EXPECT_EQ(res->ContentLength, 0); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_EQ(res->HttpHeaders, m_blobUploadOptions.HttpHeaders); + EXPECT_EQ(res->Metadata, m_blobUploadOptions.Metadata); + EXPECT_EQ(res->BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); EXPECT_TRUE(ReadFile(tempFilename).empty()); DeleteFile(tempFilename); res = blockBlobClient.DownloadToBuffer(emptyContent.data(), static_cast(8_MB)); - EXPECT_EQ(res.ContentLength, 0); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_EQ(res.HttpHeaders, m_blobUploadOptions.HttpHeaders); - EXPECT_EQ(res.Metadata, m_blobUploadOptions.Metadata); - EXPECT_EQ(res.BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); + EXPECT_EQ(res->ContentLength, 0); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_EQ(res->HttpHeaders, m_blobUploadOptions.HttpHeaders); + EXPECT_EQ(res->Metadata, m_blobUploadOptions.Metadata); + EXPECT_EQ(res->BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); res = blockBlobClient.DownloadToFile(tempFilename); - EXPECT_EQ(res.ContentLength, 0); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_EQ(res.HttpHeaders, m_blobUploadOptions.HttpHeaders); - EXPECT_EQ(res.Metadata, m_blobUploadOptions.Metadata); - EXPECT_EQ(res.BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); + EXPECT_EQ(res->ContentLength, 0); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_EQ(res->HttpHeaders, m_blobUploadOptions.HttpHeaders); + EXPECT_EQ(res->Metadata, m_blobUploadOptions.Metadata); + EXPECT_EQ(res->BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); EXPECT_TRUE(ReadFile(tempFilename).empty()); DeleteFile(tempFilename); @@ -456,19 +456,19 @@ namespace Azure { namespace Storage { namespace Test { res = blockBlobClient.DownloadToBuffer( emptyContent.data(), static_cast(8_MB), options); - EXPECT_EQ(res.ContentLength, 0); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_EQ(res.HttpHeaders, m_blobUploadOptions.HttpHeaders); - EXPECT_EQ(res.Metadata, m_blobUploadOptions.Metadata); - EXPECT_EQ(res.BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); + EXPECT_EQ(res->ContentLength, 0); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_EQ(res->HttpHeaders, m_blobUploadOptions.HttpHeaders); + EXPECT_EQ(res->Metadata, m_blobUploadOptions.Metadata); + EXPECT_EQ(res->BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); res = blockBlobClient.DownloadToFile(tempFilename, options); - EXPECT_EQ(res.ContentLength, 0); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_EQ(res.HttpHeaders, m_blobUploadOptions.HttpHeaders); - EXPECT_EQ(res.Metadata, m_blobUploadOptions.Metadata); - EXPECT_EQ(res.BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); + EXPECT_EQ(res->ContentLength, 0); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_EQ(res->HttpHeaders, m_blobUploadOptions.HttpHeaders); + EXPECT_EQ(res->Metadata, m_blobUploadOptions.Metadata); + EXPECT_EQ(res->BlobType, Azure::Storage::Blobs::BlobType::BlockBlob); EXPECT_TRUE(ReadFile(tempFilename).empty()); DeleteFile(tempFilename); @@ -525,21 +525,18 @@ namespace Azure { namespace Storage { namespace Test { { auto res = blockBlobClient.UploadFromBuffer( m_blobContent.data(), static_cast(length), options); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_FALSE(res.SequenceNumber.HasValue()); - EXPECT_FALSE(res.ContentCRC64.HasValue()); - EXPECT_FALSE(res.ContentMD5.HasValue()); - auto properties = blockBlobClient.GetProperties(); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_FALSE(res->SequenceNumber.HasValue()); + EXPECT_FALSE(res->ContentCRC64.HasValue()); + EXPECT_FALSE(res->ContentMD5.HasValue()); + auto properties = *blockBlobClient.GetProperties(); EXPECT_EQ(properties.ContentLength, length); EXPECT_EQ(properties.HttpHeaders, options.HttpHeaders); EXPECT_EQ(properties.Metadata, options.Metadata); EXPECT_EQ(properties.Tier.GetValue(), options.Tier.GetValue()); - EXPECT_EQ(properties.ETag, res.ETag); - EXPECT_EQ(properties.LastModified, res.LastModified); + EXPECT_EQ(properties.ETag, res->ETag); + EXPECT_EQ(properties.LastModified, res->LastModified); std::vector downloadContent(static_cast(length), '\x00'); blockBlobClient.DownloadToBuffer( downloadContent.data(), static_cast(length)); @@ -554,21 +551,18 @@ namespace Azure { namespace Storage { namespace Test { fileWriter.Write(m_blobContent.data(), length, 0); } auto res = blockBlobClient.UploadFromFile(tempFilename, options); - EXPECT_FALSE(res.RequestId.empty()); - EXPECT_FALSE(res.Version.empty()); - EXPECT_FALSE(res.Date.empty()); - EXPECT_FALSE(res.ETag.empty()); - EXPECT_FALSE(res.LastModified.empty()); - EXPECT_FALSE(res.SequenceNumber.HasValue()); - EXPECT_FALSE(res.ContentCRC64.HasValue()); - EXPECT_FALSE(res.ContentMD5.HasValue()); - auto properties = blockBlobClient.GetProperties(); + EXPECT_FALSE(res->ETag.empty()); + EXPECT_FALSE(res->LastModified.empty()); + EXPECT_FALSE(res->SequenceNumber.HasValue()); + EXPECT_FALSE(res->ContentCRC64.HasValue()); + EXPECT_FALSE(res->ContentMD5.HasValue()); + auto properties = *blockBlobClient.GetProperties(); EXPECT_EQ(properties.ContentLength, length); EXPECT_EQ(properties.HttpHeaders, options.HttpHeaders); EXPECT_EQ(properties.Metadata, options.Metadata); EXPECT_EQ(properties.Tier.GetValue(), options.Tier.GetValue()); - EXPECT_EQ(properties.ETag, res.ETag); - EXPECT_EQ(properties.LastModified, res.LastModified); + EXPECT_EQ(properties.ETag, res->ETag); + EXPECT_EQ(properties.LastModified, res->LastModified); std::vector downloadContent(static_cast(length), '\x00'); blockBlobClient.DownloadToBuffer( downloadContent.data(), static_cast(length)); diff --git a/sdk/storage/test/blobs/page_blob_client_test.cpp b/sdk/storage/test/blobs/page_blob_client_test.cpp index f125af756..e0c1dd4ab 100644 --- a/sdk/storage/test/blobs/page_blob_client_test.cpp +++ b/sdk/storage/test/blobs/page_blob_client_test.cpp @@ -33,7 +33,7 @@ namespace Azure { namespace Storage { namespace Test { = Azure::Core::Http::MemoryBodyStream(m_blobContent.data(), m_blobContent.size()); m_pageBlobClient->UploadPages(&pageContent, 0); m_blobUploadOptions.HttpHeaders.ContentMD5 - = m_pageBlobClient->GetProperties().HttpHeaders.ContentMD5; + = m_pageBlobClient->GetProperties()->HttpHeaders.ContentMD5; } void PageBlobClientTest::TearDownTestSuite() { BlobContainerClientTest::TearDownTestSuite(); } @@ -54,11 +54,11 @@ namespace Azure { namespace Storage { namespace Test { StandardStorageConnectionString(), m_containerName, RandomString()); pageBlobClient.Create(0, m_blobUploadOptions); - EXPECT_EQ(pageBlobClient.GetProperties().ContentLength, 0); + EXPECT_EQ(pageBlobClient.GetProperties()->ContentLength, 0); pageBlobClient.Resize(static_cast(2_KB)); - EXPECT_EQ(static_cast(pageBlobClient.GetProperties().ContentLength), 2_KB); + EXPECT_EQ(static_cast(pageBlobClient.GetProperties()->ContentLength), 2_KB); pageBlobClient.Resize(static_cast(1_KB)); - EXPECT_EQ(static_cast(pageBlobClient.GetProperties().ContentLength), 1_KB); + EXPECT_EQ(static_cast(pageBlobClient.GetProperties()->ContentLength), 1_KB); } TEST_F(PageBlobClientTest, UploadClear) @@ -83,9 +83,9 @@ namespace Azure { namespace Storage { namespace Test { '\x00'); auto downloadContent = pageBlobClient.Download(); - EXPECT_EQ(ReadBodyStream(downloadContent.BodyStream), blobContent); + EXPECT_EQ(ReadBodyStream(downloadContent->BodyStream), blobContent); - auto pageRanges = pageBlobClient.GetPageRanges(); + auto pageRanges = *pageBlobClient.GetPageRanges(); EXPECT_TRUE(pageRanges.ClearRanges.empty()); ASSERT_FALSE(pageRanges.PageRanges.empty()); EXPECT_EQ(static_cast(pageRanges.PageRanges[0].Offset), 3_KB); @@ -94,13 +94,13 @@ namespace Azure { namespace Storage { namespace Test { Azure::Storage::Blobs::GetPageRangesOptions options; options.Offset = 4_KB; options.Length = 1_KB; - pageRanges = pageBlobClient.GetPageRanges(options); + pageRanges = *pageBlobClient.GetPageRanges(options); EXPECT_TRUE(pageRanges.ClearRanges.empty()); ASSERT_FALSE(pageRanges.PageRanges.empty()); EXPECT_EQ(static_cast(pageRanges.PageRanges[0].Offset), 4_KB); EXPECT_EQ(static_cast(pageRanges.PageRanges[0].Length), 1_KB); - auto snapshot = pageBlobClient.CreateSnapshot().Snapshot; + auto snapshot = pageBlobClient.CreateSnapshot()->Snapshot; // |_|_|_|x| |x|x|_|_| This is what's in snapshot blobContent.resize(static_cast(1_KB)); auto pageClient = Azure::Core::Http::MemoryBodyStream(blobContent.data(), blobContent.size()); @@ -110,7 +110,7 @@ namespace Azure { namespace Storage { namespace Test { options = Azure::Storage::Blobs::GetPageRangesOptions(); options.PreviousSnapshot = snapshot; - pageRanges = pageBlobClient.GetPageRanges(options); + pageRanges = *pageBlobClient.GetPageRanges(options); ASSERT_FALSE(pageRanges.ClearRanges.empty()); ASSERT_FALSE(pageRanges.PageRanges.empty()); EXPECT_EQ(pageRanges.PageRanges[0].Offset, 0); diff --git a/sdk/storage/test/test_base.hpp b/sdk/storage/test/test_base.hpp index b03086f5f..e31a00227 100644 --- a/sdk/storage/test/test_base.hpp +++ b/sdk/storage/test/test_base.hpp @@ -5,6 +5,8 @@ #include "http/body_stream.hpp" +#include "common/constants.hpp" + #include "gtest/gtest.h" namespace Azure { namespace Storage { namespace Test {