andrewgaul commented on this pull request.
> @@ -779,6 +782,22 @@ private static void addHeader(Multimap<String, String>
> headers, Headers header,
return parts.build();
}
+ private static GeneratedHttpRequest
stripExpectHeaderIfContentZero(GeneratedHttpRequest request) {
+ boolean isBodyEmpty = false;
+ if (request.getPayload() != null) {
+ Long length =
request.getPayload().getContentMetadata().getContentLength();
+ if (length != null && length == 0) {
+ isBodyEmpty = true;
+ }
+ } else {
+ isBodyEmpty = true;
+ }
I tested removing Content-Length from
`BaseBlobIntegrationTest.testPutInputStream` and found:
requires C-L:
* Atmos
* AWS-S3,
[reference](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html)
* Azure Blob,
[reference](https://docs.microsoft.com/en-us/rest/api/storageservices/put-blob)
* B2, [reference](https://www.backblaze.com/b2/docs/b2_upload_file.html)
requires C-L but should not:
* GCS,
[reference](https://cloud.google.com/storage/docs/json_api/v1/objects/insert)
does not require C-L but should:
* Rackspace Cloud Files/OpenStack Swift,
[reference](https://developer.openstack.org/api-ref/object-storage/?expanded=create-or-replace-object-detail#create-or-replace-object)
I do not understand jclouds chunked encoding support well enough to comment but
otherwise our portable call sites should set Content-Length. For what it is
worth I prefer the original code which does not assume a Content-Length and not
the suggested change.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jclouds/jclouds/pull/1120#discussion_r128358733