You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
uri-resolver/src/main/java/org/gcube/datatransfer/resolver/http/HttpResolver.java

94 lines
2.1 KiB
Java

package org.gcube.datatransfer.resolver.http;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.gcube.contentmanager.storageclient.model.protocol.smp.Handler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author andrea
*
*/
public class HttpResolver extends HttpServlet {
private static final long serialVersionUID = 1L;
/** The logger. */
private static final Logger logger = LoggerFactory.getLogger(HttpResolver.class);
public void init(ServletConfig conf) throws ServletException {
super.init(conf);
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException {
logger.info("The http session id is: " + request.getSession().getId());
String uri = request.getParameter("smp-uri");
uri = uri.replace(" ","+");
logger.debug("URI = "+ uri);
try {
if (uri == null || uri.equals("")) {
// the document has not id - not found
response.sendError(404);
return;
}
OutputStream out = response.getOutputStream();
Handler.activateProtocol();
String name = "";
response.addHeader("content_name", name);
response.addHeader("Content-Name", name);
response.addHeader("content-disposition", "attachment; filename=" +name);
response.setContentType("unknown/unknown");
logger.info("About to get object");
URL url = new URL(uri);
URLConnection uc = null;
InputStream in = null;
try {
uc = ( URLConnection ) url.openConnection ( );
in = uc.getInputStream();
}
catch(Exception e){
e.printStackTrace();
}
IOUtils.copy(in, out);
logger.info("Printing outToString: " + out.toString());
out.flush();
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
logger.error("Exception:", e);
}
}
}