diff --git a/WordPressUtils/src/main/java/org/wordpress/android/util/GravatarUtils.java b/WordPressUtils/src/main/java/org/wordpress/android/util/GravatarUtils.java index 3d8890802f5a..7ce327072659 100644 --- a/WordPressUtils/src/main/java/org/wordpress/android/util/GravatarUtils.java +++ b/WordPressUtils/src/main/java/org/wordpress/android/util/GravatarUtils.java @@ -1,22 +1,84 @@ package org.wordpress.android.util; +import android.text.TextUtils; + +/** + * see https://en.gravatar.com/site/implement/images/ + */ public class GravatarUtils { + + // by default tell gravatar to respond to non-existent images with a 404 - this means + // it's up to the caller to catch the 404 and provide a suitable default image + private static final DefaultImage DEFAULT_GRAVATAR = DefaultImage.STATUS_404; + + public static enum DefaultImage { + MYSTERY_MAN, + STATUS_404, + IDENTICON, + MONSTER, + WAVATAR, + RETRO, + BLANK; + + @Override + public String toString() { + switch (this) { + case MYSTERY_MAN: + return "mm"; + case STATUS_404: + return "404"; + case IDENTICON: + return "identicon"; + case MONSTER: + return "monsterid"; + case WAVATAR: + return "wavatar"; + case RETRO: + return "retro"; + default: + return "blank"; + } + } + } + /* - * see https://en.gravatar.com/site/implement/images/ - */ + * gravatars often contain the ?s= parameter which determines their size - detect this and + * replace it with a new ?s= parameter which requests the avatar at the exact size needed + */ + public static String fixGravatarUrl(final String imageUrl, int avatarSz) { + return fixGravatarUrl(imageUrl, avatarSz, DEFAULT_GRAVATAR); + } + public static String fixGravatarUrl(final String imageUrl, int avatarSz, DefaultImage defaultImage) { + if (TextUtils.isEmpty(imageUrl)) { + return ""; + } + + // if this isn't a gravatar image, return as resized photon image url + if (!imageUrl.contains("gravatar.com")) { + return PhotonUtils.getPhotonImageUrl(imageUrl, avatarSz, avatarSz); + } + + // remove all other params, then add query string for size and default image + return UrlUtils.removeQuery(imageUrl) + "?s=" + avatarSz + "&d=" + defaultImage.toString(); + } + public static String gravatarFromEmail(final String email, int size) { + return gravatarFromEmail(email, size, DEFAULT_GRAVATAR); + } + public static String gravatarFromEmail(final String email, int size, DefaultImage defaultImage) { return "http://gravatar.com/avatar/" + StringUtils.getMd5Hash(StringUtils.notNullStr(email)) - + "?d=mm&size=" + Integer.toString(size); + + "?d=" + defaultImage.toString() + + "&size=" + Integer.toString(size); } - /* - * important: the 404 default means the request will 404 if there is no blavatar - * for the passed site - so the caller needs to trap the 404 to provide a default - */ public static String blavatarFromUrl(final String url, int size) { + return blavatarFromUrl(url, size, DEFAULT_GRAVATAR); + } + public static String blavatarFromUrl(final String url, int size, DefaultImage defaultImage) { return "http://gravatar.com/blavatar/" + StringUtils.getMd5Hash(UrlUtils.getDomainFromUrl(url)) - + "?d=404&size=" + Integer.toString(size); + + "?d=" + defaultImage.toString() + + "&size=" + Integer.toString(size); } } diff --git a/WordPressUtils/src/main/java/org/wordpress/android/util/PhotonUtils.java b/WordPressUtils/src/main/java/org/wordpress/android/util/PhotonUtils.java index fec275791741..aa02d4c9deea 100644 --- a/WordPressUtils/src/main/java/org/wordpress/android/util/PhotonUtils.java +++ b/WordPressUtils/src/main/java/org/wordpress/android/util/PhotonUtils.java @@ -12,23 +12,6 @@ private PhotonUtils() { throw new AssertionError(); } - /* - * gravatars often contain the ?s= parameter which determines their size - detect this and - * replace it with a new ?s= parameter which requests the avatar at the exact size needed - */ - public static String fixAvatar(final String imageUrl, int avatarSz) { - if (TextUtils.isEmpty(imageUrl)) - return ""; - - // if this isn't a gravatar image, return as resized photon image url - if (!imageUrl.contains("gravatar.com")) { - return getPhotonImageUrl(imageUrl, avatarSz, avatarSz); - } - - // remove all other params, then add query string for size and "mystery man" default - return UrlUtils.removeQuery(imageUrl) + "?s=" + avatarSz + "&d=mm"; - } - /* * returns true if the passed url is an obvious "mshots" url */