All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.liftmodules.extras.Gravatar.scala Maven / Gradle / Ivy

The newest version!
package net.liftmodules.extras

import scala.xml.NodeSeq

import java.security.{MessageDigest, NoSuchAlgorithmException}
import java.io.{UnsupportedEncodingException}

import net.liftweb._
import common._
import http.Factory
import util.Helpers

object Gravatar extends Factory with Loggable {
  /**
    * config
    */
  val defaultRating = new FactoryMaker[String]("G") {}
  val defaultSize = new FactoryMaker[Int](42) {}
  val defaultImage = new FactoryMaker[String]("") {}

  /**
    * @param email The email address of the recipient
    * @param size The square size of the output gravatar
    * @param rating The rating of the Gravater, the default is G
    * @param default The default image to return if none exists for the given email
   */
  def imageUrl(
    email: String,
    size: Int = defaultSize.vend,
    rating: String = defaultRating.vend,
    default: String = defaultImage.vend
  ): String = {
    val url = "http://www.gravatar.com/avatar/%s?s=%s&r=%s".format(getMD5(email), size.toString, rating)
    if (default.length > 0) "%s&d=%s".format(url, Helpers.urlEncode(default))
    else url
  }

  def imgTag(
    email: String,
    size: Int = defaultSize.vend,
    rating: String = defaultRating.vend,
    default: String = defaultImage.vend
  ): NodeSeq = {
    
  }

  def signupUrl(email: String): String =
    "http://en.gravatar.com/site/signup/%s".format(Helpers.urlEncode(email))

  private def getMD5(message: String): String = {
    val md: MessageDigest = MessageDigest.getInstance("MD5")
    val bytes = message.getBytes("CP1252")

    try {
      BigInt(1,md.digest(bytes)).toString(16)
    } catch {
      case a: NoSuchAlgorithmException => logger.error("[Gravatar] No Algorithm.", a); ""
      case x: UnsupportedEncodingException => logger.warn("[Gravatar] Unsupported Encoding.", x); ""
      case e: Exception => logger.warn("[Gravatar] Unknown error.", e); ""
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy