Java Code Examples for com.amazonaws.services.s3.model.ObjectMetadata#setContentEncoding()
The following examples show how to use
com.amazonaws.services.s3.model.ObjectMetadata#setContentEncoding() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: S3BaseUploadCallable.java From jobcacher-plugin with MIT License | 5 votes |
protected ObjectMetadata buildMetadata(File file) throws IOException { final ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType(Mimetypes.getInstance().getMimetype(file.getName())); metadata.setContentLength(file.length()); metadata.setLastModified(new Date(file.lastModified())); if (storageClass != null && !storageClass.isEmpty()) { metadata.setHeader("x-amz-storage-class", storageClass); } if (useServerSideEncryption) { metadata.setSSEAlgorithm(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION); } for (Map.Entry<String, String> entry : userMetadata.entrySet()) { final String key = entry.getKey().toLowerCase(); switch (key) { case "cache-control": metadata.setCacheControl(entry.getValue()); break; case "expires": try { final Date expires = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z").parse(entry.getValue()); metadata.setHttpExpiresDate(expires); } catch (ParseException e) { metadata.addUserMetadata(entry.getKey(), entry.getValue()); } break; case "content-encoding": metadata.setContentEncoding(entry.getValue()); break; case "content-type": metadata.setContentType(entry.getValue()); default: metadata.addUserMetadata(entry.getKey(), entry.getValue()); break; } } return metadata; }
Example 2
Source File: S3BlobStorage.java From mojito with Apache License 2.0 | 5 votes |
@Override public void put(String name, String content, Retention retention) { byte[] bytes = content.getBytes(StandardCharsets.UTF_8); ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentType("text/plain"); objectMetadata.setContentEncoding(StandardCharsets.UTF_8.toString()); put(name, bytes, retention, objectMetadata); }
Example 3
Source File: S3FileSystemTest.java From beam with Apache License 2.0 | 5 votes |
@Test public void matchNonGlob() { S3FileSystem s3FileSystem = buildMockedS3FileSystem(s3Options()); S3ResourceId path = S3ResourceId.fromUri("s3://testbucket/testdirectory/filethatexists"); long lastModifiedMillis = 1540000000000L; ObjectMetadata s3ObjectMetadata = new ObjectMetadata(); s3ObjectMetadata.setContentLength(100); s3ObjectMetadata.setContentEncoding("read-seek-efficient"); s3ObjectMetadata.setLastModified(new Date(lastModifiedMillis)); when(s3FileSystem .getAmazonS3Client() .getObjectMetadata( argThat( new GetObjectMetadataRequestMatcher( new GetObjectMetadataRequest(path.getBucket(), path.getKey()))))) .thenReturn(s3ObjectMetadata); MatchResult result = s3FileSystem.matchNonGlobPath(path); assertThat( result, MatchResultMatcher.create( ImmutableList.of( MatchResult.Metadata.builder() .setSizeBytes(100) .setLastModifiedMillis(lastModifiedMillis) .setResourceId(path) .setIsReadSeekEfficient(true) .build()))); }
Example 4
Source File: S3FileSystemTest.java From beam with Apache License 2.0 | 5 votes |
@Test public void matchNonGlobNotReadSeekEfficient() { S3FileSystem s3FileSystem = buildMockedS3FileSystem(s3Options()); S3ResourceId path = S3ResourceId.fromUri("s3://testbucket/testdirectory/filethatexists"); long lastModifiedMillis = 1540000000000L; ObjectMetadata s3ObjectMetadata = new ObjectMetadata(); s3ObjectMetadata.setContentLength(100); s3ObjectMetadata.setLastModified(new Date(lastModifiedMillis)); s3ObjectMetadata.setContentEncoding("gzip"); when(s3FileSystem .getAmazonS3Client() .getObjectMetadata( argThat( new GetObjectMetadataRequestMatcher( new GetObjectMetadataRequest(path.getBucket(), path.getKey()))))) .thenReturn(s3ObjectMetadata); MatchResult result = s3FileSystem.matchNonGlobPath(path); assertThat( result, MatchResultMatcher.create( ImmutableList.of( MatchResult.Metadata.builder() .setSizeBytes(100) .setLastModifiedMillis(lastModifiedMillis) .setResourceId(path) .setIsReadSeekEfficient(false) .build()))); }
Example 5
Source File: S3FileSystemTest.java From beam with Apache License 2.0 | 5 votes |
@Test public void matchNonGlobNullContentEncoding() { S3FileSystem s3FileSystem = buildMockedS3FileSystem(s3Options()); S3ResourceId path = S3ResourceId.fromUri("s3://testbucket/testdirectory/filethatexists"); long lastModifiedMillis = 1540000000000L; ObjectMetadata s3ObjectMetadata = new ObjectMetadata(); s3ObjectMetadata.setContentLength(100); s3ObjectMetadata.setLastModified(new Date(lastModifiedMillis)); s3ObjectMetadata.setContentEncoding(null); when(s3FileSystem .getAmazonS3Client() .getObjectMetadata( argThat( new GetObjectMetadataRequestMatcher( new GetObjectMetadataRequest(path.getBucket(), path.getKey()))))) .thenReturn(s3ObjectMetadata); MatchResult result = s3FileSystem.matchNonGlobPath(path); assertThat( result, MatchResultMatcher.create( ImmutableList.of( MatchResult.Metadata.builder() .setSizeBytes(100) .setLastModifiedMillis(lastModifiedMillis) .setResourceId(path) .setIsReadSeekEfficient(true) .build()))); }
Example 6
Source File: S3FileSystemTest.java From beam with Apache License 2.0 | 4 votes |
private void testMultipartCopy(S3Options options) { S3FileSystem s3FileSystem = buildMockedS3FileSystem(options); S3ResourceId sourcePath = S3ResourceId.fromUri("s3://bucket/from"); S3ResourceId destinationPath = S3ResourceId.fromUri("s3://bucket/to"); InitiateMultipartUploadResult initiateMultipartUploadResult = new InitiateMultipartUploadResult(); initiateMultipartUploadResult.setUploadId("upload-id"); if (getSSECustomerKeyMd5(options) != null) { initiateMultipartUploadResult.setSSECustomerKeyMd5(getSSECustomerKeyMd5(options)); } when(s3FileSystem .getAmazonS3Client() .initiateMultipartUpload(any(InitiateMultipartUploadRequest.class))) .thenReturn(initiateMultipartUploadResult); assertEquals( getSSECustomerKeyMd5(options), s3FileSystem .getAmazonS3Client() .initiateMultipartUpload( new InitiateMultipartUploadRequest( destinationPath.getBucket(), destinationPath.getKey())) .getSSECustomerKeyMd5()); ObjectMetadata sourceObjectMetadata = new ObjectMetadata(); sourceObjectMetadata.setContentLength((long) (options.getS3UploadBufferSizeBytes() * 1.5)); sourceObjectMetadata.setContentEncoding("read-seek-efficient"); if (getSSECustomerKeyMd5(options) != null) { sourceObjectMetadata.setSSECustomerKeyMd5(getSSECustomerKeyMd5(options)); } assertGetObjectMetadata( s3FileSystem, createObjectMetadataRequest(sourcePath, options), options, sourceObjectMetadata); CopyPartResult copyPartResult1 = new CopyPartResult(); copyPartResult1.setETag("etag-1"); CopyPartResult copyPartResult2 = new CopyPartResult(); copyPartResult1.setETag("etag-2"); if (getSSECustomerKeyMd5(options) != null) { copyPartResult1.setSSECustomerKeyMd5(getSSECustomerKeyMd5(options)); copyPartResult2.setSSECustomerKeyMd5(getSSECustomerKeyMd5(options)); } CopyPartRequest copyPartRequest = new CopyPartRequest(); copyPartRequest.setSourceSSECustomerKey(options.getSSECustomerKey()); when(s3FileSystem.getAmazonS3Client().copyPart(any(CopyPartRequest.class))) .thenReturn(copyPartResult1) .thenReturn(copyPartResult2); assertEquals( getSSECustomerKeyMd5(options), s3FileSystem.getAmazonS3Client().copyPart(copyPartRequest).getSSECustomerKeyMd5()); s3FileSystem.multipartCopy(sourcePath, destinationPath, sourceObjectMetadata); verify(s3FileSystem.getAmazonS3Client(), times(1)) .completeMultipartUpload(any(CompleteMultipartUploadRequest.class)); }
Example 7
Source File: S3FileSystemTest.java From beam with Apache License 2.0 | 4 votes |
@Test public void matchGlob() throws IOException { S3FileSystem s3FileSystem = buildMockedS3FileSystem(s3Options()); S3ResourceId path = S3ResourceId.fromUri("s3://testbucket/foo/bar*baz"); ListObjectsV2Request firstRequest = new ListObjectsV2Request() .withBucketName(path.getBucket()) .withPrefix(path.getKeyNonWildcardPrefix()) .withContinuationToken(null); // Expected to be returned; prefix and wildcard/regex match S3ObjectSummary firstMatch = new S3ObjectSummary(); firstMatch.setBucketName(path.getBucket()); firstMatch.setKey("foo/bar0baz"); firstMatch.setSize(100); firstMatch.setLastModified(new Date(1540000000001L)); // Expected to not be returned; prefix matches, but substring after wildcard does not S3ObjectSummary secondMatch = new S3ObjectSummary(); secondMatch.setBucketName(path.getBucket()); secondMatch.setKey("foo/bar1qux"); secondMatch.setSize(200); secondMatch.setLastModified(new Date(1540000000002L)); // Expected first request returns continuation token ListObjectsV2Result firstResult = new ListObjectsV2Result(); firstResult.setNextContinuationToken("token"); firstResult.getObjectSummaries().add(firstMatch); firstResult.getObjectSummaries().add(secondMatch); when(s3FileSystem .getAmazonS3Client() .listObjectsV2(argThat(new ListObjectsV2RequestArgumentMatches(firstRequest)))) .thenReturn(firstResult); // Expect second request with continuation token ListObjectsV2Request secondRequest = new ListObjectsV2Request() .withBucketName(path.getBucket()) .withPrefix(path.getKeyNonWildcardPrefix()) .withContinuationToken("token"); // Expected to be returned; prefix and wildcard/regex match S3ObjectSummary thirdMatch = new S3ObjectSummary(); thirdMatch.setBucketName(path.getBucket()); thirdMatch.setKey("foo/bar2baz"); thirdMatch.setSize(300); thirdMatch.setLastModified(new Date(1540000000003L)); // Expected second request returns third prefix match and no continuation token ListObjectsV2Result secondResult = new ListObjectsV2Result(); secondResult.setNextContinuationToken(null); secondResult.getObjectSummaries().add(thirdMatch); when(s3FileSystem .getAmazonS3Client() .listObjectsV2(argThat(new ListObjectsV2RequestArgumentMatches(secondRequest)))) .thenReturn(secondResult); // Expect object metadata queries for content encoding ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentEncoding(""); when(s3FileSystem.getAmazonS3Client().getObjectMetadata(anyObject())).thenReturn(metadata); assertThat( s3FileSystem.matchGlobPaths(ImmutableList.of(path)).get(0), MatchResultMatcher.create( ImmutableList.of( MatchResult.Metadata.builder() .setIsReadSeekEfficient(true) .setResourceId( S3ResourceId.fromComponents( firstMatch.getBucketName(), firstMatch.getKey())) .setSizeBytes(firstMatch.getSize()) .setLastModifiedMillis(firstMatch.getLastModified().getTime()) .build(), MatchResult.Metadata.builder() .setIsReadSeekEfficient(true) .setResourceId( S3ResourceId.fromComponents( thirdMatch.getBucketName(), thirdMatch.getKey())) .setSizeBytes(thirdMatch.getSize()) .setLastModifiedMillis(thirdMatch.getLastModified().getTime()) .build()))); }
Example 8
Source File: S3FileSystemTest.java From beam with Apache License 2.0 | 4 votes |
@Test public void matchGlobWithSlashes() throws IOException { S3FileSystem s3FileSystem = buildMockedS3FileSystem(s3Options()); S3ResourceId path = S3ResourceId.fromUri("s3://testbucket/foo/bar\\baz*"); ListObjectsV2Request request = new ListObjectsV2Request() .withBucketName(path.getBucket()) .withPrefix(path.getKeyNonWildcardPrefix()) .withContinuationToken(null); // Expected to be returned; prefix and wildcard/regex match S3ObjectSummary firstMatch = new S3ObjectSummary(); firstMatch.setBucketName(path.getBucket()); firstMatch.setKey("foo/bar\\baz0"); firstMatch.setSize(100); firstMatch.setLastModified(new Date(1540000000001L)); // Expected to not be returned; prefix matches, but substring after wildcard does not S3ObjectSummary secondMatch = new S3ObjectSummary(); secondMatch.setBucketName(path.getBucket()); secondMatch.setKey("foo/bar/baz1"); secondMatch.setSize(200); secondMatch.setLastModified(new Date(1540000000002L)); // Expected first request returns continuation token ListObjectsV2Result result = new ListObjectsV2Result(); result.getObjectSummaries().add(firstMatch); result.getObjectSummaries().add(secondMatch); when(s3FileSystem .getAmazonS3Client() .listObjectsV2(argThat(new ListObjectsV2RequestArgumentMatches(request)))) .thenReturn(result); // Expect object metadata queries for content encoding ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentEncoding(""); when(s3FileSystem.getAmazonS3Client().getObjectMetadata(anyObject())).thenReturn(metadata); assertThat( s3FileSystem.matchGlobPaths(ImmutableList.of(path)).get(0), MatchResultMatcher.create( ImmutableList.of( MatchResult.Metadata.builder() .setIsReadSeekEfficient(true) .setResourceId( S3ResourceId.fromComponents( firstMatch.getBucketName(), firstMatch.getKey())) .setSizeBytes(firstMatch.getSize()) .setLastModifiedMillis(firstMatch.getLastModified().getTime()) .build()))); }
Example 9
Source File: S3FileSystemTest.java From beam with Apache License 2.0 | 4 votes |
@Test public void matchVariousInvokeThreadPool() throws IOException { S3FileSystem s3FileSystem = buildMockedS3FileSystem(s3Options()); AmazonS3Exception notFoundException = new AmazonS3Exception("mock exception"); notFoundException.setStatusCode(404); S3ResourceId pathNotExist = S3ResourceId.fromUri("s3://testbucket/testdirectory/nonexistentfile"); when(s3FileSystem .getAmazonS3Client() .getObjectMetadata( argThat( new GetObjectMetadataRequestMatcher( new GetObjectMetadataRequest( pathNotExist.getBucket(), pathNotExist.getKey()))))) .thenThrow(notFoundException); AmazonS3Exception forbiddenException = new AmazonS3Exception("mock exception"); forbiddenException.setStatusCode(403); S3ResourceId pathForbidden = S3ResourceId.fromUri("s3://testbucket/testdirectory/forbiddenfile"); when(s3FileSystem .getAmazonS3Client() .getObjectMetadata( argThat( new GetObjectMetadataRequestMatcher( new GetObjectMetadataRequest( pathForbidden.getBucket(), pathForbidden.getKey()))))) .thenThrow(forbiddenException); S3ResourceId pathExist = S3ResourceId.fromUri("s3://testbucket/testdirectory/filethatexists"); ObjectMetadata s3ObjectMetadata = new ObjectMetadata(); s3ObjectMetadata.setContentLength(100); s3ObjectMetadata.setLastModified(new Date(1540000000000L)); s3ObjectMetadata.setContentEncoding("not-gzip"); when(s3FileSystem .getAmazonS3Client() .getObjectMetadata( argThat( new GetObjectMetadataRequestMatcher( new GetObjectMetadataRequest(pathExist.getBucket(), pathExist.getKey()))))) .thenReturn(s3ObjectMetadata); S3ResourceId pathGlob = S3ResourceId.fromUri("s3://testbucket/path/part*"); S3ObjectSummary foundListObject = new S3ObjectSummary(); foundListObject.setBucketName(pathGlob.getBucket()); foundListObject.setKey("path/part-0"); foundListObject.setSize(200); foundListObject.setLastModified(new Date(1541000000000L)); ListObjectsV2Result listObjectsResult = new ListObjectsV2Result(); listObjectsResult.setNextContinuationToken(null); listObjectsResult.getObjectSummaries().add(foundListObject); when(s3FileSystem.getAmazonS3Client().listObjectsV2(notNull(ListObjectsV2Request.class))) .thenReturn(listObjectsResult); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentEncoding(""); when(s3FileSystem .getAmazonS3Client() .getObjectMetadata( argThat( new GetObjectMetadataRequestMatcher( new GetObjectMetadataRequest(pathGlob.getBucket(), "path/part-0"))))) .thenReturn(metadata); assertThat( s3FileSystem.match( ImmutableList.of( pathNotExist.toString(), pathForbidden.toString(), pathExist.toString(), pathGlob.toString())), contains( MatchResultMatcher.create(MatchResult.Status.NOT_FOUND, new FileNotFoundException()), MatchResultMatcher.create( MatchResult.Status.ERROR, new IOException(forbiddenException)), MatchResultMatcher.create(100, 1540000000000L, pathExist, true), MatchResultMatcher.create( 200, 1541000000000L, S3ResourceId.fromComponents(pathGlob.getBucket(), foundListObject.getKey()), true))); }
Example 10
Source File: AwsSdkTest.java From s3proxy with Apache License 2.0 | 4 votes |
@Test public void testSinglepartUpload() throws Exception { String blobName = "singlepart-upload"; String cacheControl = "max-age=3600"; String contentDisposition = "attachment; filename=new.jpg"; String contentEncoding = "gzip"; String contentLanguage = "fr"; String contentType = "audio/mp4"; Map<String, String> userMetadata = ImmutableMap.of( "key1", "value1", "key2", "value2"); ObjectMetadata metadata = new ObjectMetadata(); if (!Quirks.NO_CACHE_CONTROL_SUPPORT.contains(blobStoreType)) { metadata.setCacheControl(cacheControl); } if (!Quirks.NO_CONTENT_DISPOSITION.contains(blobStoreType)) { metadata.setContentDisposition(contentDisposition); } if (!Quirks.NO_CONTENT_ENCODING.contains(blobStoreType)) { metadata.setContentEncoding(contentEncoding); } if (!Quirks.NO_CONTENT_LANGUAGE.contains(blobStoreType)) { metadata.setContentLanguage(contentLanguage); } metadata.setContentLength(BYTE_SOURCE.size()); metadata.setContentType(contentType); // TODO: expires metadata.setUserMetadata(userMetadata); client.putObject(containerName, blobName, BYTE_SOURCE.openStream(), metadata); S3Object object = client.getObject(containerName, blobName); try (InputStream actual = object.getObjectContent(); InputStream expected = BYTE_SOURCE.openStream()) { assertThat(actual).hasContentEqualTo(expected); } ObjectMetadata newContentMetadata = object.getObjectMetadata(); if (!Quirks.NO_CACHE_CONTROL_SUPPORT.contains(blobStoreType)) { assertThat(newContentMetadata.getCacheControl()).isEqualTo( cacheControl); } if (!Quirks.NO_CONTENT_DISPOSITION.contains(blobStoreType)) { assertThat(newContentMetadata.getContentDisposition()).isEqualTo( contentDisposition); } if (!Quirks.NO_CONTENT_ENCODING.contains(blobStoreType)) { assertThat(newContentMetadata.getContentEncoding()).isEqualTo( contentEncoding); } if (!Quirks.NO_CONTENT_LANGUAGE.contains(blobStoreType)) { assertThat(newContentMetadata.getContentLanguage()).isEqualTo( contentLanguage); } assertThat(newContentMetadata.getContentType()).isEqualTo( contentType); // TODO: expires assertThat(newContentMetadata.getUserMetadata()).isEqualTo( userMetadata); }
Example 11
Source File: AwsSdkTest.java From s3proxy with Apache License 2.0 | 4 votes |
@Test public void testMultipartUpload() throws Exception { String blobName = "multipart-upload"; String cacheControl = "max-age=3600"; String contentDisposition = "attachment; filename=new.jpg"; String contentEncoding = "gzip"; String contentLanguage = "fr"; String contentType = "audio/mp4"; Map<String, String> userMetadata = ImmutableMap.of( "key1", "value1", "key2", "value2"); ObjectMetadata metadata = new ObjectMetadata(); if (!Quirks.NO_CACHE_CONTROL_SUPPORT.contains(blobStoreType)) { metadata.setCacheControl(cacheControl); } if (!Quirks.NO_CONTENT_DISPOSITION.contains(blobStoreType)) { metadata.setContentDisposition(contentDisposition); } if (!Quirks.NO_CONTENT_ENCODING.contains(blobStoreType)) { metadata.setContentEncoding(contentEncoding); } if (!Quirks.NO_CONTENT_LANGUAGE.contains(blobStoreType)) { metadata.setContentLanguage(contentLanguage); } metadata.setContentType(contentType); // TODO: expires metadata.setUserMetadata(userMetadata); InitiateMultipartUploadResult result = client.initiateMultipartUpload( new InitiateMultipartUploadRequest(containerName, blobName, metadata)); ByteSource byteSource = TestUtils.randomByteSource().slice( 0, MINIMUM_MULTIPART_SIZE + 1); ByteSource byteSource1 = byteSource.slice(0, MINIMUM_MULTIPART_SIZE); ByteSource byteSource2 = byteSource.slice(MINIMUM_MULTIPART_SIZE, 1); UploadPartResult part1 = client.uploadPart(new UploadPartRequest() .withBucketName(containerName) .withKey(blobName) .withUploadId(result.getUploadId()) .withPartNumber(1) .withPartSize(byteSource1.size()) .withInputStream(byteSource1.openStream())); UploadPartResult part2 = client.uploadPart(new UploadPartRequest() .withBucketName(containerName) .withKey(blobName) .withUploadId(result.getUploadId()) .withPartNumber(2) .withPartSize(byteSource2.size()) .withInputStream(byteSource2.openStream())); client.completeMultipartUpload(new CompleteMultipartUploadRequest( containerName, blobName, result.getUploadId(), ImmutableList.of(part1.getPartETag(), part2.getPartETag()))); ObjectListing listing = client.listObjects(containerName); assertThat(listing.getObjectSummaries()).hasSize(1); S3Object object = client.getObject(containerName, blobName); try (InputStream actual = object.getObjectContent(); InputStream expected = byteSource.openStream()) { assertThat(actual).hasContentEqualTo(expected); } ObjectMetadata newContentMetadata = object.getObjectMetadata(); if (!Quirks.NO_CACHE_CONTROL_SUPPORT.contains(blobStoreType)) { assertThat(newContentMetadata.getCacheControl()).isEqualTo( cacheControl); } if (!Quirks.NO_CONTENT_DISPOSITION.contains(blobStoreType)) { assertThat(newContentMetadata.getContentDisposition()).isEqualTo( contentDisposition); } if (!Quirks.NO_CONTENT_ENCODING.contains(blobStoreType)) { assertThat(newContentMetadata.getContentEncoding()).isEqualTo( contentEncoding); } if (!Quirks.NO_CONTENT_LANGUAGE.contains(blobStoreType)) { assertThat(newContentMetadata.getContentLanguage()).isEqualTo( contentLanguage); } assertThat(newContentMetadata.getContentType()).isEqualTo( contentType); // TODO: expires assertThat(newContentMetadata.getUserMetadata()).isEqualTo( userMetadata); }
Example 12
Source File: AwsSdkTest.java From s3proxy with Apache License 2.0 | 4 votes |
@Test public void testCopyObjectPreserveMetadata() throws Exception { String fromName = "from-name"; String toName = "to-name"; String cacheControl = "max-age=3600"; String contentDisposition = "attachment; filename=old.jpg"; String contentEncoding = "gzip"; String contentLanguage = "en"; String contentType = "audio/ogg"; Map<String, String> userMetadata = ImmutableMap.of( "key1", "value1", "key2", "value2"); ObjectMetadata metadata = new ObjectMetadata(); if (!Quirks.NO_CACHE_CONTROL_SUPPORT.contains(blobStoreType)) { metadata.setCacheControl(cacheControl); } metadata.setContentLength(BYTE_SOURCE.size()); if (!Quirks.NO_CONTENT_DISPOSITION.contains(blobStoreType)) { metadata.setContentDisposition(contentDisposition); } if (!Quirks.NO_CONTENT_ENCODING.contains(blobStoreType)) { metadata.setContentEncoding(contentEncoding); } if (!Quirks.NO_CONTENT_LANGUAGE.contains(blobStoreType)) { metadata.setContentLanguage(contentLanguage); } metadata.setContentType(contentType); // TODO: expires metadata.setUserMetadata(userMetadata); client.putObject(containerName, fromName, BYTE_SOURCE.openStream(), metadata); client.copyObject(containerName, fromName, containerName, toName); S3Object object = client.getObject(containerName, toName); try (InputStream actual = object.getObjectContent(); InputStream expected = BYTE_SOURCE.openStream()) { assertThat(actual).hasContentEqualTo(expected); } ObjectMetadata contentMetadata = object.getObjectMetadata(); assertThat(contentMetadata.getContentLength()).isEqualTo( BYTE_SOURCE.size()); if (!Quirks.NO_CACHE_CONTROL_SUPPORT.contains(blobStoreType)) { assertThat(contentMetadata.getCacheControl()).isEqualTo( cacheControl); } if (!Quirks.NO_CONTENT_DISPOSITION.contains(blobStoreType)) { assertThat(contentMetadata.getContentDisposition()).isEqualTo( contentDisposition); } if (!Quirks.NO_CONTENT_ENCODING.contains(blobStoreType)) { assertThat(contentMetadata.getContentEncoding()).isEqualTo( contentEncoding); } if (!Quirks.NO_CONTENT_LANGUAGE.contains(blobStoreType)) { assertThat(contentMetadata.getContentLanguage()).isEqualTo( contentLanguage); } assertThat(contentMetadata.getContentType()).isEqualTo( contentType); // TODO: expires assertThat(contentMetadata.getUserMetadata()).isEqualTo( userMetadata); }
Example 13
Source File: AwsSdkTest.java From s3proxy with Apache License 2.0 | 4 votes |
@Test public void testCopyObjectReplaceMetadata() throws Exception { String fromName = "from-name"; String toName = "to-name"; ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentLength(BYTE_SOURCE.size()); if (!Quirks.NO_CACHE_CONTROL_SUPPORT.contains(blobStoreType)) { metadata.setCacheControl("max-age=3600"); } if (!Quirks.NO_CONTENT_DISPOSITION.contains(blobStoreType)) { metadata.setContentDisposition("attachment; filename=old.jpg"); } if (!Quirks.NO_CONTENT_ENCODING.contains(blobStoreType)) { metadata.setContentEncoding("compress"); } if (!Quirks.NO_CONTENT_LANGUAGE.contains(blobStoreType)) { metadata.setContentLanguage("en"); } metadata.setContentType("audio/ogg"); // TODO: expires metadata.setUserMetadata(ImmutableMap.of( "key1", "value1", "key2", "value2")); client.putObject(containerName, fromName, BYTE_SOURCE.openStream(), metadata); String cacheControl = "max-age=1800"; String contentDisposition = "attachment; filename=new.jpg"; String contentEncoding = "gzip"; String contentLanguage = "fr"; String contentType = "audio/mp4"; ObjectMetadata contentMetadata = new ObjectMetadata(); if (!Quirks.NO_CACHE_CONTROL_SUPPORT.contains(blobStoreType)) { contentMetadata.setCacheControl(cacheControl); } if (!Quirks.NO_CONTENT_DISPOSITION.contains(blobStoreType)) { contentMetadata.setContentDisposition(contentDisposition); } if (!Quirks.NO_CONTENT_ENCODING.contains(blobStoreType)) { contentMetadata.setContentEncoding(contentEncoding); } if (!Quirks.NO_CONTENT_LANGUAGE.contains(blobStoreType)) { contentMetadata.setContentLanguage(contentLanguage); } contentMetadata.setContentType(contentType); // TODO: expires Map<String, String> userMetadata = ImmutableMap.of( "key3", "value3", "key4", "value4"); contentMetadata.setUserMetadata(userMetadata); client.copyObject(new CopyObjectRequest( containerName, fromName, containerName, toName) .withNewObjectMetadata(contentMetadata)); S3Object object = client.getObject(containerName, toName); try (InputStream actual = object.getObjectContent(); InputStream expected = BYTE_SOURCE.openStream()) { assertThat(actual).hasContentEqualTo(expected); } ObjectMetadata toContentMetadata = object.getObjectMetadata(); if (!Quirks.NO_CACHE_CONTROL_SUPPORT.contains(blobStoreType)) { assertThat(contentMetadata.getCacheControl()).isEqualTo( cacheControl); } if (!Quirks.NO_CONTENT_DISPOSITION.contains(blobStoreType)) { assertThat(toContentMetadata.getContentDisposition()).isEqualTo( contentDisposition); } if (!Quirks.NO_CONTENT_ENCODING.contains(blobStoreType)) { assertThat(toContentMetadata.getContentEncoding()).isEqualTo( contentEncoding); } if (!Quirks.NO_CONTENT_LANGUAGE.contains(blobStoreType)) { assertThat(toContentMetadata.getContentLanguage()).isEqualTo( contentLanguage); } assertThat(toContentMetadata.getContentType()).isEqualTo( contentType); // TODO: expires assertThat(toContentMetadata.getUserMetadata()).isEqualTo( userMetadata); }