/** parses the http response headers to create a new {@link MutableObjectMetadata} object. */ public MutableObjectMetadata apply(HttpResponse from) { BlobMetadata base = blobMetadataParser.apply(from); MutableObjectMetadata to = blobToObjectMetadata.apply(base); addETagTo(from, to); if (to.getContentMetadata().getContentMD5() == null && to.getETag() != null) { Matcher md5Matcher = MD5_FROM_ETAG.matcher(to.getETag()); if (md5Matcher.find()) { byte[] md5 = base16().lowerCase().decode(md5Matcher.group(1)); // it is possible others will look at the http payload directly if (from.getPayload() != null) from.getPayload().getContentMetadata().setContentMD5(md5); to.getContentMetadata().setContentMD5(md5); } } // amz has an etag, but matches syntax for usermetadata to.getUserMetadata().remove("object-etag"); to.setCacheControl(from.getFirstHeaderOrNull(HttpHeaders.CACHE_CONTROL)); return to; }
/** * parses the http response headers to create a new * {@link org.jclouds.s3.domain.internal.MutableObjectMetadata} object. */ public MutableObjectMetadata apply(HttpResponse from) { BlobMetadata base = blobMetadataParser.apply(from); MutableObjectMetadata to = blobToObjectMetadata.apply(base); addETagTo(from, to); if (to.getContentMetadata().getContentMD5() == null && to.getETag() != null) { Matcher md5Matcher = MD5_FROM_ETAG.matcher(to.getETag()); if (md5Matcher.find()) { byte[] md5 = base16().lowerCase().decode(md5Matcher.group(1)); // it is possible others will look at the http payload directly if (from.getPayload() != null) from.getPayload().getContentMetadata().setContentMD5(md5); to.getContentMetadata().setContentMD5(md5); } } // amz has an etag, but matches syntax for usermetadata to.getUserMetadata().remove("object-etag"); to.setCacheControl(from.getFirstHeaderOrNull(HttpHeaders.CACHE_CONTROL)); return to; }
/** * parses the http response headers to create a new * {@link org.jclouds.s3.domain.internal.MutableObjectMetadata} object. */ public MutableObjectMetadata apply(HttpResponse from) { BlobMetadata base = blobMetadataParser.apply(from); MutableObjectMetadata to = blobToObjectMetadata.apply(base); addETagTo(from, to); if (to.getContentMetadata().getContentMD5() == null && to.getETag() != null) { Matcher md5Matcher = MD5_FROM_ETAG.matcher(to.getETag()); if (md5Matcher.find()) { byte[] md5 = base16().lowerCase().decode(md5Matcher.group(1)); // it is possible others will look at the http payload directly if (from.getPayload() != null) from.getPayload().getContentMetadata().setContentMD5(md5); to.getContentMetadata().setContentMD5(md5); } } // amz has an etag, but matches syntax for usermetadata to.getUserMetadata().remove("object-etag"); to.setCacheControl(from.getFirstHeaderOrNull(HttpHeaders.CACHE_CONTROL)); return to; }
public MutableObjectMetadata apply(BlobMetadata from) { if (from == null) return null; MutableObjectMetadata to = new MutableObjectMetadataImpl(); HttpUtils.copy(from.getContentMetadata(), to.getContentMetadata()); to.setUri(from.getUri()); to.setETag(from.getETag()); to.setKey(from.getName()); to.setBucket(bucket); to.setLastModified(from.getLastModified()); if (from.getUserMetadata() != null) { for (Entry<String, String> entry : from.getUserMetadata().entrySet()) to.getUserMetadata().put(entry.getKey().toLowerCase(), entry.getValue()); } return to; }
public MutableObjectMetadata apply(BlobMetadata from) { if (from == null) return null; MutableObjectMetadata to = new MutableObjectMetadataImpl(); HttpUtils.copy(from.getContentMetadata(), to.getContentMetadata()); to.setUri(from.getUri()); to.setETag(from.getETag()); to.setKey(from.getName()); to.setBucket(bucket); to.setLastModified(from.getLastModified()); if (from.getUserMetadata() != null) { for (Entry<String, String> entry : from.getUserMetadata().entrySet()) to.getUserMetadata().put(entry.getKey().toLowerCase(), entry.getValue()); } return to; }
public MutableObjectMetadata apply(BlobMetadata from) { if (from == null) return null; MutableObjectMetadata to = new MutableObjectMetadataImpl(); HttpUtils.copy(from.getContentMetadata(), to.getContentMetadata()); to.setUri(from.getUri()); to.setETag(from.getETag()); to.setKey(from.getName()); to.setBucket(bucket); to.setLastModified(from.getLastModified()); if (from.getUserMetadata() != null) { for (Entry<String, String> entry : from.getUserMetadata().entrySet()) to.getUserMetadata().put(entry.getKey().toLowerCase(), entry.getValue()); } return to; }
/** parses the http response headers to create a new {@link MutableObjectMetadata} object. */ public MutableObjectMetadata apply(HttpResponse from) { BlobMetadata base = blobMetadataParser.apply(from); MutableObjectMetadata to = blobToObjectMetadata.apply(base); addETagTo(from, to); if (to.getContentMetadata().getContentMD5() == null && to.getETag() != null) { Matcher md5Matcher = MD5_FROM_ETAG.matcher(to.getETag()); if (md5Matcher.find()) { byte[] md5 = base16().lowerCase().decode(md5Matcher.group(1)); // it is possible others will look at the http payload directly if (from.getPayload() != null) from.getPayload().getContentMetadata().setContentMD5(md5); to.getContentMetadata().setContentMD5(md5); } } // amz has an etag, but matches syntax for usermetadata to.getUserMetadata().remove("object-etag"); to.setCacheControl(from.getFirstHeaderOrNull(HttpHeaders.CACHE_CONTROL)); String storageClass = from.getFirstHeaderOrNull("x-amz-storage-class"); if (storageClass != null) { to.setStorageClass(StorageClass.valueOf(storageClass)); } return to; }
/** parses the http response headers to create a new {@link MutableObjectMetadata} object. */ public MutableObjectMetadata apply(HttpResponse from) { BlobMetadata base = blobMetadataParser.apply(from); MutableObjectMetadata to = blobToObjectMetadata.apply(base); addETagTo(from, to); if (to.getContentMetadata().getContentMD5() == null && to.getETag() != null) { Matcher md5Matcher = MD5_FROM_ETAG.matcher(to.getETag()); if (md5Matcher.find()) { byte[] md5 = base16().lowerCase().decode(md5Matcher.group(1)); // it is possible others will look at the http payload directly if (from.getPayload() != null) from.getPayload().getContentMetadata().setContentMD5(md5); to.getContentMetadata().setContentMD5(md5); } } // amz has an etag, but matches syntax for usermetadata to.getUserMetadata().remove("object-etag"); to.setCacheControl(from.getFirstHeaderOrNull(HttpHeaders.CACHE_CONTROL)); String storageClass = from.getFirstHeaderOrNull("x-amz-storage-class"); if (storageClass != null) { to.setStorageClass(StorageClass.valueOf(storageClass)); } return to; }
public MutableObjectMetadata apply(BlobMetadata from) { if (from == null) return null; MutableObjectMetadata to = new MutableObjectMetadataImpl(); HttpUtils.copy(from.getContentMetadata(), to.getContentMetadata()); to.setUri(from.getUri()); to.setETag(from.getETag()); to.setKey(from.getName()); to.setBucket(bucket); to.setLastModified(from.getLastModified()); if (from.getUserMetadata() != null) { for (Entry<String, String> entry : from.getUserMetadata().entrySet()) to.getUserMetadata().put(entry.getKey().toLowerCase(), entry.getValue()); } if (from.getTier() != null) { to.setStorageClass(StorageClass.fromTier(from.getTier())); } return to; }
public MutableObjectMetadata apply(BlobMetadata from) { if (from == null) return null; MutableObjectMetadata to = new MutableObjectMetadataImpl(); HttpUtils.copy(from.getContentMetadata(), to.getContentMetadata()); to.setUri(from.getUri()); to.setETag(from.getETag()); to.setKey(from.getName()); to.setBucket(bucket); to.setLastModified(from.getLastModified()); if (from.getUserMetadata() != null) { for (Entry<String, String> entry : from.getUserMetadata().entrySet()) to.getUserMetadata().put(entry.getKey().toLowerCase(), entry.getValue()); } if (from.getTier() != null) { to.setStorageClass(StorageClass.fromTier(from.getTier())); } return to; }
protected void assertContentEncoding(S3Object newObject, String string) { assert (newObject.getPayload().getContentMetadata().getContentEncoding().indexOf(string) != -1) : newObject .getPayload().getContentMetadata().getContentEncoding(); assert (newObject.getMetadata().getContentMetadata().getContentEncoding().indexOf(string) != -1) : newObject .getMetadata().getContentMetadata().getContentEncoding(); }
protected void assertContentEncoding(S3Object newObject, String string) { assert newObject.getPayload().getContentMetadata().getContentEncoding().indexOf(string) != -1 : newObject .getPayload().getContentMetadata().getContentEncoding(); assert newObject.getMetadata().getContentMetadata().getContentEncoding().indexOf(string) != -1 : newObject .getMetadata().getContentMetadata().getContentEncoding(); }
public void testMetadataWithCacheControlAndContentDisposition() throws Exception { String key = "hello"; S3Object object = getApi().newS3Object(); object.getMetadata().setKey(key); object.setPayload(TEST_STRING); object.getMetadata().setCacheControl("no-cache"); object.getMetadata().getContentMetadata().setContentDisposition("attachment; filename=hello.txt"); String containerName = getContainerName(); try { getApi().putObject(containerName, object); S3Object newObject = validateObject(containerName, key); assertCacheControl(newObject, "no-cache"); assertEquals(newObject.getMetadata().getContentMetadata().getContentDisposition(), "attachment; filename=hello.txt"); } finally { returnContainer(containerName); } }
protected String addBlobToContainer(String sourceContainer, String key) { S3Object sourceObject = getApi().newS3Object(); sourceObject.getMetadata().setKey(key); sourceObject.getMetadata().getContentMetadata().setContentType("text/xml"); sourceObject.setPayload(TEST_STRING); return getApi().putObject(sourceContainer, sourceObject); }
protected String addBlobToContainer(String sourceContainer, String key) { S3Object sourceObject = getApi().newS3Object(); sourceObject.getMetadata().setKey(key); sourceObject.getMetadata().getContentMetadata().setContentType("text/xml"); sourceObject.setPayload(TEST_STRING); return getApi().putObject(sourceContainer, sourceObject); }
public void testMetadataWithCacheControlAndContentDisposition() throws Exception { String key = "hello"; S3Object object = getApi().newS3Object(); object.getMetadata().setKey(key); object.setPayload(TEST_STRING); object.getMetadata().setCacheControl("no-cache"); object.getMetadata().getContentMetadata().setContentDisposition("attachment; filename=hello.txt"); String containerName = getContainerName(); try { getApi().putObject(containerName, object); S3Object newObject = validateObject(containerName, key); assertCacheControl(newObject, "no-cache"); assertEquals(newObject.getMetadata().getContentMetadata().getContentDisposition(), "attachment; filename=hello.txt"); } finally { returnContainer(containerName); } }
@Test(groups = { "integration", "live" }) public void testMetadataContentEncoding() throws Exception { String key = "hello"; S3Object object = getApi().newS3Object(); object.getMetadata().setKey(key); object.setPayload(TEST_STRING); object.getMetadata().getContentMetadata().setContentEncoding("x-compress"); String containerName = getContainerName(); try { getApi().putObject(containerName, object); S3Object newObject = validateObject(containerName, key); assertContentEncoding(newObject, "x-compress"); } finally { returnContainer(containerName); } }
@Test(groups = { "integration", "live" }) public void testMetadataContentEncoding() throws Exception { String key = "hello"; S3Object object = getApi().newS3Object(); object.getMetadata().setKey(key); object.setPayload(TEST_STRING); object.getMetadata().getContentMetadata().setContentEncoding("x-compress"); String containerName = getContainerName(); try { getApi().putObject(containerName, object); S3Object newObject = validateObject(containerName, key); assertContentEncoding(newObject, "x-compress"); } finally { returnContainer(containerName); } }
public void testMultipartCopy() throws Exception { String containerName = getContainerName(); try { String fromObject = "fromObject"; S3Object object = getApi().newS3Object(); object.getMetadata().setKey(fromObject); object.setPayload(oneHundredOneConstitutions); object.getMetadata().getContentMetadata().setContentLength(oneHundredOneConstitutions.size()); getApi().putObject(containerName, object); String toObject = "toObject"; String uploadId = getApi().initiateMultipartUpload(containerName, ObjectMetadataBuilder.create().key(toObject).build()); String eTagOf1 = getApi().uploadPartCopy(containerName, toObject, 1, uploadId, containerName, fromObject, 1, oneHundredOneConstitutions.size() - 1); getApi().completeMultipartUpload(containerName, toObject, uploadId, ImmutableMap.of(1, eTagOf1)); object = getApi().getObject(containerName, toObject); assertEquals(ByteStreams2.toByteArrayAndClose(object.getPayload().openStream()), oneHundredOneConstitutions.slice(1, oneHundredOneConstitutions.size() - 1).read()); } finally { returnContainer(containerName); } }