NATD
7/11/2014 - 12:25 AM

Get a link for gravatar url, provide email

Get a link for gravatar url, provide email

package io.systemobject.utils;

import io.systemobject.utils.cryptography.Hash;
import io.systemobject.utils.cryptography.Hash.HashType;

// Gravatar.getAvatar("example@gmail.com", 100, GravatarType.MM)
public final class Gravatar {
	
	/**
	 * Default avatar size
	 */
	private static final int defaultGravatarSize = 100;
	/**
	 * Place Holder for gravatar URL - needs for {@link String#format()}
	 */
	private static final String gravatarUrlPlaceholder = "http://www.gravatar.com/avatar/%s?s=%d&d=%s";
	
	/**
	 * 
	 * @param email of user
	 * @param size of avatar
	 * @param gravatarType choice default avatar type
	 * @return link on user avatar as Strnig
	 */
	public static final String getAvatar(String email, int size, GravatarType gravatarType){
		String gravatarID = Hash.toHash(email.toLowerCase(), HashType.MD5);
		return String.format(gravatarUrlPlaceholder, gravatarID, size, gravatarType);
	}
	
	/**
	 * 
	 * @param email of user
	 * @return link on user avatar as Strnig
	 */
	public static final String getAvatar(String email){
		return getAvatar(email, defaultGravatarSize, GravatarType.MM);
	}
	
	/**
	 * 
	 * @param email of user
	 * @param size of avatar
	 * @return link on user avatar as Strnig
	 */
	public static final String getAvatar(String email, int size){
		return getAvatar(email, size, GravatarType.MM);
	}
	
	/**
	 * 
	 * @param email of user
	 * @param gravatarType choice default avatar type
	 * @return link on user avatar as Strnig
	 */
	public static final String getAvatar(String email, GravatarType gravatarType){
		return getAvatar(email, defaultGravatarSize, gravatarType);
	}
	
	public enum GravatarType {
		MM("mm"), IDENTICON("identicon"), MONSTERID("monsterid"), WAVATAR("wavatar"), RETRO("retro"), BLANK("blank");
		
		private String type;
		
		GravatarType(String type) {
			this.type = type;
		}
		
		@Override
		public String toString() {
			return this.type;
		}
	}
}