View Javadoc

1   package org.jcr_blog.commons.gravatar;
2   
3   import com.google.common.base.Joiner;
4   import com.google.common.hash.Hashing;
5   import java.util.ArrayList;
6   import java.util.List;
7   import javax.enterprise.context.ApplicationScoped;
8   import javax.inject.Named;
9   
10  /**
11   *
12   * @author Sebastian Prehn <sebastian.prehn@planetswebdesign.de>
13   */
14  @Named
15  @ApplicationScoped
16  public class Gravatar {
17  
18      private static final String GRAVATAR_URL_HTTP = "http://www.gravatar.com/avatar/";
19      private static final String GRAVATAR_URL_HTTPS = "https://secure.gravatar.com/avatar/";
20      
21      /**
22       * Creates the Gravatar URL for the given email address.
23       * Uses gravatar defaults: size (80), default rating (general audience).
24       * Default Icon is mystery-man.
25       * @param email the email address of the gravatar user
26       * @return the gravatar url
27       */
28      public String fromMail(final String email) {
29          return fromParameter(new Parameter(email).secure(false).defaultImage(DefaultImage.MysteryMan));
30      }
31  
32      /**
33       * Creates the Gravatar URL for the given email address.
34       * Uses gravatar defaults: size (80), default rating (general audience).
35       * Default Icon is mystery-man.
36       * @param email the email address of the gravatar user
37       * @param secure use (https) or none secure (http) connection
38       * @return the gravatar url
39       */
40      public String fromMail(final String email, final boolean secure) {
41          return fromParameter(new Parameter(email).secure(secure).defaultImage(DefaultImage.MysteryMan));
42      }
43  
44      public String fromParameter(final Parameter param) {
45          if (param == null) {
46              throw new IllegalArgumentException("param must not be null");
47          }
48          StringBuilder result = new StringBuilder();
49          result.append(param.isSecure() ? GRAVATAR_URL_HTTPS : GRAVATAR_URL_HTTP);
50          result.append(Hashing.md5().hashBytes(param.getEmail().toLowerCase().trim().getBytes()).toString());
51          result.append(".jpg");
52          
53          final List<String> params = new ArrayList<String>();
54  
55          if (param.getSize() != null) {
56              params.add("s=" + param.getSize());
57          }
58          if (param.getRating() != null) {
59              params.add("r=" + param.getRating().getCode());
60          }
61          if (param.getDefaultImage() != null) {
62              params.add("d=" + param.getDefaultImage().getCode());
63          }
64          if(param.isForceDefault()) {
65              params.add("f=y");
66          }
67          if (!params.isEmpty()) {
68              result.append("?");
69              result.append(Joiner.on("&").join(params.iterator()));
70          }
71  
72          return result.toString();
73      }
74  }