JCLOUDS-1400: Honor GCS signed URL content type

Also add GetOptions headers instead of replacing all headers.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/cf50e69c
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/cf50e69c
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/cf50e69c

Branch: refs/heads/2.1.x
Commit: cf50e69c77b08b8fe7362e655130d8b918bdc8c8
Parents: fbaacf7
Author: Andrew Gaul <[email protected]>
Authored: Sat Apr 7 15:28:03 2018 -0700
Committer: Andrew Gaul <[email protected]>
Committed: Thu Apr 12 22:44:46 2018 -0700

----------------------------------------------------------------------
 .../blobstore/GoogleCloudStorageBlobRequestSigner.java      | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/cf50e69c/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobRequestSigner.java
----------------------------------------------------------------------
diff --git 
a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobRequestSigner.java
 
b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobRequestSigner.java
index 390ada1..8d6e58c 100644
--- 
a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobRequestSigner.java
+++ 
b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobRequestSigner.java
@@ -24,6 +24,7 @@ import java.security.NoSuchAlgorithmException;
 import java.security.PrivateKey;
 import java.security.Signature;
 import java.security.SignatureException;
+import java.util.Map;
 
 import javax.annotation.Resource;
 import javax.inject.Provider;
@@ -95,7 +96,8 @@ public final class GoogleCloudStorageBlobRequestSigner 
implements BlobRequestSig
 
    @Override
    public HttpRequest signPutBlob(String container, Blob blob, long 
timeInSeconds) {
-      return sign("PUT", container, blob.getMetadata().getName(), 
GetOptions.NONE, timestamp.get() + timeInSeconds, null);
+      return sign("PUT", container, blob.getMetadata().getName(), 
GetOptions.NONE, timestamp.get() + timeInSeconds,
+            blob.getMetadata().getContentMetadata().getContentType());
    }
 
    @Deprecated
@@ -131,11 +133,14 @@ public final class GoogleCloudStorageBlobRequestSigner 
implements BlobRequestSig
       }
       String signature = BaseEncoding.base64().encode(rawSignature);
 
+      for (Map.Entry<String, String> entry : 
options.buildRequestHeaders().entries()) {
+         request.addHeader(entry.getKey(), entry.getValue());
+      }
+
       return (HttpRequest) request
             .addQueryParam("Expires", String.valueOf(expires))
             .addQueryParam("GoogleAccessId", creds.get().identity)
             .addQueryParam("Signature", signature)
-            .headers(options.buildRequestHeaders())
             .build();
    }
 

Reply via email to