From cb285cbfddfc0b633d6b8cdb4dc0d2bd2b8b51ef Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 05 Jan 2012 17:34:05 -0500 Subject: [PATCH] Fixed bug in receive hook for repositories in subfolders --- src/com/gitblit/utils/ActivityUtils.java | 68 +++++++++++++++++++++++++++++++++ 1 files changed, 67 insertions(+), 1 deletions(-) diff --git a/src/com/gitblit/utils/ActivityUtils.java b/src/com/gitblit/utils/ActivityUtils.java index 8c8a7ec..d6afd93 100644 --- a/src/com/gitblit/utils/ActivityUtils.java +++ b/src/com/gitblit/utils/ActivityUtils.java @@ -15,7 +15,11 @@ */ package com.gitblit.utils; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.lang.reflect.Type; import java.text.DateFormat; +import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; @@ -33,8 +37,10 @@ import com.gitblit.GitBlit; import com.gitblit.models.Activity; import com.gitblit.models.Activity.RepositoryCommit; +import com.gitblit.models.GravatarProfile; import com.gitblit.models.RefModel; import com.gitblit.models.RepositoryModel; +import com.google.gson.reflect.TypeToken; /** * Utility class for building activity information from repositories. @@ -79,7 +85,7 @@ // determine commit branch String branch = objectId; - if (StringUtils.isEmpty(branch)) { + if (StringUtils.isEmpty(branch) && !commits.isEmpty()) { List<RefModel> headRefs = allRefs.get(commits.get(0).getId()); List<String> localBranches = new ArrayList<String>(); for (RefModel ref : headRefs) { @@ -127,4 +133,64 @@ } return recentActivity; } + + /** + * Returns the Gravatar profile, if available, for the specified email + * address. + * + * @param emailaddress + * @return a Gravatar Profile + * @throws IOException + */ + public static GravatarProfile getGravatarProfileFromAddress(String emailaddress) + throws IOException { + return getGravatarProfile(StringUtils.getMD5(emailaddress.toLowerCase())); + } + + /** + * Creates a Gravatar thumbnail url from the specified email address. + * + * @param email + * address to query Gravatar + * @param width + * size of thumbnail. if width <= 0, the defalt of 60 is used. + * @return + */ + public static String getGravatarThumbnailUrl(String email, int width) { + if (width <= 0) { + width = 60; + } + String emailHash = StringUtils.getMD5(email); + String url = MessageFormat.format( + "http://www.gravatar.com/avatar/{0}?s={1,number,0}&d=identicon", emailHash, width); + return url; + } + + /** + * Returns the Gravatar profile, if available, for the specified hashcode. + * address. + * + * @param hash + * the hash of the email address + * @return a Gravatar Profile + * @throws IOException + */ + public static GravatarProfile getGravatarProfile(String hash) throws IOException { + String url = MessageFormat.format("http://www.gravatar.com/{0}.json", hash); + // Gravatar has a complex json structure + Type profileType = new TypeToken<Map<String, List<GravatarProfile>>>() { + }.getType(); + Map<String, List<GravatarProfile>> profiles = null; + try { + profiles = JsonUtils.retrieveJson(url, profileType); + } catch (FileNotFoundException e) { + } + if (profiles == null || profiles.size() == 0) { + return null; + } + // due to the complex json structure we need to pull out the profile + // from a list 2 levels deep + GravatarProfile profile = profiles.values().iterator().next().get(0); + return profile; + } } -- Gitblit v1.9.1