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
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
23
24
25
26
27
28 public String fromMail(final String email) {
29 return fromParameter(new Parameter(email).secure(false).defaultImage(DefaultImage.MysteryMan));
30 }
31
32
33
34
35
36
37
38
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 }