diff --git a/pom.xml b/pom.xml index 6986215..e9f814b 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.common storagehub-client-library - 1.0.2-SNAPSHOT + 1.0.3-SNAPSHOT storagehub-client-library 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 e6d4065..ca4f6fc 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 @@ -42,7 +42,40 @@ public class DefaultItemManager implements ItemManagerClient { this.delegate = config; } - + + @Override + public StreamDescriptor resolvePublicLink(String identifier) { + Call call = new Call() { + @Override + public StreamDescriptor call(GXWebTargetAdapterRequest manager) throws Exception { + GXWebTargetAdapterRequest myManager = manager.path("publiclink").path(identifier); + Map params = new HashMap<>(); + + GXInboundResponse response = myManager.queryParams(params).get(); + + if (response.isErrorResponse()) { + if (response.hasException()) + throw response.getException(); + else + throw new BackendGenericError(); + } + + Response resp = response.getSource(); + + InputStream stream = resp.readEntity(InputStream.class); + String disposition = resp.getHeaderString("Content-Disposition"); + String fileName = disposition.replaceFirst("attachment; filename = ([^/s]+)?", "$1"); + return new StreamDescriptor(stream, fileName); + } + }; + try { + StreamDescriptor result = delegate.make(call); + return result; + }catch(Exception e) { + throw new RuntimeException(e); + } + } + @Override public List getChildren(String id, Class onlyOfType, String ... excludeNodes) { Call call = new Call() { diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultWorkspaceManager.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultWorkspaceManager.java index b19d778..fd78cd1 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultWorkspaceManager.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultWorkspaceManager.java @@ -117,7 +117,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient { throw new RuntimeException(e); } } - + @Override public List getVreFolders(int start, int limit, String ... excludeNodes) { Call call = new Call() { diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java index ba4d2e0..87e8394 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java @@ -68,5 +68,7 @@ public interface ItemManagerClient { String setMetadata(String id,Metadata metadata); String createGcubeItem(String parentId, GCubeItem item); + + StreamDescriptor resolvePublicLink(String identifier); } 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 7a745ec..71fc67f 100644 --- a/src/test/java/org/gcube/data/access/fs/Items.java +++ b/src/test/java/org/gcube/data/access/fs/Items.java @@ -8,19 +8,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.StandardCopyOption; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -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.scope.api.ScopeProvider; @@ -32,10 +20,6 @@ import org.gcube.common.storagehub.client.dsl.ItemContainer; import org.gcube.common.storagehub.client.dsl.StorageHubClient; import org.gcube.common.storagehub.model.items.FolderItem; 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; @@ -45,25 +29,52 @@ public class Items { @BeforeClass public static void setUp(){ - //SecurityTokenProvider.instance.set("b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548"); - SecurityTokenProvider.instance.set("a5b623b6-6577-4271-aba6-7ada687d29cf-98187548"); + SecurityTokenProvider.instance.set("18fed2d9-030b-4c77-93af-af2015d945f7-843339462"); + //SecurityTokenProvider.instance.set("a5b623b6-6577-4271-aba6-7ada687d29cf-98187548"); - ScopeProvider.instance.set("/gcube/preprod"); + ScopeProvider.instance.set("/d4science.research-infrastructures.eu"); } + + @Test public void renameFile() throws Exception{ - StorageHubClient shc = new StorageHubClient(); - shc.open("8822478a-4fd3-41d5-87de-9ff161d0935e").asItem().rename("renamed"); + StorageHubClient shc = new StorageHubClient(); + + FolderContainer myRoot = shc.getWSRoot().newFolder("AnimalsMatcher", ""); + + FolderContainer children = myRoot.newFolder("build", "build folder"); + + FileContainer file = null; + try(InputStream is = new FileInputStream(new File("/home/lucio/Downloads/mg.jpg"))){ + file = myRoot.uploadFile(is, "mg.jpg", "file"); + + } catch (Exception e) { + e.printStackTrace(); + } + + + FileContainer copiedFile = file.copy(children, "mg.jpg"); + + try(InputStream is = new FileInputStream(new File("/home/lucio/Downloads/bck.jpg"))){ + file = myRoot.uploadFile(is, "mg.jpg", "file"); + } catch (Exception e) { + e.printStackTrace(); + } + + FileContainer secodncopiedFile = file.copy(children, "mg.jpg"); } + + @Test public void uploadAndcopyFile() throws Exception { StorageHubClient shc = new StorageHubClient(); - + + FileContainer file = null; try(InputStream is = new FileInputStream(new File("/home/lucio/Downloads/TatyanaSondre.jpg"))){ file = shc.getWSRoot().uploadFile(is, "TatyanaSondre5.jpg", "descr"); @@ -113,7 +124,7 @@ public class Items { StorageHubClient shc = new StorageHubClient(); String afi = null; - + try(InputStream is = new FileInputStream(new File("/tmp/down724121986692880606my new folder.zip"))){ shc.getWSRoot().uploadArchive(is, "testUpload2"); @@ -145,7 +156,6 @@ public class Items { public void delete() throws Exception{ try { StorageHubClient shc = new StorageHubClient(); - shc.open("733a8235-e539-46c6-875d-3038579d4c6a").asFile().delete(); }catch(Exception e) { e.printStackTrace(); } 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 6ecf76b..64f429e 100644 --- a/src/test/java/org/gcube/data/access/fs/TestCall.java +++ b/src/test/java/org/gcube/data/access/fs/TestCall.java @@ -19,7 +19,6 @@ import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; -import org.apache.commons.io.FilenameUtils; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.storagehub.client.StreamDescriptor; @@ -33,12 +32,9 @@ import org.gcube.common.storagehub.model.acls.AccessType; import org.gcube.common.storagehub.model.expressions.GenericSearchableItem; import org.gcube.common.storagehub.model.expressions.OrderField; import org.gcube.common.storagehub.model.expressions.SearchableItem; -import org.gcube.common.storagehub.model.expressions.logical.And; import org.gcube.common.storagehub.model.expressions.logical.ISDescendant; -import org.gcube.common.storagehub.model.expressions.text.Like; import org.gcube.common.storagehub.model.items.AbstractFileItem; import org.gcube.common.storagehub.model.items.GCubeItem; -import org.gcube.common.storagehub.model.items.ImageFile; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.query.Queries; import org.gcube.common.storagehub.model.query.Query; @@ -90,7 +86,6 @@ public class TestCall { String id = itemclient.createFolder(ws.getId(), "ok7SharingTest", "shared folder for test SHM"); String sharedId = itemclient.shareFolder(id, new HashSet(Arrays.asList("giancarlo.panichi")), AccessType.WRITE_OWNER); itemclient.uploadFile(new FileInputStream("/home/lucio/Downloads/upload.pdf"), sharedId, "sharedFile.pdf" , "shared file in a shared folder"); - } @Test @@ -292,30 +287,16 @@ public class TestCall { WorkspaceManagerClient wsclient = AbstractPlugin.workspace().build(); //String path = wsclient.getVreFolder("hl:accounting").getPath(); //System.out.println("path is "+path); - query.setExpression(new And(new ISDescendant(Paths.getPath("/Home/massimiliano.assante/Workspace/MySpecialFolders/gcube-devNext-NextNext/")), - new Like(GenericSearchableItem.get().title,"title"))); + query.setExpression(new ISDescendant(Paths.getPath("/Home/m.assante/Workspace/"))); query.setLimit(10); query.setOrder(new OrderField(GenericSearchableItem.get().title)); List items = wsclient.search(query, "hl:accounting", "jcr:content"); for (Item item: items) { - System.out.println(item.getName()+" "+item.getLastModificationTime().getTimeInMillis()); + System.out.println(item.getName()+" "+item.getPath()+" "+item.getLastModificationTime().getTimeInMillis()); } System.out.println("items are "+items.size()); } - - @Test - public void getImage() throws Exception{ - ItemManagerClient itemclient = AbstractPlugin.item().build(); - ImageFile img = (ImageFile)itemclient.get("58acc91a-c8f9-4d78-be8e-1175042f171d"); - String ext = FilenameUtils.getExtension(img.getName()); - File imgFile = File.createTempFile("thumb", "."+ext); - try (FileOutputStream f = new FileOutputStream(imgFile)){ - for (byte b : img.getContent().getThumbnailData()) - f.write(b); - } - System.out.println(imgFile.getAbsolutePath()); - } /* @Test