You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2018/04/13 05:52:36 UTC

[1/4] jclouds git commit: JCLOUDS-1400: Test PUT signed URL Content-Type

Repository: jclouds
Updated Branches:
  refs/heads/2.1.x 501fc93b6 -> b1886f96e


JCLOUDS-1400: Test PUT 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/a7949946
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/a7949946
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/a7949946

Branch: refs/heads/2.1.x
Commit: a79499464a8072f3087c072a641449759f78b58f
Parents: 501fc93
Author: Andrew Gaul <ga...@apache.org>
Authored: Sun Apr 8 23:04:51 2018 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Apr 12 22:44:43 2018 -0700

----------------------------------------------------------------------
 .../integration/internal/BaseBlobSignerLiveTest.java          | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/a7949946/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java
----------------------------------------------------------------------
diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java
index 8ec0434..c97eea8 100644
--- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java
+++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobSignerLiveTest.java
@@ -17,6 +17,7 @@
 package org.jclouds.blobstore.integration.internal;
 
 import static com.google.common.net.HttpHeaders.EXPECT;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.jclouds.blobstore.options.GetOptions.Builder.range;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.fail;
@@ -130,13 +131,15 @@ public class BaseBlobSignerLiveTest extends BaseBlobStoreIntegrationTest {
       String name = "hello";
       String text = "fooooooooooooooooooooooo";
 
-      Blob blob = view.getBlobStore().blobBuilder(name).payload(text).contentType("text/plain").build();
+      Blob blob = view.getBlobStore().blobBuilder(name).payload(text).contentType("image/png").build();
       String container = getContainerName();
       try {
          HttpRequest request = view.getSigner().signPutBlob(container, blob);
          assertEquals(request.getFilters().size(), 0);
          Strings2.toStringAndClose(view.utils().http().invoke(request).getPayload().openStream());
-         assertConsistencyAwareContainerSize(container, 1);
+
+         blob = view.getBlobStore().getBlob(container, name);
+         assertThat(blob.getMetadata().getContentMetadata().getContentType()).isEqualTo("image/png");
       } finally {
          returnContainer(container);
       }


[3/4] jclouds git commit: JCLOUDS-1400: Honor GCS signed URL content type

Posted by ga...@apache.org.
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 <ga...@apache.org>
Authored: Sat Apr 7 15:28:03 2018 -0700
Committer: Andrew Gaul <ga...@apache.org>
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();
    }
 


[2/4] jclouds git commit: JCLOUDS-1400: Honor Azure signed URL content type

Posted by ga...@apache.org.
JCLOUDS-1400: Honor Azure 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/fbaacf7b
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/fbaacf7b
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/fbaacf7b

Branch: refs/heads/2.1.x
Commit: fbaacf7b373d6bd020d7acdffde601e71d7929b8
Parents: a794994
Author: Andrew Gaul <ga...@apache.org>
Authored: Sun Apr 8 23:05:20 2018 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Apr 12 22:44:45 2018 -0700

----------------------------------------------------------------------
 .../azureblob/blobstore/AzureBlobRequestSigner.java | 16 +++++++++++-----
 .../blobstore/AzureBlobRequestSignerTest.java       |  1 +
 2 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/fbaacf7b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSigner.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSigner.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSigner.java
index 1db3547..a31cb1c 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSigner.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSigner.java
@@ -34,6 +34,7 @@ import org.jclouds.domain.Credentials;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.http.Uris;
 import org.jclouds.http.options.GetOptions;
+import org.jclouds.javax.annotation.Nullable;
 
 import com.google.common.base.Supplier;
 import com.google.common.net.HttpHeaders;
