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; }
@Test public void testPassWithMinimumDetailsAndPayload5GB() { S3Object object = injector.getInstance(S3Object.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(5368709120l); object.setPayload(payload); object.getMetadata().setKey("foo"); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindS3ObjectMetadataToRequest binder = injector.getInstance(BindS3ObjectMetadataToRequest.class); assertEquals(binder.bindToRequest(request, object), HttpRequest.builder().method("PUT").endpoint( URI.create("http://localhost")).build()); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNoContentLengthIsBad() { S3Object object = injector.getInstance(S3Object.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(null); object.setPayload(payload); object.getMetadata().setKey("foo"); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindS3ObjectMetadataToRequest binder = injector.getInstance(BindS3ObjectMetadataToRequest.class); binder.bindToRequest(request, object); }
@Test public void testPassWithMinimumDetailsAndPayload5GB() { S3Object object = injector.getInstance(S3Object.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(5368709120L); object.setPayload(payload); object.getMetadata().setKey("foo"); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindS3ObjectMetadataToRequest binder = injector.getInstance(BindS3ObjectMetadataToRequest.class); assertEquals(binder.bindToRequest(request, object), HttpRequest.builder().method("PUT").endpoint( URI.create("http://localhost")).build()); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testOver5GBIsBad() { S3Object object = injector.getInstance(S3Object.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(5368709120000l); object.setPayload(payload); object.getMetadata().setKey("foo"); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindS3ObjectMetadataToRequest binder = injector.getInstance(BindS3ObjectMetadataToRequest.class); binder.bindToRequest(request, object); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNoContentLengthIsBad() { S3Object object = injector.getInstance(S3Object.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(null); object.setPayload(payload); object.getMetadata().setKey("foo"); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindS3ObjectMetadataToRequest binder = injector.getInstance(BindS3ObjectMetadataToRequest.class); binder.bindToRequest(request, object); }
@Test public void testExtendedPropertiesBind() { S3Object object = injector.getInstance(S3Object.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(5368709120L); object.setPayload(payload); object.getMetadata().setKey("foo"); object.getMetadata().setUserMetadata(ImmutableMap.of("foo", "bar")); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindS3ObjectMetadataToRequest binder = injector.getInstance(BindS3ObjectMetadataToRequest.class); assertEquals(binder.bindToRequest(request, object), HttpRequest.builder().method("PUT").endpoint( URI.create("http://localhost")).headers( ImmutableMultimap.of("x-amz-meta-foo", "bar")).build()); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testOver5GBIsBad() { S3Object object = injector.getInstance(S3Object.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(5368709120000L); object.setPayload(payload); object.getMetadata().setKey("foo"); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindS3ObjectMetadataToRequest binder = injector.getInstance(BindS3ObjectMetadataToRequest.class); binder.bindToRequest(request, object); }
@Test public void testExtendedPropertiesBind() { S3Object object = injector.getInstance(S3Object.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(5368709120l); object.setPayload(payload); object.getMetadata().setKey("foo"); object.getMetadata().setCacheControl("no-cache"); object.getMetadata().setUserMetadata(ImmutableMap.of("foo", "bar")); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); BindS3ObjectMetadataToRequest binder = injector.getInstance(BindS3ObjectMetadataToRequest.class); assertEquals(binder.bindToRequest(request, object), HttpRequest.builder().method("PUT").endpoint( URI.create("http://localhost")).headers( ImmutableMultimap.of("Cache-Control", "no-cache", "x-amz-meta-foo", "bar")).build()); }
protected void addAlphabetUnderRoot(String bucketName) { for (char letter = 'a'; letter <= 'z'; letter++) { S3Object blob = getApi().newS3Object(); blob.getMetadata().setKey(letter + ""); blob.setPayload(letter + "content"); getApi().putObject(bucketName, blob); } }
protected void add15UnderRoot(String bucketName) { for (int i = 0; i < 15; i++) { S3Object blob = getApi().newS3Object(); blob.getMetadata().setKey(i + ""); blob.setPayload(i + "content"); getApi().putObject(bucketName, blob); } }
protected void addTenObjectsUnderPrefix(String bucketName, String prefix) { for (int i = 0; i < 10; i++) { S3Object blob = getApi().newS3Object(); blob.getMetadata().setKey(prefix + "/" + i); blob.setPayload(i + "content"); getApi().putObject(bucketName, blob); } } }
protected void addTenObjectsUnderPrefix(String bucketName, String prefix) { for (int i = 0; i < 10; i++) { S3Object blob = getApi().newS3Object(); blob.getMetadata().setKey(prefix + "/" + i); blob.setPayload(i + "content"); getApi().putObject(bucketName, blob); } } }
protected void addAlphabetUnderRoot(String bucketName) { for (char letter = 'a'; letter <= 'z'; letter++) { S3Object blob = getApi().newS3Object(); blob.getMetadata().setKey(letter + ""); blob.setPayload(letter + "content"); getApi().putObject(bucketName, blob); } }
protected void add15UnderRoot(String bucketName) { for (int i = 0; i < 15; i++) { S3Object blob = getApi().newS3Object(); blob.getMetadata().setKey(i + ""); blob.setPayload(i + "content"); getApi().putObject(bucketName, blob); } }
public void testDirectorySeparator() throws IOException, InterruptedException { MockWebServer server = new MockWebServer(); server.enqueue(new MockResponse().setBody("").addHeader(ETAG, "ABCDEF")); server.play(); S3Client client = getS3Client(server.getUrl("/")); S3Object fileInDir = client.newS3Object(); fileInDir.getMetadata().setKey("someDir/fileName"); fileInDir.setPayload(new byte[] { 1, 2, 3, 4 }); assertEquals(client.putObject("bucket", fileInDir), "ABCDEF"); RecordedRequest request = server.takeRequest(); assertEquals(request.getRequestLine(), "PUT /bucket/someDir/fileName HTTP/1.1"); // will fail unless -Dsun.net.http.allowRestrictedHeaders=true is set assertEquals(request.getHeaders(EXPECT), ImmutableList.of("100-continue")); server.shutdown(); } }
public void testDirectorySeparator() throws IOException, InterruptedException { MockWebServer server = new MockWebServer(); server.enqueue(new MockResponse().setBody("").addHeader(ETAG, "ABCDEF")); server.play(); S3Client client = getS3Client(server.getUrl("/")); S3Object fileInDir = client.newS3Object(); fileInDir.getMetadata().setKey("someDir/fileName"); fileInDir.setPayload(new byte[] { 1, 2, 3, 4 }); assertEquals(client.putObject("bucket", fileInDir), "ABCDEF"); RecordedRequest request = server.takeRequest(); assertEquals(request.getRequestLine(), "PUT /bucket/someDir/fileName HTTP/1.1"); assertEquals(request.getHeaders(EXPECT), ImmutableList.of("100-continue")); server.shutdown(); }
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 testPutCannedAccessPolicyPublic() throws Exception { String containerName = getContainerName(); try { String key = "hello"; S3Object object = getApi().newS3Object(); object.getMetadata().setKey(key); object.setPayload(TEST_STRING); getApi().putObject(containerName, object, withAcl(CannedAccessPolicy.PUBLIC_READ)); URL url = this.getObjectURL(containerName, key); Strings2.toStringAndClose(url.openStream()); } 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); }