r6916 - in dumbhippo/trunk/server/src/com/dumbhippo: server/impl services web/servlets
- From: commits mugshot org
- To: online-desktop-list gnome org
- Subject: r6916 - in dumbhippo/trunk/server/src/com/dumbhippo: server/impl services web/servlets
- Date: Wed, 14 Nov 2007 18:42:02 -0600 (CST)
Author: marinaz
Date: 2007-11-14 18:42:02 -0600 (Wed, 14 Nov 2007)
New Revision: 6916
Modified:
dumbhippo/trunk/server/src/com/dumbhippo/server/impl/FacebookTrackerBean.java
dumbhippo/trunk/server/src/com/dumbhippo/services/FacebookWebServices.java
dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookAddServlet.java
Log:
Display a list of five latest activities from the user's Mugshot on their Facebook profile when the user adds the Facebook application.
Modified: dumbhippo/trunk/server/src/com/dumbhippo/server/impl/FacebookTrackerBean.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/server/impl/FacebookTrackerBean.java 2007-11-14 22:52:26 UTC (rev 6915)
+++ dumbhippo/trunk/server/src/com/dumbhippo/server/impl/FacebookTrackerBean.java 2007-11-15 00:42:02 UTC (rev 6916)
@@ -19,6 +19,7 @@
import com.dumbhippo.GlobalSetup;
import com.dumbhippo.Pair;
+import com.dumbhippo.Site;
import com.dumbhippo.persistence.ExternalAccount;
import com.dumbhippo.persistence.ExternalAccountType;
import com.dumbhippo.persistence.FacebookAccount;
@@ -33,7 +34,11 @@
import com.dumbhippo.server.FacebookSystemException;
import com.dumbhippo.server.FacebookTracker;
import com.dumbhippo.server.Notifier;
+import com.dumbhippo.server.Pageable;
+import com.dumbhippo.server.Stacker;
+import com.dumbhippo.server.blocks.BlockView;
import com.dumbhippo.server.util.EJBUtil;
+import com.dumbhippo.server.views.AnonymousViewpoint;
import com.dumbhippo.server.views.UserViewpoint;
import com.dumbhippo.services.FacebookPhotoDataView;
import com.dumbhippo.services.FacebookWebServices;
@@ -52,18 +57,23 @@
// how long to wait on the Facebook API call
static protected final int REQUEST_TIMEOUT = 1000 * 12;
+ static private final int INITIAL_BLOCKS_PER_PAGE = 5;
+
@EJB
private ExternalAccountSystem externalAccounts;
@PersistenceContext(unitName = "dumbhippo")
private EntityManager em;
-
+
@EJB
private Configuration config;
@EJB
private Notifier notifier;
+ @EJB
+ private Stacker stacker;
+
@WebServiceCache
private FacebookPhotoDataCache taggedPhotosCache;
@@ -124,6 +134,9 @@
facebookAccount.setSessionKeyValid(true);
facebookAccount.setApplicationEnabled(applicationEnabled);
+ FacebookWebServices ws = new FacebookWebServices(REQUEST_TIMEOUT, config);
+ ws.setProfileFbml(facebookAccount, createFbmlForUser(viewpoint.getViewer()));
+
FacebookEvent loginStatusEvent = getLoginStatusEvent(facebookAccount, true);
if (loginStatusEvent != null)
notifier.onFacebookEvent(facebookAccount.getExternalAccount().getAccount().getOwner(), loginStatusEvent);
@@ -435,4 +448,34 @@
notifier.onFacebookEventCreated(event.getFacebookAccount().getExternalAccount().getAccount().getOwner(),
event);
}
+
+ private String createFbmlForUser(User user) {
+ StringBuilder fbmlSb = new StringBuilder("");
+ Pageable<BlockView> pageableMugshot = new Pageable<BlockView>("mugshot");
+ pageableMugshot.setPosition(0);
+ pageableMugshot.setInitialPerPage(INITIAL_BLOCKS_PER_PAGE);
+ pageableMugshot.setFlexibleResultCount(true);
+ stacker.pageStack(AnonymousViewpoint.getInstance(Site.NONE), user, pageableMugshot, true);
+ for (BlockView blockView : pageableMugshot.getResults()) {
+ fbmlSb.append(
+ "<table cellspacing='0' cellpadding='0'>" +
+ "<tbody><tr><td>" +
+ "<img src='http://mugshot.org" + blockView.getIcon() + "' style='width: 16; height: 16; border: none; margin-right: 3px;'/>" +
+ "</td><td>" +
+ blockView.getSummaryHeading() +
+ ": <a target='_blank' href='" + getAbsoluteUrl(blockView.getSummaryLink()) + "'>" + blockView.getSummaryLinkText() + "</a>" +
+ "</td></tr></table>");
+ }
+ fbmlSb.append("<a target='blank' style='font-size: 12px; font-weight: bold; margin-top: 10px;' href='" + getAbsoluteUrl("/person?who=" + user.getId().toString()) + "'>" +
+ "Visit My Mugshot to See More</a>");
+ return fbmlSb.toString();
+ }
+
+ private String getAbsoluteUrl(String link) {
+ if (link.startsWith("/")) {
+ String baseurl = config.getBaseUrlMugshot().toExternalForm();
+ return baseurl + link;
+ }
+ return link;
+ }
}
Modified: dumbhippo/trunk/server/src/com/dumbhippo/services/FacebookWebServices.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/services/FacebookWebServices.java 2007-11-14 22:52:26 UTC (rev 6915)
+++ dumbhippo/trunk/server/src/com/dumbhippo/services/FacebookWebServices.java 2007-11-15 00:42:02 UTC (rev 6916)
@@ -1,5 +1,6 @@
package com.dumbhippo.services;
+import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
@@ -23,6 +24,8 @@
import com.dumbhippo.server.FacebookSystemException;
import com.dumbhippo.server.HippoProperty;
import com.dumbhippo.server.Configuration.PropertyNotFoundException;
+import com.facebook.api.FacebookException;
+import com.facebook.api.FacebookXmlRestClient;
public class FacebookWebServices extends AbstractXmlRequest<FacebookSaxHandler> {
static private final Logger logger = GlobalSetup.getLogger(FacebookWebServices.class);
@@ -315,6 +318,18 @@
return modifiedAlbums;
}
+ public void setProfileFbml(FacebookAccount facebookAccount, String profileFbml) {
+ try {
+ FacebookXmlRestClient facebookClient = new FacebookXmlRestClient(apiKey, secret, facebookAccount.getSessionKey());
+ facebookClient.profile_setFBML(profileFbml, Integer.valueOf(facebookAccount.getFacebookUserId()));
+ } catch (FacebookException e) {
+ logger.error("FacebookException when setting profile FBML for {}: {}",
+ facebookAccount.getFacebookUserId(), e.toString());
+ } catch (IOException e) {
+ logger.error("IOException when converting {} to an integer", facebookAccount.getFacebookUserId());
+ }
+ }
+
private String generateFacebookRequest(List<String> params) {
params.add("api_key=" + apiKey);
params.add("call_id=" + System.currentTimeMillis());
Modified: dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookAddServlet.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookAddServlet.java 2007-11-14 22:52:26 UTC (rev 6915)
+++ dumbhippo/trunk/server/src/com/dumbhippo/web/servlets/FacebookAddServlet.java 2007-11-15 00:42:02 UTC (rev 6916)
@@ -30,6 +30,9 @@
static final long serialVersionUID = 1;
+ // how long to wait on the Facebook API call
+ static protected final int REQUEST_TIMEOUT = 1000 * 12;
+
private Configuration config;
@Override
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]