Updated Branches: refs/heads/master 0d310f364 -> 1178f47cd
Add Atmos-specific MD5 checksum header Tested that Atmos Online and Synaptic Atmos both enforce this. Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/commit/98230e60 Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/tree/98230e60 Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds/diff/98230e60 Branch: refs/heads/master Commit: 98230e60a4e47c94ffe65f50470cf5ad51ca3f67 Parents: 0d310f3 Author: Andrew Gaul <[email protected]> Authored: Thu Jun 20 15:26:23 2013 -0700 Committer: Andrew Gaul <[email protected]> Committed: Wed Jul 10 22:16:44 2013 -0700 ---------------------------------------------------------------------- .../jclouds/atmos/binders/BindMetadataToHeaders.java | 12 ++++++++++++ .../java/org/jclouds/atmos/reference/AtmosHeaders.java | 1 + .../atmos/blobstore/AtmosBlobRequestSignerTest.java | 7 ++++++- 3 files changed, 19 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/98230e60/apis/atmos/src/main/java/org/jclouds/atmos/binders/BindMetadataToHeaders.java ---------------------------------------------------------------------- diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/binders/BindMetadataToHeaders.java b/apis/atmos/src/main/java/org/jclouds/atmos/binders/BindMetadataToHeaders.java index ba852b7..f0b3d06 100644 --- a/apis/atmos/src/main/java/org/jclouds/atmos/binders/BindMetadataToHeaders.java +++ b/apis/atmos/src/main/java/org/jclouds/atmos/binders/BindMetadataToHeaders.java @@ -22,7 +22,10 @@ import static com.google.common.base.Preconditions.checkNotNull; import javax.inject.Inject; import javax.inject.Singleton; +import com.google.common.io.BaseEncoding; + import org.jclouds.atmos.domain.AtmosObject; +import org.jclouds.atmos.reference.AtmosHeaders; import org.jclouds.http.HttpRequest; import org.jclouds.rest.Binder; @@ -47,6 +50,15 @@ public class BindMetadataToHeaders implements Binder { checkNotNull(object.getPayload(), "object payload"); checkArgument(object.getPayload().getContentMetadata().getContentLength() != null, "contentLength must be set, streaming not supported"); + byte[] contentMD5 = object.getContentMetadata().getContentMD5(); + if (contentMD5 != null) { + // Swizzle Content-MD5 to Atmos-specific header + object.getContentMetadata().setContentMD5(null); + request = (R) request.toBuilder() + .addHeader(AtmosHeaders.CHECKSUM, "MD5/0/" + + BaseEncoding.base64().encode(contentMD5)) + .build(); + } return metaBinder.bindToRequest(request, object.getUserMetadata()); } } http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/98230e60/apis/atmos/src/main/java/org/jclouds/atmos/reference/AtmosHeaders.java ---------------------------------------------------------------------- diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/reference/AtmosHeaders.java b/apis/atmos/src/main/java/org/jclouds/atmos/reference/AtmosHeaders.java index 41b328f..b4d2d3d 100644 --- a/apis/atmos/src/main/java/org/jclouds/atmos/reference/AtmosHeaders.java +++ b/apis/atmos/src/main/java/org/jclouds/atmos/reference/AtmosHeaders.java @@ -35,5 +35,6 @@ public interface AtmosHeaders { public static final String GROUP_ACL = "x-emc-groupacl"; public static final String UID = "x-emc-uid"; public static final String TOKEN = "x-emc-token"; + public static final String CHECKSUM = "x-emc-wschecksum"; } http://git-wip-us.apache.org/repos/asf/incubator-jclouds/blob/98230e60/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/AtmosBlobRequestSignerTest.java ---------------------------------------------------------------------- diff --git a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/AtmosBlobRequestSignerTest.java b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/AtmosBlobRequestSignerTest.java index 9644406..5f3ca33 100644 --- a/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/AtmosBlobRequestSignerTest.java +++ b/apis/atmos/src/test/java/org/jclouds/atmos/blobstore/AtmosBlobRequestSignerTest.java @@ -99,7 +99,12 @@ public class AtmosBlobRequestSignerTest extends BaseAsyncClientTest<AtmosAsyncCl "POST https://accesspoint.atmosonline.com/rest/namespace/container/name HTTP/1.1"); assertNonPayloadHeadersEqual( request, - "Accept: */*\nDate: Thu, 05 Jun 2008 16:38:19 GMT\nExpect: 100-continue\nx-emc-signature: 7Cbdnu+YA5rG9J/C9RlHk07mU7w=\nx-emc-uid: identity\n"); + "Accept: */*\n" + + "Date: Thu, 05 Jun 2008 16:38:19 GMT\n" + + "Expect: 100-continue\n" + + "x-emc-signature: PY3MQyILhoLDVoKfnB6ECTRaCWQ=\n" + + "x-emc-uid: identity\n" + + "x-emc-wschecksum: MD5/0/AAIECA==\n"); assertContentHeadersEqual(request, "text/plain", null, null, null, 2L, new byte[] { 0, 2, 4, 8 }, new Date(1000));
