aboutsummaryrefslogtreecommitdiff
path: root/libs/utils/WordPressUtils/src/main/java/org/wordpress/android/util/GravatarUtils.java
blob: 1fbfb3e560254bd6516cd36cad02d57307f1d712 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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";
            }
        }
    }

    /*
    * 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=" + defaultImage.toString()
              + "&size=" + Integer.toString(size);
    }

    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.getHost(url))
                + "?d=" + defaultImage.toString()
                + "&size=" + Integer.toString(size);
    }
}