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
|
@ -105,6 +105,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
protected boolean isTestMode(){
|
||||
return WsUtil.withoutPortal;
|
||||
}
|
||||
|
||||
protected UrlShortener getUrlShortener() {
|
||||
return WsUtil.getUrlShortener(this.getThreadLocalRequest().getSession());
|
||||
}
|
||||
|
||||
@Override
|
||||
public FolderModel getRootForTree() throws Exception {
|
||||
|
@ -2200,8 +2204,13 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
|
||||
workspaceLogger.trace("get short url for "+ longUrl);
|
||||
|
||||
UrlShortener shortener = getUrlShortener();
|
||||
try{
|
||||
return UrlShortener.shorten(longUrl);
|
||||
|
||||
if(shortener!=null && shortener.isAvailable())
|
||||
return shortener.shorten(longUrl);
|
||||
|
||||
return longUrl;
|
||||
|
||||
}catch (Exception e) {
|
||||
workspaceLogger.error("Error get short url for ", e);
|
||||
|
|
|
@ -8,6 +8,9 @@ package org.gcube.portlets.user.workspace.server.shortner;
|
|||
* @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.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
|
@ -15,30 +18,92 @@ import java.io.OutputStreamWriter;
|
|||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
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;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
|
||||
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() {
|
||||
// TODO Auto-generated constructor stub
|
||||
protected static final String NO_HTTP_URL_SHORTENER_AVAILABLE = "No HTTP URL Shortener available";
|
||||
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
|
||||
* @return a shorten url
|
||||
*/
|
||||
public static String shorten(String longUrl) throws Exception{
|
||||
public String shorten(String longUrl) throws Exception{
|
||||
|
||||
if (longUrl == null) {
|
||||
return longUrl;
|
||||
|
@ -64,7 +129,10 @@ public final class UrlShortener {
|
|||
JSONObject jsonObj = new JSONObject();
|
||||
|
||||
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());
|
||||
wr.write(jsonObj.toJSONString());
|
||||
|
@ -91,16 +159,49 @@ 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) {
|
||||
String shorten;
|
||||
|
||||
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);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@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.workspace.server.GWTWorkspaceBuilder;
|
||||
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;
|
||||
|
||||
|
||||
|
@ -38,6 +39,7 @@ public class WsUtil {
|
|||
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 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 TEST_SCOPE = "/gcube/devsec";
|
||||
|
@ -266,4 +268,29 @@ public class WsUtil {
|
|||
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
|
||||
*
|
||||
*/
|
||||
public class UriResolverReaderParameter {
|
||||
public class UriResolverReaderRR {
|
||||
|
||||
//Base Address
|
||||
String uri = "";
|
||||
|
@ -34,14 +34,14 @@ public class UriResolverReaderParameter {
|
|||
String parameter = "";
|
||||
private String uriRequest = "";
|
||||
|
||||
public static Logger log = Logger.getLogger(UriResolverReaderParameter.class);
|
||||
public static Logger log = Logger.getLogger(UriResolverReaderRR.class);
|
||||
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*
|
||||
*/
|
||||
public UriResolverReaderParameter() throws Exception {
|
||||
public UriResolverReaderRR() throws Exception {
|
||||
|
||||
ScopeProvider.instance.set("/gcube/devsec");
|
||||
|
||||
|
@ -113,9 +113,9 @@ public class UriResolverReaderParameter {
|
|||
|
||||
|
||||
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");
|
||||
|
||||
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