diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java index e2ab733..6146746 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java @@ -25,7 +25,10 @@ import org.gcube.common.storagehub.model.service.ItemList; import org.gcube.common.storagehub.model.service.ItemWrapper; import org.gcube.common.storagehub.model.types.ACLList; import org.glassfish.jersey.media.multipart.FormDataMultiPart; +import org.glassfish.jersey.media.multipart.MultiPart; import org.glassfish.jersey.media.multipart.MultiPartFeature; +import org.glassfish.jersey.media.multipart.file.FileDataBodyPart; +import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart; public class DefaultItemManager implements ItemManagerClient { @@ -212,10 +215,21 @@ public class DefaultItemManager implements ItemManagerClient { @Override public String call(WebTarget manager) throws Exception { WebTarget myManager = manager.register(MultiPartFeature.class).path(parentId) - .path("create").path("FILE").queryParam("name", fileName).queryParam("description", description); + .path("create").path("FILE"); Invocation.Builder builder = myManager.request(); - String response = builder.post(Entity.entity(stream, MediaType.APPLICATION_OCTET_STREAM), String.class); - return response; + + try (FormDataMultiPart multipart = new FormDataMultiPart()){ + + multipart.field("name", fileName); + multipart.field("description", description); + + StreamDataBodyPart fileDataBodyPart = new StreamDataBodyPart("file",stream); + multipart.bodyPart(fileDataBodyPart); + + String response = builder.post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE),String.class); + return response; + } + } }; try { diff --git a/src/test/java/org/gcube/data/access/fs/Items.java b/src/test/java/org/gcube/data/access/fs/Items.java index 7743123..d378ca9 100644 --- a/src/test/java/org/gcube/data/access/fs/Items.java +++ b/src/test/java/org/gcube/data/access/fs/Items.java @@ -7,7 +7,15 @@ import java.io.InputStream; import java.nio.file.StandardCopyOption; import java.util.List; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.Invocation; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; + import org.gcube.common.authorization.library.provider.SecurityTokenProvider; +import org.gcube.common.calls.jaxrs.JaxRSRequestFilter; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.storagehub.client.StreamDescriptor; import org.gcube.common.storagehub.client.dsl.ContainerType; @@ -15,6 +23,10 @@ import org.gcube.common.storagehub.client.dsl.FileContainer; import org.gcube.common.storagehub.client.dsl.ItemContainer; import org.gcube.common.storagehub.client.dsl.StorageHubClient; import org.gcube.common.storagehub.model.items.Item; +import org.glassfish.jersey.client.ClientProperties; +import org.glassfish.jersey.media.multipart.FormDataMultiPart; +import org.glassfish.jersey.media.multipart.MultiPartFeature; +import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart; import org.junit.BeforeClass; import org.junit.Test; @@ -24,17 +36,35 @@ public class Items { @BeforeClass public static void setUp(){ - SecurityTokenProvider.instance.set("595ca591-9921-423c-bfca-f8be19f05882-98187548"); - ScopeProvider.instance.set("/gcube/devNext/NextNext"); + SecurityTokenProvider.instance.set("b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548"); + ScopeProvider.instance.set("/gcube"); } @Test - public void uploadFile() { + public void uploadFile() throws Exception { StorageHubClient shc = new StorageHubClient(); + /* + Client client = ClientBuilder.newClient().property(ClientProperties.FOLLOW_REDIRECTS, Boolean.FALSE).property(ClientProperties.CHUNKED_ENCODING_SIZE, 1024*1024); + + WebTarget webTarget = client.target("http://workspace-repository1-d.d4science.org/storagehub/workspace/items/bc1c9525-43f7-4565-b5ea-0a0f9d7853a0/create/FILE?gcube-token=595ca591-9921-423c-bfca-f8be19f05882-98187548"); + + Invocation.Builder builder = webTarget.register(MultiPartFeature.class).request(); + + try (FormDataMultiPart multipart = new FormDataMultiPart();InputStream is = new FileInputStream(new File("/home/lucio/Downloads/1GB.zip"))){ + + multipart.field("name", "5Giga"); + multipart.field("description", ""); + + StreamDataBodyPart fileDataBodyPart = new StreamDataBodyPart("file",is); + multipart.bodyPart(fileDataBodyPart); + + String response = builder.post(Entity.entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE),String.class); + System.out.println(response); + }*/ String afi = null; - try (InputStream is = new FileInputStream(new File("/home/lucio/Downloads/rockandroll.jpeg"))){ - shc.getWSRoot().uploadFile(is, "test2-image.jpeg", "descr"); + try (InputStream is = new FileInputStream(new File("/home/lucio/Downloads/test5Gb.zip"))){ + shc.getWSRoot().uploadFile(is, "5g.zip", "descr"); System.out.println(afi); } catch (Exception e) { diff --git a/src/test/java/org/gcube/data/access/fs/TestCall.java b/src/test/java/org/gcube/data/access/fs/TestCall.java index 794f3e0..dd1b3b3 100644 --- a/src/test/java/org/gcube/data/access/fs/TestCall.java +++ b/src/test/java/org/gcube/data/access/fs/TestCall.java @@ -2,7 +2,10 @@ package org.gcube.data.access.fs; import java.io.BufferedInputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.URI; import java.nio.file.Files; import java.util.Arrays; import java.util.Calendar; @@ -87,7 +90,22 @@ public class TestCall { } - + @Test + public void upload() throws Exception{ + final ItemManagerClient client = AbstractPlugin.item().at(new URI("http://workspace-repository1-d.d4science.org:8080/storagehub")).build(); + + try (InputStream is = new FileInputStream(new File("/home/lucio/Downloads/test5Gb.zip"))){ + + client.uploadFile(is, "bc1c9525-43f7-4565-b5ea-0a0f9d7853a0", "5gb.zip", "description"); + + } catch (Exception e) { + e.printStackTrace(); + } + + + + System.in.read(); + }