Source code for tahrir.utils.avatar

import urllib.parse
from hashlib import sha256

from flask import current_app

from tahrir.cache import cache


libravatar = None
try:
    import libravatar
except ImportError:
    pass


[docs] @cache.cache_on_arguments() def get_avatar(email: str, size): default = current_app.config["TAHRIR_DEFAULT_AVATAR"] query = { "s": size, "d": default, } if size == "responsive": # Make it big so we can downscale it as we please query["s"] = 312 query = urllib.parse.urlencode(query) # Use md5 for emails, and sha256 for openids. # We're really using openids, so... # hash = md5(email).hexdigest() hash = sha256(email.encode("utf-8")).hexdigest() # TODO This next line is temporary and can be removed. We do # libravatar ourselves here by hand to avoid pyDNS issues on epel6. # Once those are resolved we can use pylibravatar again. return f"https://seccdn.libravatar.org/avatar/{hash}?{query}" gravatar_url = f"https://secure.gravatar.com/avatar/{hash}?{query}" if libravatar: return libravatar.libravatar_url( email=email, size=size, default=gravatar_url, ) else: return gravatar_url
[docs] def as_avatar(value, size): return get_avatar(value, size=size)