Четверг, 16.05.2024, 02:47
Приветствую Вас Гость | Регистрация | Вход

Мой сайт

Меню сайта
Категории каталога
Мои статьи [2]
.Net [2]
Все что касается программирования на платформе .Net
Форма входа
Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Каталог статей

Главная » Статьи » .Net

Использование сервиса Gravatar в web-приложении

Использование сервиса Gravatar в web-приложении

Мы живем в эпоху победившего вебДваНоль и ни для кого не секрет, что социальные сервисы правят если уж не Миром, то интернетом точно. Не только пользователи, но и разработчики не могут игнорировать основные тенденции - и вот, хочется написать о набирающем все большую и большую популярность сервисе Gravatar и использованию его в приложениях.

Что это такое

Gravatar - это сервис для предоставления глобально уникальных аватаров привязанных к адресу электронной почты пользователя. Попросту говоря, вы регистрируетесь на gravatar, указываете адрес своей электронной почты, закачиваете картинки. После этого все сервисы, на которых вы оставляете свой имейл могут запрашивать аватарки с gravatar.

Зачем это нужно

Зачем это нужно пользователю конечно понятно. Попробую рассказать зачем это нужно программисту. Допустим разрабатывается веб-сайт. Вне зависимости от тематики он конечно же будет содержать социальные элементы, без этого сейчас никуда. А значит будет возможность регистрации пользователей и каждый пользователь будет иметь свой профиль. Теперь вопрос: как организовать хранение аватаров пользователей в базе? Аспектов у этой задачи много: как хранить картинки - в базе или как файлы на диске? В каком размере хранить картинки если в приложении нужно использовать несколько вариантов? Какое изображение показывать пока пользователь еще не выбрал аватар. Можно конечно решить все эти вопросы и изобрести очередной велосипед. А можно вместо этого воспользоваться сервисом gravatar и сосредоточиться на реализации основной бизнес-логики.

Как это работает

Итак, у нас есть e-mail пользователя и нужно “превратить” его в ссылку на аватар. Url аватара строится в несколько этапов:

  1. Берем основной урл сервиса gravatar http://www.gravatar.com/avatar
  2. Далее дополняем строкой хэша e-mail адреса. Хэш строится по алгоритму MD5. Получается что-типа http://www.gravatar.com/avatar/b7ac7166dba99523395197f9918121f0. Уже эта ссылка работоспособна и ее можно использовать в качестве атрибута src тега img:
    Пример аватара

    Но чтобы сделать аватар более привлекательным лучше добавить еще несколько параметров

  3. Добавляем параметр size (или для краткости просто s) для определения размера. Можно задать значение от 1 до 512 пикселей. Если параметр size/s не задан, то будет показана картинка размером 80 пикселей. Вот как выглядит аватар с указанием размера 50px:
    Пример аватара с указанием размера
  4. Добавляем параметр rating (или r). В сервисе gravatar используется разделение картинок по рейтингу (типа голивудской категории “жесткости” фильма). Значения параметра рейтинга по возрастанию взрослости/жесткости: g, pg, r, x. И пример.
    Пример аватара с указанием размера и рейтинга
  5. Добавляем параметр d (default) для определения картинки по умолчанию. “Картинка по умолчанию” - это то, что отображается в качестве аватара если пользователь не зарегестрирован в сервисе. Если параметр не указан, то это буква G синем фоне:
    Пример аватара с указанием размера и рейтинга

    Задавая определенные значения параметра d можно получить разные изображения:

    d=identicon d=monsterid d=wavatar
    Пример аватара с указанием размера и рейтинга Пример аватара с указанием размера и рейтинга Пример аватара с указанием размера и рейтинга

Пример кода на C#

Ну и в заключение, метод, возвращающий ссылку на аватар по адресу электронной почты:

public string GetAvatarUrl(string email, int size)
{
    const string GravatarUrlFormat = "http://www.gravatar.com/avatar/{0}?r=G&s={1}&d=wavatar";
    var result = new StringBuilder();
    if (!string.IsNullOrEmpty(email))
    {
        byte[] hash;
        using (MD5 md5 = MD5.Create())
        {
            byte[] data = Encoding.Default.GetBytes(email.ToLowerInvariant());
            hash = md5.ComputeHash(data);
        }
        for (int i = 0; i < hash.Length; i++)
        {
            result.Append(hash[i].ToString("x2", CultureInfo.InvariantCulture));
        }
    }
    return string.Format(GravatarUrlFormat, result, size);
}
Категория: .Net | Добавил: nuclear (22.06.2009)
Просмотров: 534 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *: