Added RR for Google Shortener
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@77434 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
f2e13c1339
commit
2ef13ff2d7
|
@ -106,6 +106,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
return WsUtil.withoutPortal;
|
return WsUtil.withoutPortal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected UrlShortener getUrlShortener() {
|
||||||
|
return WsUtil.getUrlShortener(this.getThreadLocalRequest().getSession());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FolderModel getRootForTree() throws Exception {
|
public FolderModel getRootForTree() throws Exception {
|
||||||
|
|
||||||
|
@ -2200,8 +2204,13 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
||||||
|
|
||||||
workspaceLogger.trace("get short url for "+ longUrl);
|
workspaceLogger.trace("get short url for "+ longUrl);
|
||||||
|
|
||||||
|
UrlShortener shortener = getUrlShortener();
|
||||||
try{
|
try{
|
||||||
return UrlShortener.shorten(longUrl);
|
|
||||||
|
if(shortener!=null && shortener.isAvailable())
|
||||||
|
return shortener.shorten(longUrl);
|
||||||
|
|
||||||
|
return longUrl;
|
||||||
|
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
workspaceLogger.error("Error get short url for ", e);
|
workspaceLogger.error("Error get short url for ", e);
|
||||||
|
|
|
@ -8,6 +8,9 @@ package org.gcube.portlets.user.workspace.server.shortner;
|
||||||
* @Jun 28, 2013
|
* @Jun 28, 2013
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
|
||||||
|
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
|
@ -15,30 +18,92 @@ import java.io.OutputStreamWriter;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
|
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
||||||
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
|
import org.gcube.resources.discovery.client.api.DiscoveryClient;
|
||||||
|
import org.gcube.resources.discovery.client.queries.impl.XQuery;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
import org.json.simple.parser.JSONParser;
|
import org.json.simple.parser.JSONParser;
|
||||||
|
|
||||||
public final class UrlShortener {
|
public final class UrlShortener {
|
||||||
|
|
||||||
protected static final String APPLICATION_JSON = "application/json";
|
|
||||||
protected static final String LONG_URL = "longUrl";
|
|
||||||
|
|
||||||
protected static String shortnerServerUrl = "https://www.googleapis.com/urlshortener/v1/url";
|
|
||||||
|
|
||||||
protected static String urlMethod = "";
|
|
||||||
protected static String authenticationKeyValue ="AIzaSyDfMO0VY3o8GjRUqnTfqScjm_EsFEuBa3g";
|
|
||||||
protected static String authenticationKeyParam = "key";
|
|
||||||
|
|
||||||
protected static Logger logger = Logger.getLogger(UrlShortener.class);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public UrlShortener() {
|
protected static final String NO_HTTP_URL_SHORTENER_AVAILABLE = "No HTTP URL Shortener available";
|
||||||
// TODO Auto-generated constructor stub
|
protected static final String APPLICATION_JSON = "application/json";
|
||||||
|
protected static final String LONG_URL = "longUrl";
|
||||||
|
|
||||||
|
// protected static String shortnerServerUrl = "https://www.googleapis.com/urlshortener/v1/url";
|
||||||
|
// protected static String urlMethod = "";
|
||||||
|
// protected static String authenticationKeyParam = "key";
|
||||||
|
// protected static String authenticationKeyValue ="AIzaSyDfMO0VY3o8GjRUqnTfqScjm_EsFEuBa3g";
|
||||||
|
|
||||||
|
private static String shortnerServerUrl = "";
|
||||||
|
protected static final String KEY = "key";
|
||||||
|
private static String paramKeyValue ="";
|
||||||
|
|
||||||
|
protected static Logger logger = Logger.getLogger(UrlShortener.class);
|
||||||
|
private String uriRequest;
|
||||||
|
private boolean isAvailable = false;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @throws Exception
|
||||||
|
* @throws InvalidResultException
|
||||||
|
* @throws DiscoveryException
|
||||||
|
* @throws IllegalStateException *
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public UrlShortener() throws Exception {
|
||||||
|
|
||||||
|
try{
|
||||||
|
logger.trace("Tentative reading HTTP-URL-Shortener RR");
|
||||||
|
|
||||||
|
ScopeProvider.instance.set("/gcube");
|
||||||
|
|
||||||
|
XQuery query = queryFor(ServiceEndpoint.class);
|
||||||
|
|
||||||
|
query.addCondition("$resource/Profile/Name/text() eq 'HTTP-URL-Shortener'").setResult("$resource/Profile/AccessPoint");
|
||||||
|
|
||||||
|
DiscoveryClient<AccessPoint> client = clientFor(AccessPoint.class);
|
||||||
|
|
||||||
|
List<AccessPoint> endpoints = client.submit(query);
|
||||||
|
|
||||||
|
if (endpoints.size() == 0){
|
||||||
|
isAvailable = false;
|
||||||
|
logger.trace("HTTP-URL-Shortener not found");
|
||||||
|
throw new Exception(NO_HTTP_URL_SHORTENER_AVAILABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Base Address
|
||||||
|
// System.out.println(endpoints.get(0).address());
|
||||||
|
|
||||||
|
shortnerServerUrl = endpoints.get(0)!=null?endpoints.get(0).address():"";
|
||||||
|
|
||||||
|
if(endpoints.get(0)!=null){
|
||||||
|
|
||||||
|
paramKeyValue = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get(KEY).value():"";
|
||||||
|
}
|
||||||
|
|
||||||
|
uriRequest = shortnerServerUrl+"?"+KEY+"="+paramKeyValue;
|
||||||
|
|
||||||
|
logger.trace("HTTP-URL-Shortener found, uriRequest: "+uriRequest);
|
||||||
|
|
||||||
|
isAvailable = true;
|
||||||
|
|
||||||
|
}catch (Exception e) {
|
||||||
|
isAvailable = false;
|
||||||
|
logger.error("an error occurred in reading RR: ", e);
|
||||||
|
throw new Exception(NO_HTTP_URL_SHORTENER_AVAILABLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAvailable() {
|
||||||
|
return isAvailable;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,7 +111,7 @@ public final class UrlShortener {
|
||||||
* @param longUrl
|
* @param longUrl
|
||||||
* @return a shorten url
|
* @return a shorten url
|
||||||
*/
|
*/
|
||||||
public static String shorten(String longUrl) throws Exception{
|
public String shorten(String longUrl) throws Exception{
|
||||||
|
|
||||||
if (longUrl == null) {
|
if (longUrl == null) {
|
||||||
return longUrl;
|
return longUrl;
|
||||||
|
@ -64,7 +129,10 @@ public final class UrlShortener {
|
||||||
JSONObject jsonObj = new JSONObject();
|
JSONObject jsonObj = new JSONObject();
|
||||||
|
|
||||||
jsonObj.put(LONG_URL, longUrl);
|
jsonObj.put(LONG_URL, longUrl);
|
||||||
// jsonObj.put(authenticationKeyParam, authenticationKeyValue);
|
|
||||||
|
//ACTIVE THIS AFTER RELEASE
|
||||||
|
if(paramKeyValue!=null && !paramKeyValue.isEmpty())
|
||||||
|
jsonObj.put(KEY, paramKeyValue);
|
||||||
|
|
||||||
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
|
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
|
||||||
wr.write(jsonObj.toJSONString());
|
wr.write(jsonObj.toJSONString());
|
||||||
|
@ -91,11 +159,33 @@ public final class UrlShortener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getShortnerServerUrl() {
|
||||||
|
return shortnerServerUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getKey() {
|
||||||
|
return KEY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getParamKeyValue() {
|
||||||
|
return paramKeyValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUriRequest() {
|
||||||
|
return uriRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
String shorten;
|
String shorten;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
shorten = UrlShortener.shorten("https://dev.d4science.org/group/data-e-infrastructure-gateway/workspace?itemid=062c558c-c7ce-4de3-a4c7-e1411816cc12&operation=gotofolder");
|
|
||||||
|
UrlShortener urlSh = new UrlShortener();
|
||||||
|
System.out.println("UrlShortener: "+urlSh);
|
||||||
|
|
||||||
|
shorten = urlSh.shorten("https://dev.d4science.org/group/data-e-infrastructure-gateway/workspace?itemid=062c558c-c7ce-4de3-a4c7-e1411816cc12&operation=gotofolder");
|
||||||
|
|
||||||
System.out.println("Shorted: "+shorten);
|
System.out.println("Shorted: "+shorten);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -103,4 +193,15 @@ public final class UrlShortener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("UrlShortener [uriRequest=");
|
||||||
|
builder.append(uriRequest);
|
||||||
|
builder.append(", isAvailable=");
|
||||||
|
builder.append(isAvailable);
|
||||||
|
builder.append("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -20,6 +20,7 @@ import org.gcube.portlets.user.homelibrary.home.workspace.Workspace;
|
||||||
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
import org.gcube.portlets.user.homelibrary.home.workspace.exceptions.WorkspaceFolderNotFoundException;
|
||||||
import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder;
|
import org.gcube.portlets.user.workspace.server.GWTWorkspaceBuilder;
|
||||||
import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer;
|
import org.gcube.portlets.user.workspace.server.notifications.NotificationsProducer;
|
||||||
|
import org.gcube.portlets.user.workspace.server.shortner.UrlShortener;
|
||||||
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
|
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,6 +39,7 @@ public class WsUtil {
|
||||||
public static final String NOTIFICATION_PRODUCER = "NOTIFICATIONMANAGER";
|
public static final String NOTIFICATION_PRODUCER = "NOTIFICATIONMANAGER";
|
||||||
public static final String WS_RUN_IN_TEST_MODE = "WS_RUN_IN_TEST_MODE";
|
public static final String WS_RUN_IN_TEST_MODE = "WS_RUN_IN_TEST_MODE";
|
||||||
public static final String WORKSPACE_SCOPE_UTIL = "WORKSPACE_SCOPE_UTIL";
|
public static final String WORKSPACE_SCOPE_UTIL = "WORKSPACE_SCOPE_UTIL";
|
||||||
|
public static final String URL_SHORTENER_SERVICE = "URL_SHORTENER_SERVICE";
|
||||||
public static final String NOTIFICATION_PORTLET_CLASS_ID = "org.gcube.portlets.user.workspace.server.GWTWorkspaceServiceImpl"; //IN DEV
|
public static final String NOTIFICATION_PORTLET_CLASS_ID = "org.gcube.portlets.user.workspace.server.GWTWorkspaceServiceImpl"; //IN DEV
|
||||||
|
|
||||||
// public static final String TEST_SCOPE = "/gcube/devsec";
|
// public static final String TEST_SCOPE = "/gcube/devsec";
|
||||||
|
@ -266,4 +268,29 @@ public class WsUtil {
|
||||||
return scopeUtil;
|
return scopeUtil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param session
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static UrlShortener getUrlShortener(HttpSession httpSession) {
|
||||||
|
|
||||||
|
ASLSession session = getAslSession(httpSession);
|
||||||
|
UrlShortener shortener = null;
|
||||||
|
try{
|
||||||
|
shortener = (UrlShortener) session.getAttribute(WsUtil.URL_SHORTENER_SERVICE);
|
||||||
|
|
||||||
|
if(shortener==null){
|
||||||
|
shortener = new UrlShortener();
|
||||||
|
session.setAttribute(URL_SHORTENER_SERVICE, shortener);
|
||||||
|
return shortener;
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch (Exception e) {
|
||||||
|
defaultLogger.error("an error occurred in instancing url shortener ",e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ import org.gcube.resources.discovery.client.queries.impl.XQuery;
|
||||||
* @Jun 26, 2013
|
* @Jun 26, 2013
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class UriResolverReaderParameter {
|
public class UriResolverReaderRR {
|
||||||
|
|
||||||
//Base Address
|
//Base Address
|
||||||
String uri = "";
|
String uri = "";
|
||||||
|
@ -34,14 +34,14 @@ public class UriResolverReaderParameter {
|
||||||
String parameter = "";
|
String parameter = "";
|
||||||
private String uriRequest = "";
|
private String uriRequest = "";
|
||||||
|
|
||||||
public static Logger log = Logger.getLogger(UriResolverReaderParameter.class);
|
public static Logger log = Logger.getLogger(UriResolverReaderRR.class);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public UriResolverReaderParameter() throws Exception {
|
public UriResolverReaderRR() throws Exception {
|
||||||
|
|
||||||
ScopeProvider.instance.set("/gcube/devsec");
|
ScopeProvider.instance.set("/gcube/devsec");
|
||||||
|
|
||||||
|
@ -113,9 +113,9 @@ public class UriResolverReaderParameter {
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
log.trace(new UriResolverReaderParameter());
|
log.trace(new UriResolverReaderRR());
|
||||||
|
|
||||||
UriResolverReaderParameter uriResolver = new UriResolverReaderParameter();
|
UriResolverReaderRR uriResolver = new UriResolverReaderRR();
|
||||||
InputStream is = uriResolver.resolve("smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y");
|
InputStream is = uriResolver.resolve("smp://Wikipedia_logo_silver.png?5ezvFfBOLqaqBlwCEtAvz4ch5BUu1ag3yftpCvV+gayz9bAtSsnO1/sX6pemTKbDe0qbchLexXeWgGcJlskYE8td9QSDXSZj5VSl9kdN9SN0/LRYaWUZuP4Q1J7lEiwkU4GKPsiD6PDRVcT4QAqTEy5hSIbr6o4Y");
|
||||||
|
|
||||||
File file = new File("test.png");
|
File file = new File("test.png");
|
|
@ -0,0 +1,116 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.portlets.user.workspace;
|
||||||
|
|
||||||
|
import static org.gcube.resources.discovery.icclient.ICFactory.clientFor;
|
||||||
|
import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.gcube.common.resources.gcore.ServiceEndpoint;
|
||||||
|
import org.gcube.common.resources.gcore.ServiceEndpoint.AccessPoint;
|
||||||
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
|
import org.gcube.resources.discovery.client.api.DiscoveryClient;
|
||||||
|
import org.gcube.resources.discovery.client.queries.impl.XQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
|
* @Jun 26, 2013
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class UrlShortenerReaderRR {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
protected static final String KEY = "key";
|
||||||
|
|
||||||
|
//Base Address
|
||||||
|
protected String uri = "";
|
||||||
|
|
||||||
|
//Query URL parameter
|
||||||
|
protected String keyValue = "";
|
||||||
|
|
||||||
|
private String uriRequest = "";
|
||||||
|
|
||||||
|
public static Logger log = Logger.getLogger(UrlShortenerReaderRR.class);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws Exception
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public UrlShortenerReaderRR() throws Exception {
|
||||||
|
|
||||||
|
ScopeProvider.instance.set("/gcube");
|
||||||
|
|
||||||
|
XQuery query = queryFor(ServiceEndpoint.class);
|
||||||
|
|
||||||
|
query.addCondition("$resource/Profile/Name/text() eq 'HTTP-URL-Shortener'").setResult("$resource/Profile/AccessPoint");
|
||||||
|
|
||||||
|
DiscoveryClient<AccessPoint> client = clientFor(AccessPoint.class);
|
||||||
|
|
||||||
|
List<AccessPoint> endpoints = client.submit(query);
|
||||||
|
|
||||||
|
if (endpoints.size() == 0)
|
||||||
|
throw new Exception("No Shortener available");
|
||||||
|
|
||||||
|
//Base Address
|
||||||
|
// System.out.println(endpoints.get(0).address());
|
||||||
|
|
||||||
|
uri = endpoints.get(0)!=null?endpoints.get(0).address():"";
|
||||||
|
|
||||||
|
if(endpoints.get(0)!=null){
|
||||||
|
|
||||||
|
keyValue = endpoints.get(0).propertyMap()!=null?endpoints.get(0).propertyMap().get(KEY).value():"";
|
||||||
|
}
|
||||||
|
|
||||||
|
uriRequest = uri+"?"+KEY+"="+keyValue;
|
||||||
|
|
||||||
|
|
||||||
|
//Query URL parameter
|
||||||
|
// System.out.println(endpoints.get(0).propertyMap().get("parameter").value());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return Base Address of Uri Resolver
|
||||||
|
*/
|
||||||
|
public String getUri() {
|
||||||
|
return uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return Query URL parameter of Uri Resolver
|
||||||
|
*/
|
||||||
|
public String getParameter() {
|
||||||
|
return keyValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
log.trace(new UrlShortenerReaderRR());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("UrlShortenerReaderRR [uri=");
|
||||||
|
builder.append(uri);
|
||||||
|
builder.append(", keyValue=");
|
||||||
|
builder.append(keyValue);
|
||||||
|
builder.append(", uriRequest=");
|
||||||
|
builder.append(uriRequest);
|
||||||
|
builder.append("]");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue