Blossomforth icon

GravatarUtil.java

Blossomforth | PRO | 04/16/15 01:24:52 AM UTC | 0 ⭐ | 410 👁️ | Never ⏰ | []
Java |

3.23 KB

|

None

|

0 👍

/

0 👎

package com.blossompone.utils;
 
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
public class GravatarUtil {
    
    //@formatter:off
    boolean reqExtension = false;
    public GravatarUtil setReturnExtension(boolean flag) { reqExtension = flag; return this; }
    
    Integer size = 80;
    public GravatarUtil setImgSize(Integer x) { size = x; return this; }
    
    DefaultOptions defOpts = null;
    public GravatarUtil setDefaultOption(DefaultOptions opts) { defOpts = opts; return this; }
    
    String defImg = null;
    @SuppressWarnings("deprecation")
    public GravatarUtil setDefaultImageURL(String url) { defImg = url == null ? null : URLEncoder.encode(url); return this; }
    
    boolean forceDefaultImg = false;
    public GravatarUtil setForceDefault(boolean flag) { forceDefaultImg = flag; return this; }
    
    Rating rating = Rating.G;
    public GravatarUtil setRating(Rating r) { rating = r; return this; }
    
    boolean secure = false;
    public GravatarUtil setSecure(boolean flag) { secure = flag; return this; }
    
    public String getUrl(String email) throws Exception{
        StringBuilder sb = new StringBuilder();
        sb.append((secure ? "https://secure" : "http://www") + ".gravatar.com/avatar/");
        
        email = new String(new MD5Util().md5Hex(email.toLowerCase().trim()));
        sb.append(email + (reqExtension ? ".jpg" : ""));
        
        boolean firstParam = true;
        
        if(size != 80) { sb.append((firstParam ? "?" : "&") + "s=" + size); firstParam = false; }
        if(defOpts != null) { sb.append((firstParam ? "?" : "&") + "d="+defOpts); firstParam = false; }
        else if(defImg!=null && !defImg.equals("")) { sb.append((firstParam ? "?" : "&") + "d=" + defImg); firstParam = false; }
        if(forceDefaultImg) { sb.append((firstParam ? "?" : "&") + "f=y"); firstParam = false; }
        if(rating != null && rating != Rating.G) { sb.append((firstParam ? "?" : "&") + "rating=" + rating); firstParam = false; }
        
        return sb.toString();
    }
    
    
    //@formatter:on
    public GravatarUtil() {}
    
    public static enum DefaultOptions {
        _404("404"), MYSTERY_MAN("mm"), IDENTICON("identicon"), MONSTERID("monsterid"), WAVATAR("wavatar"), RETRO("retro"), BLANK("blank");
        
        private final String st;
        
        DefaultOptions(String st) {
            this.st = st;
        }
        
        public String getString() {
            return st;
        }
        
        public String toString() {
            return getString();
        }
    }
    
    public static enum Rating {
        G("g"), PG("pg"), R("r"), X("x");
        
        private final String st;
        
        Rating(String st) {
            this.st = st;
        }
        
        public String getString() {
            return st;
        }
        
        public String toString() {
            return getString();
        }
    }
    
    public class MD5Util {
        public String hex(byte[] array) {
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < array.length; ++i) {
                sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));
            }
            return sb.toString();
        }
        
        public String md5Hex(String message) {
            try {
                MessageDigest md = MessageDigest.getInstance("MD5");
                return hex(md.digest(message.getBytes("CP1252")));
            } catch (NoSuchAlgorithmException e) {} catch (UnsupportedEncodingException e) {}
            return null;
        }
    }
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