Gravatar HtmlHelper

För er som inte vet vad Gravatar är så är det en tjänst som sparar din “avatar” bild åt dig och en del bloggsystem har just Gravatar som tjänst för att visa “avatar” bilder.

Jag tänkte visa hur lätt det är att skapa en egen HtmlHelper funktion. Vi väljer att skapa ett nytt ASP.NET MVC 1 (2 Beta) projekt där vi sedan lägger till en mapp som heter “Helpers”. Där så skapar vi en ny klass som heter ”Html.cs” då HtmlHelper redan är en klass som vi kommer använda oss av så är det inge smart att döpa den till samma sak. Vi måste sätta dit “static” på våran klass, alltså “public static class Html”. Vi skapar lägger till denna kod snutt.

public static string Gravatar(this HtmlHelper helper, string email)
{
return GravatarImageHtml(gravatarUrl + getMd5Hash(email.ToLower()));
}

Detta är alltså våran HtmlHelper funktion, så när vi skriver <%= Html.Gravatar(“hej@dinadress.se”) %> kommer din Gravatar bild att renderas. GravatarImageHtml(url) är en public static string som retunerar en img html tag, där url:en är länken till Gravatar bilden som ska visas. “ToLower” betyder att vi gör alla bokstäver till små bokstäver, så ifall en e-postadress ser utsåhär: hej@DInAdResS.se så blir den hej@dinadress.se.

public static string GravatarImageHtml(string url)
{
return String.Format("<img src=\"{0}\" class=\"gravatar-image\" />", url);
}

Gravatar har md5hash som sitt filnamn till en bild, alltså hej@dinadress.se blir massor utav bokstäver och siffror. Därför behöver vi skapa en funktion som gör om e-postadressen till just detta.

 

public static string getMd5Hash(string input)
{
MD5 md5Hasher = MD5.Create();

byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

StringBuilder sb = new StringBuilder();

for (int i = 0; i < data.Length; i++)
{
sb.Append(data[i].ToString("x2"));
}

return sb.ToString();
}

För dom som vill läsa på om vad md5hash så finns det en bra länk här: http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5.aspx Vår “gravatarUrl” ser helt enkelt ut såhär.

private static string gravatarUrl = "http://www.gravatar.com/avatar.php?gravatar_id=";

Där “gravatar_id” är md5hash av våran e-postadress. Nu så går vi till våran View sida vi använda och lägger till “Import Namespace=”DittProjekt.Helpers”” sen kan vi bara skriva

<%= Html.Gravatar("hej@dinadress.se") %>

Nu så bör vi få ett resultat liknande detta.

gravatar_20100113

1 Comment

Comments have been disabled for this content.