Refine search
ByteSource payload = ByteSource.empty(); BlobBuilder.PayloadBlobBuilder builder = blobStore .blobBuilder(blobName) .payload(payload); addContentMetdataFromHttpRequest(builder, request); builder.contentLength(payload.size()); throw new IllegalArgumentException(); } else { builder.tier(StorageClass.valueOf(storageClass).toTier()); MultipartUpload mpu = blobStore.initiateMultipartUpload(containerName, builder.build().getMetadata(), options); blobStore.putBlob(containerName, builder.name(mpu.id()).build(), options);
BlobStore blobStore = context.getBlobStore(); if ( blobStore.createContainerInLocation(null, bucketName) ) { logger.info( "Created bucket {}", bucketName ); BlobStore blobStore = context.getBlobStore(); BlobBuilder blobBuilder = blobStore.blobBuilder( filename ) .payload( ephemeral ) .contentMD5(Files.hash( ephemeral, Hashing.md5() )) .contentType("application/json"); Blob blob = blobBuilder.build(); final String uploadedFile = blobStore.putBlob( bucketName, blob, PutOptions.Builder.multipart() );
private static void addContentMetdataFromHttpRequest( BlobBuilder.PayloadBlobBuilder builder, HttpServletRequest request) { ImmutableMap.Builder<String, String> userMetadata = ImmutableMap.builder(); for (String headerName : Collections.list(request.getHeaderNames())) { if (startsWithIgnoreCase(headerName, USER_METADATA_PREFIX)) { userMetadata.put( headerName.substring(USER_METADATA_PREFIX.length()), Strings.nullToEmpty(request.getHeader(headerName))); } } builder.cacheControl(request.getHeader( HttpHeaders.CACHE_CONTROL)) .contentDisposition(request.getHeader( HttpHeaders.CONTENT_DISPOSITION)) .contentEncoding(request.getHeader( HttpHeaders.CONTENT_ENCODING)) .contentLanguage(request.getHeader( HttpHeaders.CONTENT_LANGUAGE)) .userMetadata(userMetadata.build()); String contentType = request.getContentType(); if (contentType != null) { builder.contentType(contentType); } long expires = request.getDateHeader(HttpHeaders.EXPIRES); if (expires != -1) { builder.expires(new Date(expires)); } }
@Test public void testSignPutBlobWithTime() throws Exception { BlobStore signPutBloblWithTime = requestsSendResponses(init()); Blob blob = signPutBloblWithTime.blobBuilder(name).payload(text).contentType("text/plain").build(); HttpRequest compare = putBlobWithTime(); compare.setPayload(blob.getPayload()); assertEquals(signPutBloblWithTime.getContext().getSigner().signPutBlob(container, blob, 3l /* seconds */), compare); }
@Test(groups = { "integration", "live" }) public void testPutObjectStream() throws InterruptedException, IOException, ExecutionException { PayloadBlobBuilder blobBuilder = view.getBlobStore().blobBuilder("streaming").payload( new StreamingPayload(new WriteTo() { @Override public void writeTo(OutputStream outstream) throws IOException { outstream.write("foo".getBytes()); } })); addContentMetadata(blobBuilder); Blob blob = blobBuilder.build(); String container = getContainerName(); try { assertNotNull(view.getBlobStore().putBlob(container, blob)); blob = view.getBlobStore().getBlob(container, blob.getMetadata().getName()); String returnedString = getContentAsStringOrNullAndClose(blob); assertEquals(returnedString, "foo"); validateMetadata(blob.getMetadata(), container, blob.getMetadata().getName()); checkContentMetadata(blob); PageSet<? extends StorageMetadata> set = view.getBlobStore().list(container); assert set.size() == 1 : set; } finally { returnContainer(container); } }
@Test public void testSignRemoveUrl() throws Exception { String name = "hello"; String text = "fooooooooooooooooooooooo"; Blob blob = view.getBlobStore().blobBuilder(name).payload(text).contentType("text/plain").build(); String container = getContainerName(); try { view.getBlobStore().putBlob(container, blob); assertConsistencyAwareContainerSize(container, 1); HttpRequest request = view.getSigner().signRemoveBlob(container, name); assertEquals(request.getFilters().size(), 0); view.utils().http().invoke(request); assert !view.getBlobStore().blobExists(container, name); } finally { returnContainer(container); } } }
@Test public void testListMarkerAfterLastKey() throws Exception { String key = "hello"; String containerName = getContainerName(); try { addBlobToContainer(containerName, // NOTE all metadata in jclouds comes out as lowercase, in an effort to // normalize the providers. view.getBlobStore().blobBuilder(key).userMetadata(ImmutableMap.of("Adrian", "powderpuff")) .payload(TEST_STRING).contentType(MediaType.TEXT_PLAIN) .contentMD5(md5().hashString(TEST_STRING, UTF_8).asBytes()) .build()); validateContent(containerName, key); awaitConsistency(); PageSet<? extends StorageMetadata> container = view.getBlobStore().list(containerName, afterMarker(key)); assertThat(container).isEmpty(); } finally { returnContainer(containerName); } }
@Test(groups = { "integration", "live" }) public void testCopyBlobCopyMetadata() throws Exception { BlobStore blobStore = view.getBlobStore(); String fromName = "source"; String toName = "to"; Map<String, String> userMetadata = ImmutableMap.of("key1", "value1", "key2", "value2"); PayloadBlobBuilder blobBuilder = blobStore .blobBuilder(fromName) .payload(payload) .contentLength(payload.size()); addContentMetadata(blobBuilder); blobBuilder.userMetadata(userMetadata); Blob blob = blobBuilder.build(); checkUserMetadata(toBlob.getMetadata().getUserMetadata(), userMetadata); } finally { returnContainer(toContainer);
@Test(groups = { "integration", "live" }) public void testPutTwiceIsOkAndDoesntOverwrite() throws InterruptedException { String containerName = getContainerName(); try { view.getBlobStore().createContainerInLocation(null, containerName); Blob blob = view.getBlobStore().blobBuilder("hello").payload(TEST_STRING).build(); view.getBlobStore().putBlob(containerName, blob); view.getBlobStore().createContainerInLocation(null, containerName); assertEquals(view.getBlobStore().countBlobs(containerName), 1); } finally { returnContainer(containerName); } }
@Test(groups = { "integration", "live" }) public void testSigningOfUppercaseMetadata() throws InterruptedException { String containerName = getContainerName(); String blobName = "testSigningOfUppercaseMetadata"; Blob blob = view.getBlobStore().blobBuilder(blobName) .userMetadata(ImmutableMap.of("B", "b", "a", "a")) .payload(TEST_STRING).contentType(MediaType.TEXT_PLAIN) .contentMD5(md5().hashString(TEST_STRING, Charsets.UTF_8)) .build(); assertNull(view.getBlobStore().blobMetadata(containerName, blobName)); view.getBlobStore().copyBlob( containerName, blobName, containerName, blobName, CopyOptions.builder().userMetadata(ImmutableMap.of("B", "b", "a", "a")).build() Blob newObject = view.getBlobStore().getBlob(containerName, blobName); assertNotNull(newObject); assertEquals(newObject.getMetadata().getUserMetadata().get("b"), "b"); assertEquals(newObject.getMetadata().getUserMetadata().get("a"), "a");
@Test public void testSignPutBlob() throws Exception { BlobStore signPutBlob = requestsSendResponses(init()); Blob blob = signPutBlob.blobBuilder("name").forSigning().contentLength(2l).contentMD5(new byte[] { 0, 2, 4, 8 }) .contentType("text/plain").expires(new Date(1000)).build(); HttpRequest compare = putBlob(); compare.setPayload(blob.getPayload()); assertEquals(signPutBlob.getContext().getSigner().signPutBlob(container, blob), compare); }
@Test(dataProvider = "ignoreOnMacOSX") public void testOverwriteBlobMetadata() throws Exception { String blobKey = TestUtils.createRandomBlobKey("writePayload-", ".img"); // write blob Blob blob = new BlobBuilderImpl() .name(blobKey) .payload(randomByteSource().slice(0, 1024)) .userMetadata(ImmutableMap.of("key1", "value1")) .build(); storageStrategy.putBlob(CONTAINER_NAME, blob); blob = storageStrategy.getBlob(CONTAINER_NAME, blobKey); assertEquals(blob.getMetadata().getUserMetadata().get("key1"), "value1"); // overwrite blob blob = new BlobBuilderImpl() .name(blobKey) .payload(randomByteSource().slice(0, 1024)) // no metadata .build(); Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS); storageStrategy.putBlob(CONTAINER_NAME, blob); blob = storageStrategy.getBlob(CONTAINER_NAME, blobKey); assertFalse(blob.getMetadata().getUserMetadata().containsKey("key1")); }
public void test() throws IOException { blobstore.createContainerInLocation(null, "goodies"); for (int i = 0; i < 1001; i++) { blobstore.putBlob("goodies", blobstore.blobBuilder(i + "").payload(i + "").build()); } assertEquals(blobstore.countBlobs("goodies"), 1001); blobstore.clearContainer("goodies"); assertEquals(blobstore.countBlobs("goodies"), 0); }
@Test public void testSignPutUrl() throws Exception { String name = "hello"; String text = "fooooooooooooooooooooooo"; Blob blob = view.getBlobStore().blobBuilder(name).payload(text).contentType("image/png").build(); String container = getContainerName(); try { HttpRequest request = view.getSigner().signPutBlob(container, blob); assertEquals(request.getFilters().size(), 0); Strings2.toStringAndClose(view.utils().http().invoke(request).getPayload().openStream()); blob = view.getBlobStore().getBlob(container, name); assertThat(blob.getMetadata().getContentMetadata().getContentType()).isEqualTo("image/png"); } finally { returnContainer(container); } }
public void testCreateListDestroyContainer() throws IOException { context.getBlobStore().createContainerInLocation(null, testContainerName); context.getBlobStore().list(testContainerName); PageSet<? extends StorageMetadata> ps = context.getBlobStore().list(); assertHasItemNamed(ps, testContainerName); Blob b = context.getBlobStore().blobBuilder("my-blob-1").payload(Streams.newInputStreamWithContents("hello world")).build(); context.getBlobStore().putBlob(testContainerName, b); Blob b2 = context.getBlobStore().getBlob(testContainerName, "my-blob-1"); Assert.assertEquals(Streams.readFullyStringAndClose(b2.getPayload().openStream()), "hello world"); context.getBlobStore().deleteContainer(testContainerName); }
@Test(groups = { "integration", "live" }) public void testPut() throws IOException, InterruptedException { String bucketName = getContainerName(); try { Map<String, Blob> map = createMap(view, bucketName); Blob blob = view.getBlobStore().blobBuilder("one").payload(Strings2.toInputStream("apple")).calculateMD5() .build(); Blob old = map.put(blob.getMetadata().getName(), blob); getOneReturnsAppleAndOldValueIsNull(map, old); blob.setPayload(Strings2.toInputStream("bear")); Payloads.calculateMD5(blob); Blob apple = map.put(blob.getMetadata().getName(), blob); getOneReturnsBearAndOldValueIsApple(map, apple); } finally { returnContainer(bucketName); } }
public void testSignPutBlobWithGenerate() throws ArrayIndexOutOfBoundsException, SecurityException, IllegalArgumentException, NoSuchMethodException, IOException { Blob blob = blobFactory.get().name(blobName).payload("foo").calculateMD5().contentType("text/plain").build(); byte[] md5 = new byte[] { -84, -67, 24, -37, 76, -62, -8, 92, -19, -17, 101, 79, -52, -60, -92, -40 }; assertEquals(blob.getPayload().getContentMetadata().getContentMD5(), md5); HttpRequest request = signer.signPutBlob(containerName, blob); assertRequestLineEquals(request, "PUT " + fullUrl + " HTTP/1.1"); assertNonPayloadHeadersEqual( request, "Authorization: Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==\nContent-Length: 3\nContent-MD5: rL0Y20zC+Fzt72VPzMSk2A==\nContent-Type: text/plain\n"); assertContentHeadersEqual(request, "text/plain", null, null, null, 3L, md5, null); assertEquals(request.getFilters().size(), 0); }
public void testSignPutBlob() throws ArrayIndexOutOfBoundsException, SecurityException, IllegalArgumentException, NoSuchMethodException, IOException { Blob blob = blobFactory.get().name(blobName).forSigning().contentLength(2l).contentMD5(new byte[] { 0, 2, 4, 8 }) .contentType("text/plain").build(); assertEquals(blob.getPayload().getContentMetadata().getContentMD5(), new byte[] { 0, 2, 4, 8 }); HttpRequest request = signer.signPutBlob(containerName, blob); assertRequestLineEquals(request, "PUT " + fullUrl + " HTTP/1.1"); assertNonPayloadHeadersEqual( request, "Authorization: Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==\nContent-Length: 2\nContent-MD5: AAIECA==\nContent-Type: text/plain\n"); assertContentHeadersEqual(request, "text/plain", null, null, null, 2L, new byte[] { 0, 2, 4, 8 }, null); assertEquals(request.getFilters().size(), 0); }
@Override public Void call() throws Exception { String name = blobCount.incrementAndGet() + ""; Blob blob = view.getBlobStore().blobBuilder(name).payload(testPayload).build(); view.getBlobStore().putBlob(container, blob); assertConsistencyAwareBlobExists(container, name); blob = view.getBlobStore().getBlob(container, name); assert Arrays.equals(md5Supplier(blob.getPayload()), md5) : String.format( "md5 didn't match on %s/%s", container, name); view.getBlobStore().removeBlob(container, name); assertConsistencyAwareBlobDoesntExist(container, name); return null; }
String eTag = blob.getMetadata().getETag(); if (eTag != null) { eTag = maybeQuoteETag(eTag); is = blob.getPayload().openStream(); BlobBuilder.PayloadBlobBuilder builder = blobBuilder(toName) .payload(is); Long contentLength = blob.getMetadata().getContentMetadata().getContentLength(); if (contentLength != null) { builder.contentLength(contentLength); metadata = blob.getMetadata().getContentMetadata(); builder.cacheControl(metadata.getCacheControl()) .contentDisposition(metadata.getContentDisposition()) .contentEncoding(metadata.getContentEncoding()) .contentLanguage(metadata.getContentLanguage()) .contentType(metadata.getContentType()); builder.userMetadata(userMetadata); } else { builder.userMetadata(blob.getMetadata().getUserMetadata()); return putBlob(toContainer, builder.build()); } catch (IOException ioe) { throw Throwables.propagate(ioe);