Gravatars and Liftweb.
Liftweb and Gravatars together at last.
Here’s the snippet:
package net.liftweb.example.snippet
import net.liftweb.example.model._
import scala.xml.{NodeSeq, Text, Group, Node, Elem}
import net.liftweb.http._
import net.liftweb.http.S
import net.liftweb.mapper._
import net.liftweb.http.S._
import net.liftweb.util.Helpers._
import net.liftweb.util._
import java.util.Locale
import net.liftweb.sitemap._
import net.liftweb.sitemap.Loc._
import java.security._
// gravatar_id - MD5 sum of your email address
// size - image size
// rating - rating of the image, let's start with "G" which is also the default
class Gravatar {
val theUser: User = User.currentUser.openOr(new User)
private def getMD5(s: String): String = {
val m = MessageDigest.getInstance("MD5")
m.update(s.getBytes(),0,s.length())
BigInt(1,m.digest()).toString(16)
}
def getGravatar(xhtml: NodeSeq): NodeSeq = {
var src = "http://www.gravatar.com/avatar.php?gravatar_id=" + getMD5(S.attr("e").openOr(theUser.email))
src = src + "&size=" + S.attr("s").openOr("42")
src = src + "&rating=" + S.attr("r").openOr("G")
<img src={src}/>
}
And here’s how to use it in your templates:
<lift :Gravatar.getGravatar e="email address" s="80" r="G" />
