diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml index 4182792039..9be5d7e7dd 100644 --- a/config/alfresco/web-scripts-application-context.xml +++ b/config/alfresco/web-scripts-application-context.xml @@ -201,18 +201,6 @@ - - - - - - - - - - - - diff --git a/pom.xml b/pom.xml index 55cecf70a3..bc48771255 100644 --- a/pom.xml +++ b/pom.xml @@ -61,11 +61,6 @@ - - com.facebook.api - facebook-java-api - 070716 - org.alfresco.cmis.client alfresco-opencmis-extension diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAPIRuntime.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAPIRuntime.java deleted file mode 100644 index ce7834b7aa..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAPIRuntime.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.extensions.config.ServerProperties; -import org.springframework.extensions.webscripts.Match; -import org.springframework.extensions.webscripts.RuntimeContainer; -import org.springframework.extensions.webscripts.WebScriptRequest; -import org.springframework.extensions.webscripts.servlet.ServletAuthenticatorFactory; -import org.springframework.extensions.webscripts.servlet.WebScriptServletRuntime; - - -/** - * Runtime to support requests from Facebook - * - * @author davidc - */ -public class FacebookAPIRuntime extends WebScriptServletRuntime -{ - - /** - * Construct - * - * @param container - * @param authFactory - * @param req - * @param res - * @param serverProperties - */ - public FacebookAPIRuntime(RuntimeContainer container, ServletAuthenticatorFactory authFactory, HttpServletRequest req, HttpServletResponse res, ServerProperties serverProperties) - { - super(container, authFactory, req, res, serverProperties); - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.servlet.WebScriptServletRuntime#createRequest(org.alfresco.web.scripts.Match) - */ - @Override - protected WebScriptRequest createRequest(Match match) - { - servletReq = new FacebookServletRequest(this, req, match, serverProperties, getScriptUrl()); - return servletReq; - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.servlet.WebScriptServletRuntime#getScriptParameters() - */ - @Override - public Map getScriptParameters() - { - Map model = new HashMap(); - model.putAll(super.getScriptParameters()); - model.put("facebook", new FacebookModel((FacebookServletRequest)servletReq)); - return model; - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.AbstractRuntime#getTemplateParameters() - */ - @Override - public Map getTemplateParameters() - { - Map model = new HashMap(); - model.putAll(super.getTemplateParameters()); - model.put("facebook", new FacebookModel((FacebookServletRequest)servletReq)); - return model; - } - -} diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAPIServlet.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAPIServlet.java deleted file mode 100644 index fe9df0ef1c..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAPIServlet.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.extensions.webscripts.servlet.WebScriptServlet; - - -/** - * Web Script API entry point (with Facebook authentication) - * - * @author davidc - */ -public class FacebookAPIServlet extends WebScriptServlet -{ - private static final long serialVersionUID = 4209892938069597860L; - - // Logger - private static final Log logger = LogFactory.getLog(FacebookAPIServlet.class); - - - /* (non-Javadoc) - * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, - * javax.servlet.http.HttpServletResponse) - */ - @Override - protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException - { - if (logger.isDebugEnabled()) - logger.debug("Processing facebook api request (" + req.getMethod() + ") " + req.getRequestURL() + (req.getQueryString() != null ? "?" + req.getQueryString() : "")); - - FacebookAPIRuntime runtime = new FacebookAPIRuntime(container, authenticatorFactory, req, res, serverProperties); - runtime.executeScript(); - } - -} diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAppModel.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAppModel.java deleted file mode 100644 index 0b4e4dc287..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAppModel.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - - -/** - * Facebook Application - * - * @author davidc - */ -public class FacebookAppModel -{ - String appId; - String apiKey; - String secretKey; - - /** - * Construct - * - * @param apiKey - */ - public FacebookAppModel(String apiKey) - { - this.apiKey = apiKey; - } - - /** - * @return application apiKey - */ - public String getApiKey() - { - return apiKey; - } - - /** - * @return application secret - */ - public String getSecret() - { - return secretKey; - } - - /** - * @param secretKey application secret - */ - public void setSecret(String secretKey) - { - this.secretKey = secretKey; - } - - /** - * @return application id - */ - public String getId() - { - return appId; - } - - /** - * @param appId application id - */ - public void setId(String appId) - { - this.appId = appId; - } - -} diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAuthenticatorFactory.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAuthenticatorFactory.java deleted file mode 100644 index 9e0a3fbce7..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookAuthenticatorFactory.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - -import java.io.IOException; - -import org.alfresco.repo.security.authentication.AuthenticationUtil; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.extensions.webscripts.Authenticator; -import org.springframework.extensions.webscripts.WebScriptException; -import org.springframework.extensions.webscripts.Description.RequiredAuthentication; -import org.springframework.extensions.webscripts.servlet.ServletAuthenticatorFactory; -import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; -import org.springframework.extensions.webscripts.servlet.WebScriptServletResponse; - -/** - * Web Script Authenticator that supports Facebook authentication - * mechanism. - * - * Upon success, the request is authenticated as the Facebook User Id. - * - * @author davidc - */ -public class FacebookAuthenticatorFactory implements ServletAuthenticatorFactory -{ - // Logger - private static final Log logger = LogFactory.getLog(FacebookAuthenticator.class); - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.servlet.ServletAuthenticatorFactory#create(org.alfresco.web.scripts.servlet.WebScriptServletRequest, org.alfresco.web.scripts.servlet.WebScriptServletResponse) - */ - public Authenticator create(WebScriptServletRequest req, WebScriptServletResponse res) - { - if (!(req instanceof FacebookServletRequest)) - { - throw new WebScriptException("Facebook request is required; instead a " + req.getClass().getName() + " has been provided"); - } - return new FacebookAuthenticator((FacebookServletRequest)req, res); - } - - - /** - * Web Script Authenticator that supports Facebook authentication - * mechanism. - * - * Upon success, the request is authenticated as the Facebook User Id. - * - * @author davidc - */ - public class FacebookAuthenticator implements Authenticator - { - - // FBML for Facebook login redirect - private static final String LOGIN_REDIRECT = ""; - - - // dependencies - private FacebookServletRequest fbReq; - private WebScriptServletResponse fbRes; - - private String sessionKey; - private String user; - - /** - * Construct - * - * @param authenticationService - * @param req - * @param res - */ - public FacebookAuthenticator(FacebookServletRequest req, WebScriptServletResponse res) - { - this.fbReq = req; - this.fbRes = res; - - this.sessionKey = fbReq.getSessionKey(); - this.user = fbReq.getUserId(); - } - - /* (non-Javadoc) - * @see org.aopalliance.intercept.MethodInterceptor#invoke(org.aopalliance.intercept.MethodInvocation) - */ - public boolean authenticate(RequiredAuthentication required, boolean isGuest) - { - if (logger.isDebugEnabled()) - { - logger.debug("fb_sig_session_key = '" + sessionKey + "'"); - logger.debug("fb_sig_user = '" + user + "'"); - } - - if (emptyCredentials()) - { - // session has not been established, redirect to login - - String apiKey = fbReq.getApiKey(); - String canvas = (fbReq.isInCanvas()) ? "&canvas" : ""; - - if (logger.isDebugEnabled()) - { - logger.debug("fb_sig_api_key = '" + apiKey + "'"); - logger.debug("fb_sig_in_canvas = '" + canvas + "'"); - } - - try - { - String redirect = String.format(LOGIN_REDIRECT, apiKey, canvas); - - if (logger.isDebugEnabled()) - logger.debug("Facebook session not established; redirecting via " + redirect); - - fbRes.getWriter().write(redirect); - } - catch (IOException e) - { - throw new WebScriptException("Redirect to login failed", e); - } - return false; - } - - if (logger.isDebugEnabled()) - logger.debug("Facebook session established; authenticating as user " + user); - - // session has been established, authenticate as Facebook user id - AuthenticationUtil.setFullyAuthenticatedUser(user); - return true; - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.Authenticator#emptyCredentials() - */ - public boolean emptyCredentials() - { - return ((sessionKey == null || sessionKey.length() == 0) || (user == null || user.length() == 0)); - } - } - -} \ No newline at end of file diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookError.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookError.java deleted file mode 100644 index 5de4983787..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookError.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - -/** - * Facebook Error. - * - * @author David Caruana - */ -public class FacebookError extends RuntimeException -{ - private static final long serialVersionUID = -7338963365877285084L; - - private int code = -1; - - public FacebookError(String msg) - { - super(msg); - } - - public FacebookError(int code, String msg) - { - super(msg); - this.code = code; - } - - public int getCode() - { - return code; - } - -} diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookModel.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookModel.java deleted file mode 100644 index fb8f9ee15f..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookModel.java +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - -import java.io.IOException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.w3c.dom.Document; -import org.w3c.dom.NodeList; - -import com.facebook.api.FacebookException; -import com.facebook.api.FacebookRestClient; - - -/** - * Facebook Javascript API - * - * @author davidc - */ -public class FacebookModel -{ - // Logger - private static final Log logger = LogFactory.getLog(FacebookModel.class); - - private FacebookServletRequest req; - private FacebookRestClient client; - private String[] friends; - private String[] appFriends; - - - /** - * Construct - * - * @param req - */ - public FacebookModel(FacebookServletRequest req) - { - this.req = req; - } - - /** - * @return the facebook rest client - */ - private FacebookRestClient getClient() - { - if (client == null) - { - String apiKey = req.getApiKey(); - String secretKey = req.getSecretKey(); - String sessionKey = req.getSessionKey(); - if (sessionKey == null) - { - client = new FacebookRestClient(apiKey, secretKey); - } - else - { - client = new FacebookRestClient(apiKey, secretKey, sessionKey); - } - - if (logger.isDebugEnabled()) - client.setDebug(true); - } - return client; - } - - /** - * @return all friends of the logged in facebook user - */ - public String[] getFriends() - { - if (friends == null) - { - friends = req.getFriends(); - if (friends == null) - { - try - { - Document response = getClient().friends_get(); - NodeList uids = response.getElementsByTagName("uid"); - String[] uidsArray = new String[uids.getLength()]; - for (int i = 0; i < uids.getLength(); i++) - { - uidsArray[i] = uids.item(i).getTextContent(); - } - friends = uidsArray; - } - catch(FacebookException e) - { - throw new FacebookError(e.getCode(), e.getMessage()); - } - catch(IOException e) - { - throw new FacebookError(e.getMessage()); - } - } - } - return friends; - } - - /** - * @return friends who are users of the current application - */ - public String[] getAppFriends() - { - if (appFriends == null) - { - try - { - Document response = getClient().friends_getAppUsers(); - NodeList uids = response.getElementsByTagName("uid"); - String[] uidsArray = new String[uids.getLength()]; - for (int i = 0; i < uids.getLength(); i++) - { - uidsArray[i] = uids.item(i).getTextContent(); - } - appFriends = uidsArray; - } - catch(FacebookException e) - { - throw new FacebookError(e.getCode(), e.getMessage()); - } - catch(IOException e) - { - throw new FacebookError(e.getMessage()); - } - } - return appFriends; - } - - /** - * Post User Action - * - * For details see: - * http://wiki.developers.facebook.com/index.php/Feed.publishActionOfUser - * - * @param title - * @param body - * @return - */ - public int postUserAction(String title, String body) - { - try - { - Document response = getClient().feed_publishActionOfUser(title, body); - int status = Integer.parseInt(response.getDocumentElement().getTextContent()); - return status; - } - catch (FacebookException e) - { - if (logger.isErrorEnabled()) - logger.error("Failed to post user action [title=" + title + ", body=" + body + "] due to " + e.toString()); - throw new FacebookError(e.getCode(), e.getMessage()); - } - catch (IOException e) - { - if (logger.isErrorEnabled()) - logger.error("Failed to post user action [title=" + title + ", body=" + body + "] due to " + e.toString()); - throw new FacebookError(e.getMessage()); - } - } - - /** - * @return user id of logged in facebook user - */ - public String getUser() - { - return req.getUserId(); - } - - /** - * @return application id of current application - */ - public String getAppId() - { - return req.getAppId(); - } - - /** - * @return session key of current facebook session - */ - public String getSessionKey() - { - return req.getSessionKey(); - } - - /** - * @return application api key - */ - public String getApiKey() - { - return req.getApiKey(); - } - - /** - * @return application secret key - */ - public String getSecret() - { - return req.getSecretKey(); - } - - /** - * @return facebook canvas path (as entered into 'Create Application' dialog) - */ - public String getCanvasPath() - { - return req.getCanvasPath(); - } - - /** - * @return facebook canvas url (http://apps.facebook.com/canvasPath) - */ - public String getCanvasURL() - { - return "http://apps.facebook.com/" + getCanvasPath(); - } - - /** - * @return facebook page url (http://apps.facebook.com/canvasPath/page) - */ - public String getPageURL() - { - return "http://apps.facebook.com" + req.getPagePath(); - } - -} diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookService.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookService.java deleted file mode 100644 index f6d2f5a32a..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookService.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.locks.ReentrantReadWriteLock; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.extensions.webscripts.Container; -import org.springframework.extensions.webscripts.ScriptContent; -import org.springframework.extensions.webscripts.ScriptProcessor; -import org.springframework.extensions.webscripts.WebScriptException; - - -/** - * Facebook Service - * - * @author davidc - */ -public class FacebookService -{ - // Logger - private static final Log logger = LogFactory.getLog(FacebookService.class); - - // Facebook Application Cache - private Map apps = new HashMap(); - private ReentrantReadWriteLock appsLock = new ReentrantReadWriteLock(); - - // Component dependencies - private Container container; - - - /** - * @param registry Web Script Registry - */ - public void setContainer(Container container) - { - this.container = container; - } - - /** - * Gets the application model for the given application api key - * - * @param apiKey api key - * @return application model - */ - FacebookAppModel getAppModel(String apiKey) - { - FacebookAppModel facebookApp = null; - appsLock.readLock().lock(); - - try - { - facebookApp = apps.get(apiKey); - if (facebookApp == null) - { - // Upgrade read lock to write lock - appsLock.readLock().unlock(); - appsLock.writeLock().lock(); - - try - { - // Check again - facebookApp = apps.get(apiKey); - if (facebookApp == null) - { - if (logger.isDebugEnabled()) - logger.debug("Initialising Facebook Application '" + apiKey + "'"); - - // Locate app initialisation script in web script store - String appPath = "com/facebook/_apps/app." + apiKey + ".js"; - String validScriptPath = container.getScriptProcessorRegistry().findValidScriptPath(appPath); - if (validScriptPath == null) - { - throw new WebScriptException("Unable to locate application initialisation script '" + appPath + "'"); - } - ScriptProcessor scriptProcessor = container.getScriptProcessorRegistry().getScriptProcessor(validScriptPath); - ScriptContent appScript = scriptProcessor.findScript(validScriptPath); - if (appScript == null) - { - throw new WebScriptException("Unable to locate application initialisation script '" + appPath + "'"); - } - - // Execute app initialisation script - Map model = new HashMap(); - FacebookAppModel app = new FacebookAppModel(apiKey); - model.put("app", app); - scriptProcessor.executeScript(appScript, model); - - // Validate initialisation - if (app.getSecret() == null) - { - throw new WebScriptException("Secret key for application '" + apiKey + "' has not been specified."); - } - if (app.getApiKey() == null) - { - throw new WebScriptException("Application Id for application '" + apiKey + "' has not been specified."); - } - - apps.put(apiKey, app); - facebookApp = app; - } - } - finally - { - // Downgrade lock to read - appsLock.readLock().lock(); - appsLock.writeLock().unlock(); - } - } - return facebookApp; - } - finally - { - appsLock.readLock().unlock(); - } - } - - /** - * Gets currently known Facebook Applications - * - * @return map (name, application) of known applications - */ - public Map getAppModels() - { - return apps; - } - - /** - * Reset Facebook Service - */ - public void reset() - { - appsLock.writeLock().lock(); - try - { - apps.clear(); - } - finally - { - appsLock.writeLock().unlock(); - } - } - -} diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookServlet.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookServlet.java deleted file mode 100644 index 231932a1d1..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookServlet.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.context.ApplicationContext; - - -/** - * Facebook Canvas Page Requests - * - * @author davidc - */ -public class FacebookServlet extends FacebookAPIServlet -{ - private static final long serialVersionUID = 2276870692940598426L; - - // Logger - private static final Log logger = LogFactory.getLog(FacebookServlet.class); - - // Component Dependencies - protected FacebookService facebookService; - - - /* (non-Javadoc) - * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) - */ - @Override - protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException - { - if (logger.isDebugEnabled()) - logger.debug("Processing facebook canvas (" + req.getMethod() + ") " + req.getRequestURL() + (req.getQueryString() != null ? "?" + req.getQueryString() : "")); - - FacebookServletRuntime runtime = new FacebookServletRuntime(container, authenticatorFactory, req, res, serverProperties, facebookService); - runtime.executeScript(); - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.WebScriptServlet#initServlet(org.springframework.context.ApplicationContext) - */ - @Override - protected void initServlet(ApplicationContext context) - { - facebookService = (FacebookService)context.getBean("facebook.service"); - } - -} diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookServletRequest.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookServletRequest.java deleted file mode 100644 index 48ca7a1c05..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookServletRequest.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - -import javax.servlet.http.HttpServletRequest; - -import org.springframework.extensions.config.ServerProperties; -import org.springframework.extensions.webscripts.Match; -import org.springframework.extensions.webscripts.WebScriptException; -import org.springframework.extensions.webscripts.servlet.WebScriptServletRequest; -import org.springframework.extensions.webscripts.Runtime; - -/** - * Facebook Servlet Request - * - * @author davidc - */ -@SuppressWarnings("deprecation") -public class FacebookServletRequest extends WebScriptServletRequest -{ - private String appId; - private String secretKey; - private String pathInfo; - - - /** - * Construct - * - * @param serverConfig - * @param req - * @param serviceMatch - */ - public FacebookServletRequest(Runtime container, HttpServletRequest req, Match serviceMatch, ServerProperties serverProperties, String pathInfo) - { - super(container, req, serviceMatch, serverProperties); - this.pathInfo = pathInfo; - } - - - /** - * @param secretKey application secret - */ - /*package*/ void setSecretKey(String secretKey) - { - this.secretKey = secretKey; - } - - /** - * @param appId application id - */ - /*package*/ void setAppId(String appId) - { - this.appId = appId; - } - - /** - * @return application api key - */ - public String getApiKey() - { - return getParameter("fb_sig_api_key"); - } - - /** - * @return Facebook user id - */ - public String getUserId() - { - return getParameter("fb_sig_user"); - } - - /** - * @return session key - */ - public String getSessionKey() - { - return getParameter("fb_sig_session_key"); - } - - /** - * @return true => within Facebook canvas - */ - public boolean isInCanvas() - { - String canvas = getParameter("fb_sig_api_key"); - return (canvas == null || canvas.equals("1")); - } - - /** - * @return application secret - */ - public String getSecretKey() - { - return secretKey; - } - - /** - * @return application id - */ - public String getAppId() - { - return appId; - } - - /** - * @return application canvas path - */ - public String getCanvasPath() - { - String pathInfo = getPathInfo(); - String[] pathSegments = pathInfo.split("/"); - if (pathSegments.length < 3) - { - throw new WebScriptException("Cannot establish Facebook Canvas Page URL from request " + getURL()); - } - return pathSegments[2]; - } - - /** - * @return application page path - */ - public String getPagePath() - { - String pagePath = getPathInfo(); - if (pagePath.startsWith("/facebook")) - { - pagePath = pathInfo.substring("/facebook".length()); - } - return pagePath; - } - - /** - * @return friends of authenticated Facebook user - */ - public String[] getFriends() - { - String[] friends; - String friendsStr = getParameter("fb_sig_friends"); - friends = (friendsStr == null) ? new String[0] : friendsStr.split(","); - return friends; - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.servlet.WebScriptServletRequest#getPathInfo() - */ - @Override - public String getPathInfo() - { - return pathInfo; - } - -} diff --git a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookServletRuntime.java b/source/java/org/alfresco/repo/web/scripts/facebook/FacebookServletRuntime.java deleted file mode 100644 index 764eb98ae8..0000000000 --- a/source/java/org/alfresco/repo/web/scripts/facebook/FacebookServletRuntime.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2005-2010 Alfresco Software Limited. - * - * This file is part of Alfresco - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - */ -package org.alfresco.repo.web.scripts.facebook; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.extensions.config.ServerProperties; -import org.springframework.extensions.webscripts.Match; -import org.springframework.extensions.webscripts.RuntimeContainer; -import org.springframework.extensions.webscripts.StatusTemplate; -import org.springframework.extensions.webscripts.WebScriptRequest; -import org.springframework.extensions.webscripts.WebScriptResponse; -import org.springframework.extensions.webscripts.servlet.ServletAuthenticatorFactory; - - -/** - * Facebook Canvas Page Servlet. - * - * @author davidc - */ -public class FacebookServletRuntime extends FacebookAPIRuntime -{ - // Logger - private static final Log logger = LogFactory.getLog(FacebookServletRuntime.class); - - // Component dependencies - protected FacebookService facebookService; - - - /** - * Construct - * - * @param container - * @param authFactory - * @param req - * @param res - * @param serverProperties - * @param facebookService - */ - public FacebookServletRuntime(RuntimeContainer container, ServletAuthenticatorFactory authFactory, HttpServletRequest req, HttpServletResponse res, - ServerProperties serverProperties, FacebookService facebookService) - { - super(container, authFactory, req, res, serverProperties); - this.facebookService = facebookService; - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.WebScriptRuntime#createRequest(org.alfresco.web.scripts.WebScriptMatch) - */ - @Override - protected WebScriptRequest createRequest(Match match) - { - FacebookServletRequest fbreq = new FacebookServletRequest(this, req, match, serverProperties, getScriptUrl()); - - if (match != null) - { - FacebookAppModel appModel = facebookService.getAppModel(fbreq.getApiKey()); - fbreq.setSecretKey(appModel.getSecret()); - fbreq.setAppId(appModel.getId()); - } - - if (logger.isDebugEnabled()) - logger.debug("Facebook request [apiKey=" + fbreq.getApiKey() + ", user=" + fbreq.getUserId() + ", session=" + fbreq.getSessionKey() + ", secret=" + fbreq.getSecretKey() + "]"); - - servletReq = fbreq; - return servletReq; - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.WebScriptServletRuntime#getScriptUrl() - */ - @Override - protected String getScriptUrl() - { - return "/facebook" + super.getScriptUrl(); - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.WebScriptRuntime#getStatusCodeTemplate(int) - */ - @Override - protected StatusTemplate getStatusCodeTemplate(int statusCode) - { - return new StatusTemplate("/fbml." + statusCode + ".ftl", WebScriptResponse.HTML_FORMAT); - } - - /* (non-Javadoc) - * @see org.alfresco.web.scripts.WebScriptRuntime#getStatusTemplate() - */ - @Override - protected StatusTemplate getStatusTemplate() - { - return new StatusTemplate("/fbml.status.ftl", WebScriptResponse.HTML_FORMAT); - } - -}