parent
d799012230
commit
87b230a51d
@ -4,6 +4,8 @@
|
||||
|
||||
### Features Added
|
||||
|
||||
- Add `Azure::Core::Http::Request` constructor overload to support payload and non-buffered response.
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
### Bugs Fixed
|
||||
|
||||
@ -209,6 +209,7 @@ namespace Azure { namespace Core { namespace Http {
|
||||
// previously called
|
||||
void StartTry();
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief Construct an #Azure::Core::Http::Request.
|
||||
*
|
||||
@ -229,7 +230,6 @@ namespace Azure { namespace Core { namespace Http {
|
||||
AZURE_ASSERT_MSG(bodyStream, "The bodyStream pointer cannot be null.");
|
||||
}
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief Constructs a `%Request`.
|
||||
*
|
||||
|
||||
@ -807,6 +807,18 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
struct RenameBlobContainerResult final
|
||||
{
|
||||
};
|
||||
/**
|
||||
* @brief Response type for #Azure::Storage::Blobs::BlobContainerClient::SubmitBatch.
|
||||
*/
|
||||
struct SubmitBatchResult final
|
||||
{
|
||||
std::unique_ptr<Core::IO::BodyStream> BodyStream;
|
||||
/**
|
||||
* The media type of the body of the response. For batch requests, this is multipart/mixed;
|
||||
* boundary=batchresponse_GUID.
|
||||
*/
|
||||
std::string ContentType;
|
||||
};
|
||||
/**
|
||||
* @brief Response type for #Azure::Storage::Blobs::BlobContainerClient::AcquireLease.
|
||||
*/
|
||||
@ -2971,6 +2983,16 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
const Core::Url& url,
|
||||
const GetServiceAccountInfoOptions& options,
|
||||
const Core::Context& context);
|
||||
struct SubmitServiceBatchOptions final
|
||||
{
|
||||
std::string MultipartContentType;
|
||||
};
|
||||
static Response<Models::_detail::SubmitBatchResult> SubmitBatch(
|
||||
Core::Http::_internal::HttpPipeline& pipeline,
|
||||
const Core::Url& url,
|
||||
Core::IO::BodyStream& requestBody,
|
||||
const SubmitServiceBatchOptions& options,
|
||||
const Core::Context& context);
|
||||
struct FindServiceBlobsByTagsOptions final
|
||||
{
|
||||
Nullable<std::string> Where;
|
||||
@ -3070,6 +3092,16 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
const Core::Url& url,
|
||||
const RenameBlobContainerOptions& options,
|
||||
const Core::Context& context);
|
||||
struct SubmitBlobContainerBatchOptions final
|
||||
{
|
||||
std::string MultipartContentType;
|
||||
};
|
||||
static Response<Models::_detail::SubmitBatchResult> SubmitBatch(
|
||||
Core::Http::_internal::HttpPipeline& pipeline,
|
||||
const Core::Url& url,
|
||||
Core::IO::BodyStream& requestBody,
|
||||
const SubmitBlobContainerBatchOptions& options,
|
||||
const Core::Context& context);
|
||||
struct AcquireBlobContainerLeaseOptions final
|
||||
{
|
||||
Nullable<int32_t> Duration;
|
||||
|
||||
@ -1188,6 +1188,33 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
= pRawResponse->GetHeaders().at("x-ms-is-hns-enabled") == std::string("true");
|
||||
return Response<Models::AccountInfo>(std::move(response), std::move(pRawResponse));
|
||||
}
|
||||
Response<Models::_detail::SubmitBatchResult> ServiceClient::SubmitBatch(
|
||||
Core::Http::_internal::HttpPipeline& pipeline,
|
||||
const Core::Url& url,
|
||||
Core::IO::BodyStream& requestBody,
|
||||
const SubmitServiceBatchOptions& options,
|
||||
const Core::Context& context)
|
||||
{
|
||||
auto request = Core::Http::Request(Core::Http::HttpMethod::Post, url, &requestBody, false);
|
||||
request.GetUrl().AppendQueryParameter("comp", "batch");
|
||||
request.SetHeader("Content-Length", std::to_string(requestBody.Length()));
|
||||
if (!options.MultipartContentType.empty())
|
||||
{
|
||||
request.SetHeader("Content-Type", options.MultipartContentType);
|
||||
}
|
||||
request.SetHeader("x-ms-version", "2020-08-04");
|
||||
auto pRawResponse = pipeline.Send(request, context);
|
||||
auto httpStatusCode = pRawResponse->GetStatusCode();
|
||||
if (httpStatusCode != Core::Http::HttpStatusCode::Accepted)
|
||||
{
|
||||
throw StorageException::CreateFromResponse(std::move(pRawResponse));
|
||||
}
|
||||
Models::_detail::SubmitBatchResult response;
|
||||
response.BodyStream = pRawResponse->ExtractBodyStream();
|
||||
response.ContentType = pRawResponse->GetHeaders().at("Content-Type");
|
||||
return Response<Models::_detail::SubmitBatchResult>(
|
||||
std::move(response), std::move(pRawResponse));
|
||||
}
|
||||
Response<Models::_detail::FindBlobsByTagsResult> ServiceClient::FindBlobsByTags(
|
||||
Core::Http::_internal::HttpPipeline& pipeline,
|
||||
const Core::Url& url,
|
||||
@ -1769,6 +1796,34 @@ namespace Azure { namespace Storage { namespace Blobs {
|
||||
return Response<Models::_detail::RenameBlobContainerResult>(
|
||||
std::move(response), std::move(pRawResponse));
|
||||
}
|
||||
Response<Models::_detail::SubmitBatchResult> BlobContainerClient::SubmitBatch(
|
||||
Core::Http::_internal::HttpPipeline& pipeline,
|
||||
const Core::Url& url,
|
||||
Core::IO::BodyStream& requestBody,
|
||||
const SubmitBlobContainerBatchOptions& options,
|
||||
const Core::Context& context)
|
||||
{
|
||||
auto request = Core::Http::Request(Core::Http::HttpMethod::Post, url, &requestBody, false);
|
||||
request.GetUrl().AppendQueryParameter("restype", "container");
|
||||
request.GetUrl().AppendQueryParameter("comp", "batch");
|
||||
request.SetHeader("Content-Length", std::to_string(requestBody.Length()));
|
||||
if (!options.MultipartContentType.empty())
|
||||
{
|
||||
request.SetHeader("Content-Type", options.MultipartContentType);
|
||||
}
|
||||
request.SetHeader("x-ms-version", "2020-08-04");
|
||||
auto pRawResponse = pipeline.Send(request, context);
|
||||
auto httpStatusCode = pRawResponse->GetStatusCode();
|
||||
if (httpStatusCode != Core::Http::HttpStatusCode::Accepted)
|
||||
{
|
||||
throw StorageException::CreateFromResponse(std::move(pRawResponse));
|
||||
}
|
||||
Models::_detail::SubmitBatchResult response;
|
||||
response.BodyStream = pRawResponse->ExtractBodyStream();
|
||||
response.ContentType = pRawResponse->GetHeaders().at("Content-Type");
|
||||
return Response<Models::_detail::SubmitBatchResult>(
|
||||
std::move(response), std::move(pRawResponse));
|
||||
}
|
||||
Response<Models::_detail::AcquireBlobContainerLeaseResult> BlobContainerClient::AcquireLease(
|
||||
Core::Http::_internal::HttpPipeline& pipeline,
|
||||
const Core::Url& url,
|
||||
|
||||
@ -72,8 +72,6 @@ directive:
|
||||
transform: >
|
||||
delete $["/{containerName}?restype=account&comp=properties"];
|
||||
delete $["/{containerName}/{blob}?restype=account&comp=properties"];
|
||||
delete $["/?comp=batch"];
|
||||
delete $["/{containerName}?restype=container&comp=batch"];
|
||||
delete $["/{filesystem}/{path}?action=setAccessControl&blob"];
|
||||
delete $["/{filesystem}/{path}?action=getAccessControl&blob"];
|
||||
delete $["/{filesystem}/{path}?FileRename"];
|
||||
@ -1574,4 +1572,32 @@ directive:
|
||||
where: $["x-ms-paths"]["/{containerName}/{blob}?comp=legalhold"].put.responses["200"].headers
|
||||
transform: >
|
||||
$["x-ms-legal-hold"]["x-ms-client-name"] = "HasLegalHold";
|
||||
```
|
||||
|
||||
|
||||
### SubmitBatch
|
||||
|
||||
```yaml
|
||||
directive:
|
||||
- from: swagger-document
|
||||
where: $.definitions
|
||||
transform: >
|
||||
$.SubmitBatchResult = {
|
||||
"type": "object",
|
||||
"x-ms-sealed": false,
|
||||
"x-namespace": "_detail",
|
||||
"properties": {
|
||||
"BodyStream": {"type": "object", "format": "file"}
|
||||
}
|
||||
};
|
||||
- from: swagger-document
|
||||
where: $["x-ms-paths"]["/?comp=batch"].post.responses
|
||||
transform: >
|
||||
$["202"] = $["200"];
|
||||
delete $["200"];
|
||||
$["202"].schema = {"$ref": "#/definitions/SubmitBatchResult"};
|
||||
- from: swagger-document
|
||||
where: $["x-ms-paths"]["/{containerName}?restype=container&comp=batch"].post.responses["202"]
|
||||
transform: >
|
||||
$.schema = {"$ref": "#/definitions/SubmitBatchResult"};
|
||||
```
|
||||
Loading…
Reference in New Issue
Block a user