workspace-tree-widget/src/main/java/org/gcube/portlets/user/workspace/server/DownloadPublicLinkServlet.java

141 lines
4.3 KiB
Java

/**
*
*/
package org.gcube.portlets.user.workspace.server;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.gcube.portlets.user.workspace.server.property.PortalUrlGroupGatewayProperty;
import org.gcube.portlets.user.workspace.shared.HandlerResultMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* The Class DownloadPublicLinkServlet.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa{@literal @}isti.cnr.it
* May 16, 2017
*/
public class DownloadPublicLinkServlet extends HttpServlet{
private static final long serialVersionUID = -8423345575690165644L;
protected static Logger logger = LoggerFactory.getLogger(DownloadPublicLinkServlet.class);
/**
* {@inheritDoc}
*/
@Override
public void init() throws ServletException {
super.init();
logger.trace("Workspace DownloadPublicLinkServlet ready.");
}
/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String smp = req.getParameter("smp");
boolean viewContent = req.getParameter("viewContent")==null?false:req.getParameter("viewContent").equals("true");
logger.trace("Input Params [smp: "+smp + ", viewContent: "+viewContent+"]");
if(smp==null || smp.isEmpty()){
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Item id is null");
return;
}
logger.trace("PUBLIC FILE DOWNLOAD REQUEST "+smp);
}
/**
* Send error.
*
* @param response the response
* @param message the message
* @throws IOException Signals that an I/O exception has occurred.
*/
protected void sendError(HttpServletResponse response, String message) throws IOException
{
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
HandlerResultMessage resultMessage = HandlerResultMessage.errorResult(message);
response.getWriter().write(resultMessage.toString());
response.flushBuffer();
}
/**
* Gets the request url.
*
* @param req the req
* @return the request url
*/
public static String getRequestURL(HttpServletRequest req) {
String scheme = req.getScheme(); // http
String serverName = req.getServerName(); // hostname.com
int serverPort = req.getServerPort(); // 80
String contextPath = req.getContextPath(); // /mywebapp
// String servletPath = req.getServletPath(); // /servlet/MyServlet
// String pathInfo = req.getPathInfo(); // /a/b;c=123
// String queryString = req.getQueryString(); // d=789
// Reconstruct original requesting URL
StringBuffer url = new StringBuffer();
url.append(scheme).append("://").append(serverName);
if (serverPort != 80 && serverPort != 443) {
url.append(":").append(serverPort);
}
logger.trace("server: "+url);
logger.trace("contextPath: "+contextPath);
url.append(contextPath);
PortalUrlGroupGatewayProperty p = new PortalUrlGroupGatewayProperty();
int lenght = p.getPath().length();
String groupgatewaypath = "/";
if(lenght>1){
String lastChar = p.getPath().substring(lenght-1, lenght-1);
groupgatewaypath+= lastChar.compareTo("/")!=0?p.getPath()+"/":p.getPath();
}
url.append(groupgatewaypath);
return url.toString();
}
// /**
// * The main method.
// *
// * @param args the arguments
// */
// public static void main(String[] args) {
//
// InputStream is = null;
// logger.trace("start");
// try{
//
// Workspace ws = HomeLibrary.getHomeManagerFactory().getHomeManager().getHome("francesco.mangiacrapa").getWorkspace();
// WorkspaceItem wsItem = ws.getItem("907ce8ef-5c0b-4601-83ac-215d1f432f6b");
// logger.trace("metadata info recovered from HL: [ID: "+wsItem.getId() +", name: "+wsItem.getName()+"]");
// FileOutputStream out = new FileOutputStream(new File("/tmp/bla"));
// logger.trace("cast as external file");
// ExternalFile f = (ExternalFile) wsItem;
// is = f.getData();
// IOUtils.copy(is, out);
// is.close();
// out.close();
// logger.trace("end");
// }catch (Exception e) {
// e.printStackTrace();
// }
// }
}