This commit is contained in:
Lucio Lelii 2018-12-17 13:54:57 +00:00
parent e36d718fda
commit 84ea705a9e
1 changed files with 11 additions and 8 deletions

View File

@ -11,11 +11,14 @@ import javax.ws.rs.core.Response;
import org.gcube.common.storagehub.client.StreamDescriptor; import org.gcube.common.storagehub.client.StreamDescriptor;
import org.gcube.common.storagehub.client.dsl.StorageHubClient; import org.gcube.common.storagehub.client.dsl.StorageHubClient;
import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
import org.gcube.datatransfer.resolver.services.error.ExceptionManager; import org.gcube.datatransfer.resolver.services.error.ExceptionManager;
import org.gcube.smartgears.utils.InnerMethodName; import org.gcube.smartgears.utils.InnerMethodName;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import static org.gcube.common.storagehub.model.Constants.*;
/** /**
* The Class StorageHubResolver. * The Class StorageHubResolver.
@ -53,8 +56,9 @@ public class StorageHubResolver {
try{ try{
InnerMethodName.instance.set("resolveStorageHubPublicLink"); InnerMethodName.instance.set("resolveStorageHubPublicLink");
StorageHubClient shc = new StorageHubClient();
ItemManagerClient client = AbstractPlugin.item().build();
//Checking mandatory parameter id //Checking mandatory parameter id
if(id==null || id.isEmpty()){ if(id==null || id.isEmpty()){
logger.error("Path Parameter "+STORAGE_HUB_ID+" not found"); logger.error("Path Parameter "+STORAGE_HUB_ID+" not found");
@ -62,7 +66,7 @@ public class StorageHubResolver {
} }
try{ try{
StreamDescriptor descriptor = shc.open(id).asFile().download(); StreamDescriptor descriptor = client.resolvePublicLink(id);
return Response return Response
.ok(descriptor.getStream()) .ok(descriptor.getStream())
.header("content-disposition","attachment; filename = \""+descriptor.getFileName()+"\"").build(); .header("content-disposition","attachment; filename = \""+descriptor.getFileName()+"\"").build();
@ -71,7 +75,6 @@ public class StorageHubResolver {
logger.error("Error on getting file with "+id, e); logger.error("Error on getting file with "+id, e);
String errorMsg = "Error on getting file with hub id '"+id+"'. "+e.getMessage(); String errorMsg = "Error on getting file with hub id '"+id+"'. "+e.getMessage();
throw ExceptionManager.internalErrorException(req, errorMsg, StorageHubResolver.class, help); throw ExceptionManager.internalErrorException(req, errorMsg, StorageHubResolver.class, help);
} }
}catch (Exception e) { }catch (Exception e) {
@ -101,7 +104,7 @@ public class StorageHubResolver {
try{ try{
InnerMethodName.instance.set("resolveStorageHubPublicLinkWithVersion"); InnerMethodName.instance.set("resolveStorageHubPublicLinkWithVersion");
StorageHubClient shc = new StorageHubClient(); ItemManagerClient client = AbstractPlugin.item().build();
//Checking mandatory parameter id //Checking mandatory parameter id
if(id==null || id.isEmpty()){ if(id==null || id.isEmpty()){
@ -115,8 +118,8 @@ public class StorageHubResolver {
throw ExceptionManager.badRequestException(req, "Missing mandatory parameter 'version'", StorageHubResolver.class, help); throw ExceptionManager.badRequestException(req, "Missing mandatory parameter 'version'", StorageHubResolver.class, help);
} }
try{ try{
String identifier = String.format("%s%s%s",id, versionPrefix, version);
StreamDescriptor descriptor = shc.open(id).asFile().downloadSpecificVersion(version); StreamDescriptor descriptor = client.resolvePublicLink(identifier);
return Response return Response
.ok(descriptor.getStream()) .ok(descriptor.getStream())
.header("content-disposition","attachment; filename = \""+descriptor.getFileName()+"\"").build(); .header("content-disposition","attachment; filename = \""+descriptor.getFileName()+"\"").build();