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

Reply via email to