alpha versione ready

master
Massimiliano Assante 3 years ago
parent 3ac806d704
commit 057fe1080d

@ -58,6 +58,11 @@
<groupId>org.gcube.resources.discovery</groupId> <groupId>org.gcube.resources.discovery</groupId>
<artifactId>ic-client</artifactId> <artifactId>ic-client</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency> <dependency>
<groupId>org.gcube.core</groupId> <groupId>org.gcube.core</groupId>
<artifactId>common-encryption</artifactId> <artifactId>common-encryption</artifactId>

@ -1,72 +1,101 @@
package org.gcube.portal.ddas; package org.gcube.portal.ddas;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.net.URL;
import java.util.Base64; import java.util.Base64;
import javax.portlet.PortletRequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.google.gson.Gson;
import com.liferay.portal.kernel.json.JSONFactoryUtil; import com.google.gson.JsonObject;
import com.liferay.portal.kernel.json.JSONObject; import com.google.gson.JsonParser;
import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.log.LogFactoryUtil;
import net.spy.memcached.MemcachedClient;
import net.spy.memcached.internal.OperationFuture;
/** /**
* Servlet implementation class DdasVREService * Servlet implementation class DdasVREService
*/ */
public class DdasVREService extends HttpServlet { public class DdasVREService extends HttpServlet {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static com.liferay.portal.kernel.log.Log _log = LogFactoryUtil.getLog(DdasVREService.class); private static com.liferay.portal.kernel.log.Log _log = LogFactoryUtil.getLog(DdasVREService.class);
/** private static final int CACHE_SECONDS_EXPIRATION = 1800; //30 minutes
* @see HttpServlet#HttpServlet()
*/
public DdasVREService() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /**
String toReturn = "<DIV>Blue-Cloud VRE - DD&amp;AS integration accepts POST method only</DIV>"; * @see HttpServlet#HttpServlet()
*/
public DdasVREService() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String toReturn = "<DIV>Blue-Cloud VRE - DD&amp;AS integration accepts POST method only</DIV>";
response.setContentType("text/html"); response.setContentType("text/html");
response.getWriter().write(toReturn); response.getWriter().write(toReturn);
} }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
String line = null; String line = null;
JsonObject jsonObject = null;
JSONObject jsonObject = null;
try { try {
BufferedReader reader = request.getReader(); BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
sb.append(line); sb.append(line);
} }
System.out.println("GOT String: "+sb.toString()); _log.debug("GOT String: "+sb.toString());
jsonObject = JSONFactoryUtil.createJSONObject(sb.toString()); JsonParser parser = new JsonParser();
jsonObject = parser.parse(sb.toString()).getAsJsonObject();
} catch (Exception e) { } catch (Exception e) {
_log.error("Error parsing JSON request string", e); _log.error("Error parsing JSON request string", e);
} }
BrokerResponse theResponse = null;
String requestId = jsonObject.get("request_id").getAsString();
if (requestId == null || requestId.equals("")) {
Base64.Encoder withoutPaddingEncoder = Base64.getEncoder().withoutPadding(); theResponse = new BrokerResponse(405, "Method Not Allowed, something is wrong in the JSON, request_id not found", null);
String requestIdParam = withoutPaddingEncoder.encodeToString("request_id".getBytes()); }
String requestId = jsonObject.getString("request_id"); _log.debug("GOT JSON");
System.out.println("GOT JSON"); _log.debug("JSON="+jsonObject.toString());
System.out.println("JSON="+jsonObject.toString()); boolean result = authorizeRequest(requestId, jsonObject);
if (result) {
String redirect_url = "/group/nomesito/vre-data-pool-pagina?"+requestIdParam+"="+requestId; int status = 200;
Base64.Encoder withoutPaddingEncoder = Base64.getEncoder().withoutPadding();
String toReturn = "{\"success\": true, \"redirect_url\": \""+redirect_url+"\"}"; String requestIdParam = withoutPaddingEncoder.encodeToString("request_id".getBytes());
String message = "Started downloading order files to Virtual Research Environment '"+requestId+"'";
String vreConfirmUrl = "https://blue-cloud.d4science.org/group/bluecloud-gateway/vre-data-pool?"+requestIdParam+"="+requestId; //redirect URL
URL theURL = new URL(vreConfirmUrl);
theResponse = new BrokerResponse(status, message, theURL);
}
else {
theResponse = new BrokerResponse(500, "An error occurred in the VRE Service, downlaod not possible", null);
}
Gson gson = new Gson();
String toReturn = gson.toJson(theResponse);
response.setContentType("application/json"); response.setContentType("application/json");
response.getWriter().write(toReturn); response.getWriter().write(toReturn);
}
private boolean authorizeRequest(String requestId,JsonObject jsonObject) {
OperationFuture<Boolean> writeOp = null;
try {
MemcachedClient mClient = new DistributedCacheClient().getMemcachedClient();
writeOp = mClient.set(requestId, CACHE_SECONDS_EXPIRATION, jsonObject.toString());
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
return writeOp.getStatus().isSuccess();
}
return writeOp.getStatus().isSuccess();
} }
} }

Loading…
Cancel
Save