Repository: jclouds
Updated Branches:
  refs/heads/master f6d47b9c0 -> 7e0a2dbd1


JCLOUDS-1400: Honor Swift signed URL content type


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

Branch: refs/heads/master
Commit: 7e0a2dbd1395769b317c9f252871a5683011c373
Parents: 7db5eb5
Author: Andrew Gaul <[email protected]>
Authored: Mon Apr 9 07:39:10 2018 -0700
Committer: Andrew Gaul <[email protected]>
Committed: Thu Apr 12 22:43:43 2018 -0700

----------------------------------------------------------------------
 .../RegionScopedTemporaryUrlBlobSigner.java       | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/7e0a2dbd/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedTemporaryUrlBlobSigner.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedTemporaryUrlBlobSigner.java
 
b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedTemporaryUrlBlobSigner.java
index cd966fc..bcd9470 100644
--- 
a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedTemporaryUrlBlobSigner.java
+++ 
b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/blobstore/RegionScopedTemporaryUrlBlobSigner.java
@@ -32,11 +32,13 @@ import org.jclouds.date.TimeStamp;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.Uris;
 import org.jclouds.http.options.GetOptions;
+import org.jclouds.javax.annotation.Nullable;
 import org.jclouds.location.Region;
 import org.jclouds.openstack.swift.v1.SwiftApi;
 import org.jclouds.openstack.swift.v1.TemporaryUrlSigner;
 
 import com.google.common.base.Supplier;
+import com.google.common.net.HttpHeaders;
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 import com.google.inject.name.Named;
@@ -70,12 +72,12 @@ public class RegionScopedTemporaryUrlBlobSigner implements 
BlobRequestSigner {
 
    @Override
    public HttpRequest signGetBlob(String container, String name, long 
timeInSeconds) {
-      return sign("GET", container, name, GetOptions.NONE, timestamp.get() + 
timeInSeconds);
+      return sign("GET", container, name, GetOptions.NONE, timestamp.get() + 
timeInSeconds, null);
    }
 
    @Override
    public HttpRequest signGetBlob(String container, String name, 
org.jclouds.blobstore.options.GetOptions options) {
-      return sign("GET", container, name, toGetOptions.apply(options), 
timestamp.get() + DEFAULT_SIGNING_TIMEOUT);
+      return sign("GET", container, name, toGetOptions.apply(options), 
timestamp.get() + DEFAULT_SIGNING_TIMEOUT, null);
    }
 
    @Override
@@ -85,20 +87,24 @@ public class RegionScopedTemporaryUrlBlobSigner implements 
BlobRequestSigner {
 
    @Override
    public HttpRequest signPutBlob(String container, Blob blob, long 
timeInSeconds) {
-      return sign("PUT", container, blob.getMetadata().getName(), 
GetOptions.NONE, timestamp.get() + timeInSeconds);
+      return sign("PUT", container, blob.getMetadata().getName(), 
GetOptions.NONE, timestamp.get() + timeInSeconds, 
blob.getMetadata().getContentMetadata().getContentType());
    }
 
-   private HttpRequest sign(String method, String container, String name, 
GetOptions options, long expires) {
+   private HttpRequest sign(String method, String container, String name, 
GetOptions options, long expires, @Nullable String contentType) {
       checkNotNull(container, "container");
       checkNotNull(name, "name");
       URI url = 
Uris.uriBuilder(storageUrl).appendPath(container).appendPath(name).build();
       String signature = signer.sign(method, url.getPath(), expires);
-      return HttpRequest.builder()
+      HttpRequest.Builder builder = HttpRequest.builder()
                         .method(method)
                         .endpoint(url)
                         .addQueryParams(options.buildQueryParameters())
                         .addQueryParam("temp_url_sig", signature)
                         .addQueryParam("temp_url_expires", 
String.valueOf(expires))
-                        .headers(options.buildRequestHeaders()).build();
+                        .headers(options.buildRequestHeaders());
+      if (contentType != null) {
+         builder.replaceHeader(HttpHeaders.CONTENT_TYPE, contentType);
+      }
+      return builder.build();
    }
 }

Reply via email to