@@ -74,7 +75,7 @@ public class AzureBlobRequestSigner implements BlobRequestSigner {
    public HttpRequest signGetBlob(String container, String name, long timeInSeconds) {
       checkNotNull(container, "container");
       checkNotNull(name, "name");
-      return sign("GET", container, name, null, timeInSeconds, null);
+      return sign("GET", container, name, null, timeInSeconds, null, null);
    }
 
    @Override
@@ -87,7 +88,8 @@ public class AzureBlobRequestSigner implements BlobRequestSigner {
       checkNotNull(container, "container");
       checkNotNull(blob, "blob");
       return sign("PUT", container, blob.getMetadata().getName(), null, timeInSeconds,
-            blob.getMetadata().getContentMetadata().getContentLength());
+            blob.getMetadata().getContentMetadata().getContentLength(),
+            blob.getMetadata().getContentMetadata().getContentType());
    }
 
    @Deprecated
@@ -95,7 +97,7 @@ public class AzureBlobRequestSigner implements BlobRequestSigner {
    public HttpRequest signRemoveBlob(String container, String name) {
       checkNotNull(container, "container");
       checkNotNull(name, "name");
-      return sign("DELETE", container, name, null, DEFAULT_EXPIRY_SECONDS, null);
+      return sign("DELETE", container, name, null, DEFAULT_EXPIRY_SECONDS, null, null);
    }
 
    @Override
@@ -103,10 +105,10 @@ public class AzureBlobRequestSigner implements BlobRequestSigner {
       checkNotNull(container, "container");
       checkNotNull(name, "name");
       return sign("GET", container, name, blob2HttpGetOptions.apply(checkNotNull(options, "options")),
-            DEFAULT_EXPIRY_SECONDS, null);
+            DEFAULT_EXPIRY_SECONDS, null, null);
    }
 
-   private HttpRequest sign(String method, String container, String name, GetOptions options, long expires, Long contentLength) {
+   private HttpRequest sign(String method, String container, String name, @Nullable GetOptions options, long expires, @Nullable Long contentLength, @Nullable String contentType) {
       checkNotNull(method, "method");
       checkNotNull(container, "container");
       checkNotNull(name, "name");
@@ -137,6 +139,10 @@ public class AzureBlobRequestSigner implements BlobRequestSigner {
          request.replaceHeader(HttpHeaders.CONTENT_LENGTH, contentLength.toString());
       }
 
+      if (contentType != null) {
+         request.replaceHeader("x-ms-blob-content-type", contentType);
+      }
+
       if (options != null) {
          request.headers(options.buildRequestHeaders());
       }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/fbaacf7b/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSignerTest.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSignerTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSignerTest.java
index 165dccc..3361785 100644
--- a/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSignerTest.java
+++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/blobstore/AzureBlobRequestSignerTest.java
@@ -93,6 +93,7 @@ public class AzureBlobRequestSignerTest extends BaseRestAnnotationProcessingTest
                request,
                "Content-Length: 2\n" +
                "Date: Thu, 05 Jun 2008 16:38:19 GMT\n" +
+               "x-ms-blob-content-type: text/plain\n" +
                "x-ms-blob-type: BlockBlob\n");
 
       assertEquals(request.getFilters().size(), 0);


[4/4] jclouds git commit: JCLOUDS-1400: Honor Swift signed URL content type

Posted by ga...@apache.org.
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/b1886f96
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/b1886f96
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/b1886f96

Branch: refs/heads/2.1.x
Commit: b1886f96e4a7698ab3ea3832edd3f7c17ec37510
Parents: cf50e69
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Apr 9 07:39:10 2018 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Apr 12 22:50:26 2018 -0700

----------------------------------------------------------------------
 .../RegionScopedTemporaryUrlBlobSigner.java     | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/b1886f96/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 d4182d7..193e83c 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,26 +87,30 @@ 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());
    }
 
    @Deprecated
    @Override
    public HttpRequest signRemoveBlob(String container, String name) {
-      return sign("DELETE", container, name, GetOptions.NONE, timestamp.get() + DEFAULT_SIGNING_TIMEOUT);
+      return sign("DELETE", container, name, GetOptions.NONE, timestamp.get() + DEFAULT_SIGNING_TIMEOUT, null);
    }
 
-   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();
    }
 }