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();
}
}