if (metadata.getContentMD5() != null) { metadata.addUserMetadata(Headers.UNENCRYPTED_CONTENT_MD5, metadata.getContentMD5());
if (metadata.getContentMD5() != null) { attributes.put("hash.value", metadata.getContentMD5()); attributes.put("hash.algorithm", "MD5");
final boolean calculateMD5 = metadata.getContentMD5() == null; if (metadata.getContentMD5() == null && !skipMd5CheckStrategy.skipClientSideValidationPerRequest(putObjectRequest)) { cleanupDataSource(putObjectRequest, file, isOrig, input, log); String contentMd5 = metadata.getContentMD5(); if (md5DigestStream != null) { contentMd5 = Base64.encodeAsString(md5DigestStream.getMd5Digest()); + " in hex) calculated by Amazon S3. " + "You may need to delete the data stored in Amazon S3. (metadata.contentMD5: " + metadata.getContentMD5() + ", md5DigestStream: " + md5DigestStream + ", bucketName: " + bucketName + ", key: " + key
values.put(TransferTable.COLUMN_HEADER_CONTENT_ENCODING, metadata.getContentEncoding()); values.put(TransferTable.COLUMN_HEADER_CACHE_CONTROL, metadata.getCacheControl()); values.put(TransferTable.COLUMN_CONTENT_MD5, metadata.getContentMD5()); values.put(TransferTable.COLUMN_HEADER_CONTENT_DISPOSITION, metadata.getContentDisposition());
if (metadata.getContentMD5() != null) { metadata.addUserMetadata(Headers.UNENCRYPTED_CONTENT_MD5, metadata.getContentMD5());
if (metadata.getContentMD5() != null) { metadata.addUserMetadata(Headers.UNENCRYPTED_CONTENT_MD5, metadata.getContentMD5());
final boolean calculateMD5 = metadata.getContentMD5() == null; if (metadata.getContentMD5() == null && !skipContentMd5Check) { String contentMd5 = metadata.getContentMD5(); if (md5DigestStream != null) { contentMd5 = BinaryUtils.toBase64(md5DigestStream.getMd5Digest());
result.setContentMd5(metadata.getContentMD5());
values.put(TransferTable.COLUMN_HEADER_CONTENT_ENCODING, metadata.getContentEncoding()); values.put(TransferTable.COLUMN_HEADER_CACHE_CONTROL, metadata.getCacheControl()); values.put(TransferTable.COLUMN_CONTENT_MD5, metadata.getContentMD5()); values.put(TransferTable.COLUMN_HEADER_CONTENT_DISPOSITION, metadata.getContentDisposition());
assertEquals("contentEncoding", from.getContentEncoding()); assertTrue(1234 == from.getContentLength()); assertEquals("md5", from.getContentMD5()); assertEquals("contentType", from.getContentType()); assertEquals("etag", from.getETag()); assertEquals("contentEncoding", to.getContentEncoding()); assertTrue(1234 == to.getContentLength()); assertEquals("md5", to.getContentMD5()); assertEquals("contentType", to.getContentType()); assertEquals("etag", to.getETag());
@Test public void cloneEmpty() { ObjectMetadata from = new ObjectMetadata(); for (int i = 0; i < 2; i++) { assertNull(from.getCacheControl()); assertNull(from.getContentDisposition()); assertNull(from.getContentEncoding()); assertTrue(0 == from.getContentLength()); assertNull(from.getContentMD5()); assertNull(from.getContentType()); assertNull(from.getETag()); assertNull(from.getExpirationTime()); assertNull(from.getExpirationTimeRuleId()); assertNull(from.getHttpExpiresDate()); assertTrue(0 == from.getInstanceLength()); assertNull(from.getLastModified()); assertNull(from.getOngoingRestore()); assertTrue(from.getRawMetadata().size() == 0); assertNull(from.getRestoreExpirationTime()); assertNull(from.getSSEAlgorithm()); assertNull(from.getSSECustomerAlgorithm()); assertNull(from.getSSECustomerKeyMd5()); assertTrue(0 == from.getUserMetadata().size()); assertNull(from.getVersionId()); assertNull(from.getStorageClass()); // Clone an empty instance from = from.clone(); } }
@Override public void provideObjectMetadata(File file, ObjectMetadata metadata) { if (S3MessageHandler.this.uploadMetadataProvider != null) { S3MessageHandler.this.uploadMetadataProvider.populateMetadata(metadata, MessageBuilder.createMessage(file, this.messageHeaders)); } if (metadata.getContentMD5() == null) { try { String contentMd5 = Md5Utils.md5AsBase64(file); metadata.setContentMD5(contentMd5); } catch (Exception e) { throw new AmazonClientException(e); } } }
@Override public void provideObjectMetadata(File file, ObjectMetadata metadata) { if (S3MessageHandler.this.uploadMetadataProvider != null) { S3MessageHandler.this.uploadMetadataProvider.populateMetadata(metadata, MessageBuilder.createMessage(file, this.messageHeaders)); } if (metadata.getContentMD5() == null) { try { String contentMd5 = Md5Utils.md5AsBase64(file); metadata.setContentMD5(contentMd5); } catch (Exception e) { throw new AmazonClientException(e); } } }
if (metadata.getContentMD5() != null) { metadata.addUserMetadata(Headers.UNENCRYPTED_CONTENT_MD5, metadata.getContentMD5());
@Test public void testUploadByteArray() throws IOException { byte[] payload = "b".getBytes("UTF-8"); Message<?> message = MessageBuilder.withPayload(payload) .setHeader("s3Command", S3MessageHandler.Command.UPLOAD.name()) .setHeader("key", "myStream") .build(); this.s3SendChannel.send(message); ArgumentCaptor<PutObjectRequest> putObjectRequestArgumentCaptor = ArgumentCaptor.forClass(PutObjectRequest.class); verify(this.amazonS3, atLeastOnce()).putObject(putObjectRequestArgumentCaptor.capture()); PutObjectRequest putObjectRequest = putObjectRequestArgumentCaptor.getValue(); assertThat(putObjectRequest.getBucketName()).isEqualTo(S3_BUCKET_NAME); assertThat(putObjectRequest.getKey()).isEqualTo("myStream"); assertThat(putObjectRequest.getFile()).isNull(); assertThat(putObjectRequest.getInputStream()).isNotNull(); ObjectMetadata metadata = putObjectRequest.getMetadata(); assertThat(metadata.getContentMD5()).isEqualTo(Md5Utils.md5AsBase64(payload)); assertThat(metadata.getContentLength()).isEqualTo(1); assertThat(metadata.getContentType()).isEqualTo(MediaType.APPLICATION_JSON_VALUE); assertThat(metadata.getContentDisposition()).isEqualTo("test.json"); }
@Override public void write(DataOutput out) throws IOException { Text.writeString(out, getBucketName()); Text.writeString(out, getKey()); // Object metadata out.writeLong(getObjectMetadata().getContentLength()); out.writeLong(getObjectMetadata().getLastModified().getTime()); Text.writeString(out, getObjectMetadata().getCacheControl()); Text.writeString(out, getObjectMetadata().getContentDisposition()); Text.writeString(out, getObjectMetadata().getContentEncoding()); Text.writeString(out, getObjectMetadata().getContentMD5()); Text.writeString(out, getObjectMetadata().getContentType()); Text.writeString(out, getObjectMetadata().getServerSideEncryption()); // Version ID and eTag are read only properties so they're not serialized //TODO Add serialization for user and raw metadata // Read bytes from into outBuffer outBuffer = ByteBuffer.allocate((int)getObjectMetadata().getContentLength()); getObjectContent().read(outBuffer.array()); //write size and content WritableUtils.writeVInt(out, outBuffer.capacity()); out.write(outBuffer.array()); }
if (metadata.getContentMD5() != null) { metadata.addUserMetadata(Headers.UNENCRYPTED_CONTENT_MD5, metadata.getContentMD5());
assertThat(metadata.getContentMD5()).isEqualTo(Md5Utils.md5AsBase64(file)); assertThat(metadata.getContentLength()).isEqualTo(0); assertThat(metadata.getContentType()).isEqualTo("audio/mpeg");
@Test public void testUploadInputStream() throws IOException { Expression actualKeyExpression = TestUtils.getPropertyValue(this.s3MessageHandler, "keyExpression", Expression.class); this.s3MessageHandler.setKeyExpression(null); InputStream payload = new StringInputStream("a"); Message<?> message = MessageBuilder.withPayload(payload) .setHeader("s3Command", S3MessageHandler.Command.UPLOAD.name()) .setHeader("key", "myStream") .build(); assertThatThrownBy(() -> this.s3SendChannel.send(message)) .hasCauseExactlyInstanceOf(IllegalStateException.class) .hasMessageContaining("Specify a 'keyExpression' for non-java.io.File payloads"); this.s3MessageHandler.setKeyExpression(actualKeyExpression); this.s3SendChannel.send(message); ArgumentCaptor<PutObjectRequest> putObjectRequestArgumentCaptor = ArgumentCaptor.forClass(PutObjectRequest.class); verify(this.amazonS3, atLeastOnce()).putObject(putObjectRequestArgumentCaptor.capture()); PutObjectRequest putObjectRequest = putObjectRequestArgumentCaptor.getValue(); assertThat(putObjectRequest.getBucketName()).isEqualTo(S3_BUCKET_NAME); assertThat(putObjectRequest.getKey()).isEqualTo("myStream"); assertThat(putObjectRequest.getFile()).isNull(); assertThat(putObjectRequest.getInputStream()).isNotNull(); ObjectMetadata metadata = putObjectRequest.getMetadata(); assertThat(metadata.getContentMD5()).isEqualTo(Md5Utils.md5AsBase64(payload)); assertThat(metadata.getContentLength()).isEqualTo(1); assertThat(metadata.getContentType()).isEqualTo(MediaType.APPLICATION_JSON_VALUE); assertThat(metadata.getContentDisposition()).isEqualTo("test.json"); }
private com.emc.ecs.sync.model.ObjectMetadata syncMetaFromS3Meta(ObjectMetadata s3meta) { com.emc.ecs.sync.model.ObjectMetadata meta = new com.emc.ecs.sync.model.ObjectMetadata(); meta.setDirectory(isDirectoryPlaceholder(s3meta.getContentType(), s3meta.getContentLength())); meta.setCacheControl(s3meta.getCacheControl()); meta.setContentDisposition(s3meta.getContentDisposition()); meta.setContentEncoding(s3meta.getContentEncoding()); if (s3meta.getContentMD5() != null) meta.setChecksum(new Checksum("MD5", s3meta.getContentMD5())); meta.setContentType(s3meta.getContentType()); meta.setHttpExpires(s3meta.getHttpExpiresDate()); meta.setExpirationDate(s3meta.getExpirationTime()); meta.setModificationTime(s3meta.getLastModified()); meta.setContentLength(s3meta.getContentLength()); meta.setUserMetadata(toMetaMap(s3meta.getUserMetadata())); return meta; }